Как преобразовать значения в ToUpper из значений в Get-WMIObject Win32_Printer
Попытка написать сценарий для удаления всех сетевых принтеров из системы, но оставить другие принтеры / факсы в покое.
$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 ответа
.toUpper()
это метод для строк. Так что конвертируйте этот вывод в строку, используя out-string
:
($printer.SystemName|out-string).toUpper()
Призвание ToString()
на $Printer
не преобразует пользовательский объект (PSCustomObject) в строку, это ваша основная проблема. Это должно работать:
$Printer.ServerName.ToUpper()
Но если вам не нужно имя общего ресурса в пользовательском объекте, просто получите имя сервера в виде строки:
$serverName = Get-WMIObject Win32_Printer | Select-Object -ExpandProperty ServerName
Кроме того, ваше сравнение должно использовать имя сервера, а не $Printer
объект:
if ($Printer.ServerName -like "*HBMN-VBRANCH*")