2014-02-13 31 views
1

我正在尝试编写一个基于文件中的值设置用户默认打印机的powershell脚本。带有包含斜线的变量的Powershell WMI查询

当文件中的值是网络打印机\ 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() 
+0

什么的'$ DefaultPrinterName'变量样子的价值? –

回答

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 
0

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

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

所以最终的查询应该是 - “从Win32_Printer选择*,其中名称,如‘于HP Color LaserJet 2600N’”