Windows 删除包含“的打印机”;例如;以他们的名义

Windows 删除包含“的打印机”;例如;以他们的名义,windows,powershell,Windows,Powershell,我试图构建一个PS脚本,删除所有名称中包含“示例”的NetworkPrinter 到目前为止,我有以下代码: Get–WMIObject Win32_Printer | where{$_.Network -eq ‘true‘} | foreach{$_.delete()} 但这会删除所有网络打印机。因为您使用的是Windows 7,所以仍然可以使用WMI删除打印机。否则,其他替代方法是使用.Net类System.Printing或System.Drawing.Printing中的方法。但看起来

我试图构建一个PS脚本,删除所有名称中包含“示例”的NetworkPrinter

到目前为止,我有以下代码:

Get–WMIObject Win32_Printer | where{$_.Network -eq ‘true‘} | foreach{$_.delete()}

但这会删除所有网络打印机。

因为您使用的是Windows 7,所以仍然可以使用WMI删除打印机。否则,其他替代方法是使用.Net类
System.Printing
System.Drawing.Printing
中的方法。但看起来你只需要在where块中添加一个过滤器

# First check with -WhatIf, then remove -WhatIf when you are sure the command is targetting the right printer
Get-Printer | ?{ $_.Name.Contains("EXAMPLE") -and $_.Type -eq "Connection" } | Remove-Printer -Whatif
Get–WMIObject Win32_Printer | where{($_.Network -eq 'true') -and ($_.Name -like "*EXAMPLE*") } | foreach{$_.delete()}

由于您使用的是Windows 7,因此仍然可以使用WMI删除打印机。否则,其他替代方法是使用.Net类
System.Printing
System.Drawing.Printing
中的方法。但看起来你只需要在where块中添加一个过滤器

Get–WMIObject Win32_Printer | where{($_.Network -eq 'true') -and ($_.Name -like "*EXAMPLE*") } | foreach{$_.delete()}

我收到以下错误:+Get Printer |?{$\.Name.Contains(“示例”)-和$\.Type-eq“Connection”}R…+~~~~~~~~~+CategoryInfo:ObjectNotFound:(获取打印机:字符串)[],CommandNotFoundException+FullyQualifiedErrorId:CommandNotFoundException我的操作系统是win7btw@drifter213Windows 7没有
获取打印机
删除打印机
。@BenH Contains在这里可以吗?因为它是静态字符串方法,而不是
-contains
@Matt,所以您是正确的。我得把咖啡喝完。.Net字符串方法包含在这种情况下可以正常工作。如果您在Windows 7上,则可以使用wmi(如您的示例中所示),逻辑将是相同的。我收到以下错误:+Get Printer |?{$.Name.Contains(“示例”)-和$\ Type-eq“Connection”}R…+~~~~~~~~+CategoryInfo:ObjectNotFound:(获取打印机:字符串)[],CommandNotFoundException+FullyQualifiedErrorId:CommandNotFoundException我的操作系统是win7btw@drifter213Windows 7没有
获取打印机
删除打印机
。@BenH Contains在这里可以吗?因为它是静态字符串方法,而不是
-contains
@Matt,所以您是正确的。我得把咖啡喝完。.Net字符串方法包含在这种情况下可以正常工作。如果您使用的是Windows 7,则可以改用wmi(如示例中所示),逻辑将是相同的。不管怎样,它可以正常工作。。。我删除了我的坏消息。非常感谢。没关系,它是有效的。。。我删除了我的坏消息。非常感谢。