我正在使用 Powershell 編寫刪除印表機及其驅動程式的腳本。我正在呼叫Printing_admin_scripts
位於 Windows 7+ 上的 System32 資料夾中的 。這些腳本產生大量輸出,我想捕獲輸出(丟棄大部分),並根據狀態產生我自己的輸出。
為什麼不能使用
$LASTEXITCODE
?
因為這些腳本不會產生任何退出代碼!它們總是代表 0。
"0x80041002"
我的目標是在命令的輸出中尋找。如果是這樣,就這樣做……如果沒有,就那樣做。以下是我嘗試過但失敗的方法:
.\prnmngr.vbs -d -p "$_" | findstr "0x80041002" | out-null
If ($LASTEXITCODE = 0) {
Write-Host "$_ does not exist"
} else {
Write-Host "$_ removed"
}
我也嘗試過:
& .\prnmngr.vbs -d -p "$_".ToString() | findstr "0x80041002" | out-null
If ($LASTEXITCODE = 0) {
Write-Host "$_ does not exist"
} else {
Write-Host "$_ removed"
}
這隱藏了輸出,但始終列印印表機已被刪除,即使它不存在(通常輸出“0x80041002”)。我的目標是找到該字串,即使它沒有寫入主機(希望如此),然後在適當的位置寫入我自己的文本,然後繼續。
答案1
答案2
將結果儲存在數組中對我來說很有效:
$script = "C:\Windows\System32\Printing_Admin_Scripts\en-US\prnmngr.vbs"
$result = cscript $script -g
if($result -match 'foo') {
write-host "match"
}
else {
write-host "no match"
}