Данная памятка посвящена печати и обзору принтеров находящихся как локально , так и в сети.Приступим:
PS C:Windowssystem32> Get-WmiObject -Class win32_Printer -computername localhost
Location :
Name : Microsoft XPS Document Writer
PrinterState : 0
PrinterStatus : 3
ShareName :
SystemName : MKOZLOV
Location :
Name : Microsoft Office Live Meeting 2007 Document Writer
PrinterState : 0
PrinterStatus : 3
ShareName :
SystemName : MKOZLOV
Location :
Name : Fax
PrinterState : 0
PrinterStatus : 3
ShareName :
SystemName : MKOZLOV
Location :
Name : \printHP LaserJet M5035 MFP PCL 6
PrinterState : 131072
PrinterStatus : 1
ShareName : HP LaserJet M5035 MFP PCL 6
SystemName : \print
Вывести список легко , выведем у нескольких компьютеров:
PS C:Windowssystem32> Get-WmiObject -Class win32_Printer -computername localhost, print | Format-Table systemname, name
systemname name
———- —-
MKOZLOV Microsoft XPS Document Writer
MKOZLOV Microsoft Office Live Meeting 2007 Document Writer
MKOZLOV Fax
print Xerox Phaser 3300MFP PCL 6
print Xerox
print Microsoft XPS Document Writer
print HP LaserJet M5035 MFP PCL 6
print HP 5035 MFP
Другой способ(используем цикл foreach который перебирает переменную $eachcomp в массиве $computers):
PS C:Windowssystem32> $computers = «localhost», «print»
PS C:Windowssystem32> foreach($eachcomp in $computers) {
>> Write-Host «Printers in $eachcomp»
>> Get-WmiObject -Class win32_printer -computername $eachcomp | Format-Table name, sharename
>> }
>>
Printers in localhost
name sharename
—- ———
Microsoft XPS Document Writer
Microsoft Office Live Meeting 2007 Document Writer
Fax
\printHP LaserJet M5035 MFP PCL 6 HP LaserJet M5035 MFP PCL 6
Printers in print
name sharename
—- ———
Xerox Phaser 3300MFP PCL 6 Xerox Phaser 3300MFP PCL 6
Xerox Xerox Phaser 3300MFP PCL 6
Microsoft XPS Document Writer
HP LaserJet M5035 MFP PCL 6 HP LaserJet M5035 MFP PCL 6
HP 5035 MFP HP LaserJet M5035 MFP PCL 6 (store2)
Вывод принтеров с портами вызывается так:
PS C:Windowssystem32> Get-WmiObject -Class Win32_TCPIPPrinterPort -computername store2
А теперь усложним задачу.Например у нас есть несколько сетевых принтеров расшаренных на сервере , пришел новый сотрудник , необходимо добавить все принтера быстро — одним махом:
PS C:Windowssystem32> $ShPr = Get-WmiObject win32_printer -Filter «Shared = $true» -ComputerName Имя_Сервера
PS C:Windowssystem32> $ShNa = $ShPr | Select-Object -Property ShareName
PS C:Windowssystem32> $ShNa
Xerox Phaser 3300MFP PCL 6
HP LaserJet M5035 mfp
Epson AL-C4000
А теперь подключаемся:
PS C:Windowssystem32> foreach ($printer in $ShNa)
>> {
>> $Path = «\» + «Имя_Сервера» + «» + $printer
>> ([wmiclass]«Win32_Printer»).AddPrinterConnection($Path)
>> }
>>
__GENUS : 2
__CLASS : __PARAMETERS
__SUPERCLASS :
__DYNASTY : __PARAMETERS
__RELPATH :
__PROPERTY_COUNT : 1
__DERIVATION : {}
__SERVER :
__NAMESPACE :
__PATH :
ReturnValue : 0
__GENUS : 2
__CLASS : __PARAMETERS
__SUPERCLASS :
__DYNASTY : __PARAMETERS
__RELPATH :
__PROPERTY_COUNT : 1
__DERIVATION : {}
__SERVER :
__NAMESPACE :
__PATH :
ReturnValue : 0
__GENUS : 2
__CLASS : __PARAMETERS
__SUPERCLASS :
__DYNASTY : __PARAMETERS
__RELPATH :
__PROPERTY_COUNT : 1
__DERIVATION : {}
__SERVER :
__NAMESPACE :
__PATH :
ReturnValue : 0
Вуаля , принтеры добавлены!