我正在使用 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"
}