Как преобразовать значения в ToUpper из значений в Get-WMIObject Win32_Printer - PullRequest
0 голосов
/ 21 февраля 2019

Попытка написать скрипт для удаления всех сетевых принтеров из системы, но оставить другие принтеры / факсы в покое.

$Printer = Get-WMIObject Win32_Printer | Select-Object ServerName, ShareName 

, чтобы получить значения для $Printer, но не может изменить его на прописные,@{ServerName=\\HBMN-Vbranch; ShareName=HBMN-P5} возвращается, но я пытаюсь сделать if ($Printer -Like "*\\HBMN-VBRANCH*"), и он никогда не находит строчные или смешанные буквы.

Если я пытаюсь сделать $($Printer.ToString().ToUpper()), значение не возвращается.Если я попытаюсь $Printer.ToUpper() метод не найден.

Ответы [ 2 ]

0 голосов
/ 21 февраля 2019

При вызове ToString() на $Printer пользовательский объект (PSCustomObject) не преобразуется в строку, это ваша основная проблема.Это должно работать:

$Printer.ServerName.ToUpper()

Но если вам не нужно имя общего ресурса в пользовательском объекте, просто получите имя сервера в виде строки:

$serverName = Get-WMIObject Win32_Printer | Select-Object -ExpandProperty ServerName

Кроме того, ваше сравнение должноиспользуйте имя сервера, а не объект $Printer:

if ($Printer.ServerName -like "*HBMN-VBRANCH*") 
0 голосов
/ 21 февраля 2019

.toUpper() - это метод для строк.Поэтому преобразуйте этот вывод в строку, используя out-string:

($printer.SystemName|out-string).toUpper()
...