包含带斜杠的变量的Powershell WMI查询

时间:2014-02-13 22:36:06

标签: powershell escaping wmi-query

我目前正在尝试编写一个PowerShell脚本,根据文件中的值设置用户默认打印机。

如果文件中的值是联网打印机\ share \ printername,则脚本将失败。我假设这是由于斜杠“\”。应如何在powershell中处理这个问题。我正在尝试确定是否需要添加一些特殊字符来逃避斜杠。

##Read Default Printer value from file and set as new Default printer.
$path="\\share\profiles$\$env:username.V2\DefaultPrinter.txt"
$DefaultPrinterName=Get-Content $path
$DefaultPrinter = Get-Wmiobject -Query "Select * FROM WIN32_Printer WHERE Name like '$DefaultPrinterName'"
$DefaultPrinter.SetDefaultPrinter()

2 个答案:

答案 0 :(得分:1)

您只需使用双\

示例:

gwmi -Query "Select * from Win32_Printer where name like '\\\\192.168.2.49\\HP Color LaserJet 2600n'"


Location      : 
Name          : \\192.168.2.49\HP Color LaserJet 2600n
PrinterState  : 33554432
PrinterStatus : 3
ShareName     : HPCL2600
SystemName    : \\192.168.2.49

答案 1 :(得分:0)

您必须指定打印机的名称,而不是打印机的路径。

在这种情况下,请仅提供" HP Color LaserJet 2600n"在查询中,查询将返回正确的输出。

所以最后的查询应该是 - "从Win32_Printer中选择*,其名称类似于' HP Color LaserJet 2600n'"