私は Powershell を使用して、プリンターとそのドライバーの削除のスクリプトを作成しています。Windows Printing_admin_scripts
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"
}