[英]How to use Powershell global variable inside CMD.EXE statement
我正在嘗試使用帶有嵌入式CMD.exe代碼的PowerShell自動執行打印機安裝。 為了優化代碼並減少鍵入量,我使用了全局變量,這與powershell代碼一起工作正常。 但是,只要它使用單引號和雙引號命中嵌入式CMD.exe代碼,就不再能識別全局變量。 我嘗試使用單引號或雙引號,但仍然沒有運氣。 有問題的參數在第21行,開關/ r。 關於如何修復它的任何想法?
注意:此代碼適用於Powershell_v2。
$h = get-content env:computername
$global:portIP1 = "printer01"
$global:portIP2 = "printer02"
if ($h -match 'nhi') {$global:portIP1
$portNumber = "9100"
$computer = $env:COMPUTERNAME
$wmi= [wmiclass]"\\$computer\root\cimv2:win32_tcpipPrinterPort"
#$wmi.psbase.scope.options.enablePrivileges = $true
$newPort = $wmi.createInstance()
$newPort.hostAddress = $global:portIP1
$newPort.name = $global:portIP1
$newPort.portNumber = $portNumber
$newPort.SNMPEnabled = $True
$newPort.Protocol = 1
$newPort.put()
CMD /C 'printui.exe /if /b "PrinterB&W1" /f "C:\inetpub\ftproot\Prdrivers\HP Universal Print Driver\hpcu155u.inf_amd64_neutral_bcdaf832a18b6add/hpcu155u.inf" /r '$global:portIP1' /m "HP Universal Printing PCL 6"'
CMD /C 'printui.exe/y /n"PrinterB&W1', (Write-Host "match found")}
我將使用一個可擴展(雙引號)here-string。 然后,您可以根據需要添加任何類型的引號,並將它們解析為文字文本:
$global:portIP1 = "printer01"
$global:portIP2 = "printer02"
$command = @"
'printui.exe /if /b "PrinterB&W1" /f "C:\inetpub\ftproot\Prdrivers\HP Universal Print Driver\hpcu155u.inf_amd64_neutral_bcdaf832a18b6add/hpcu155u.inf" /r '$global:portIP1' /m "HP Universal Printing PCL 6"'
"@
CMD /C $command
開場@“可以在任何位置,但結束時”@必須從第1位開始。
有關here-strings的更多信息,請參閱Get-Help about_quoting_rules
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.