尝试编写脚本以从系统中删除所有网络打印机,但不理会其他打印机/传真。
$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()
方法。
答案 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