Пишу скрипт учета напечатанных страниц:
$date = get-date -format dd-MM-yyyy
$printername = Get-Printer | select -expand Name
foreach ($printer in $printername) {
$number = Get-Counter "\Очередь печати($printer)\Всего напечатано страниц" | Foreach-Object {$_.CounterSamples[0].CookedValue}
Convertto-html -title "Статистика печати" -PreContent "Количество распечатанных листов на $printer за $date : <b>$number</b>" >> e:\counter_print_pages.html}
Все работает хорошо, пока не доходит до сетевого принтера:
Get-Counter : Недопустимый путь к счетчику производительности \Очередь печати(\\192.168.1.13\HP LaserJet P2035)\Всего напечатано страниц.
E:\pagecount.ps1:4 знак:11
+ $number = Get-Counter "\Очередь печати($printer)\Всего напечатано стр ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidResult: (:) [Get-Counter], Exception
+ FullyQualifiedErrorId : CounterPathIsInvalid,Microsoft.PowerShell.Commands.GetCounterCommand
Причем вывод в файл работает без ошибок (кроме числа страниц, естественно):
Количество распечатанных листов на Fax за 19-11-2019 : 0
Количество распечатанных листов на Adobe PDF за 19-11-2019 : 0
Количество распечатанных листов на \\192.168.1.13\HP LaserJet P2035 за 19-11-2019 :
Можно конечно брать не Name, а DriverName, но тогда не видно, что это сетевой принтер.
Собственно вопрос - как сделать обработку для сетевых принтеров с названиями на \\?