@nfire

Как передать в Get-Counter значение с символами «\\»?

Пишу скрипт учета напечатанных страниц:
$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, но тогда не видно, что это сетевой принтер.
Собственно вопрос - как сделать обработку для сетевых принтеров с названиями на \\?
  • Вопрос задан
  • 224 просмотра
Пригласить эксперта
Ответы на вопрос 1
@BeatHazard
Я могу ошибаться, но в системе отсутствуют счетчики для принтеров подключенных не локально, а по сети. Убедиться в этом вы можете открыв Performance monitor и посмотрев список устройств в категории Очередь печати.
Я думаю выгружать информацию о количестве распечатанных страниц вам нужно на ПК/сервере с которого расшарен данный принтер.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы