저는 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"
}