如何将值从Get-WMIObject Win32_Printer中的值转换为ToUpper

时间:2019-02-21 19:24:42

标签: powershell toupper

尝试编写脚本以从系统中删除所有网络打印机,但不理会其他打印机/传真。

$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 :(得分:1)

ToString()上调用$Printer不会将自定义对象(PSCustomObject)转换为字符串,这是您的基本问题。这应该起作用:

$Printer.ServerName.ToUpper()

但是,如果您不需要自定义对象中的共享名,只需将服务器名作为字符串即可获取:

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

此外,您的比较应该使用服务器名称,而不是$Printer对象:

if ($Printer.ServerName -like "*HBMN-VBRANCH*") 

答案 1 :(得分:0)

out-string是用于字符串的方法。因此,使用($printer.SystemName|out-string).toUpper() 将输出转换为字符串:

.bat