我有一个脚本,通过WMI检查所有打印服务器中所有打印机的状态。结果如下所示:
Name location Status
---- -------- ------
Xerox wc275.1 Offline
dnj-4000.1 Offline
6040.1 Offline
m225.02 Offline
5225.01 Offline
如何在30分钟内检查打印机是否处于脱机状态?我可以在文本文件中输出日志记录或smth?我所需要的只是"如何做到"。稍后我将配置电子邮件通知等。但我对PowerShell中的日志记录和解析一无所知。
答案 0 :(得分:0)
如果您每半小时将这些结果输出到文本文件,则可以使用Compare-Object报告2个文件之间的差异/相似之处:
$file1 = get-childitem -path "C:\Powershell\Test\Text" | sort LastWriteTime | select -ExpandProperty FullName -last 2 | Out-File C:\Powershell\path1.txt
$file2 = Get-Content -Path "C:\Powershell\path1.txt" | Select-Object -First 1
$file3 = Get-Content -Path "C:\Powershell\path1.txt" | Select-Object -Last 1
Compare-Object -ReferenceObject (Get-Content $file2) -DifferenceObject (Get-Content $file3) -IncludeEqual -ExcludeDifferent | sort InputObject
在此,List1.txt包含:
Xerox wc275.1 Offline
dnj-4000.1 Offline
6040.1 Offline
m225.02 Offline
5225.01 Offline
List2.txt包含:
Xerox wc275.1 Offline
dnj-4000.1 Online
6040.1 Offline
m225.02 Offline
5225.01 Online
因此,结果给出了与之前30分钟相同的行:
PS C:\WINDOWS\system32> C:\Powershell\Test\CompareMostRecentFiles.ps1
InputObject SideIndicator
----------- -------------
6040.1 Offline ==
m225.02 Offline ==
Xerox wc275.1 Offline ==
注意:
这将检查特定文件夹中的2个最新文件,因此如果您每30分钟运行一次打印机检查并导出到文本文件,请确保将文本文件输出到他们自己的特定文件夹,不包含任何其他内容,否则您将无法获得正确的结果。您还需要确保您的打印机检查脚本创建唯一的文本文件,并且不会覆盖相同的文本文件。
答案 1 :(得分:0)
使用无限循环完成它。
$printers = @{}
Get-WmiObject -Class Win32_Printer |
ForEach-Object {
$printers[$_.Name] = $_ |
Select-Object Name,DetectedErrorState,@{Name='PreviousStatus';Expression={$_.DetectedErrorState}},@{Name='StatusTime';Expression={0}}
}
Do {
$check = Get-WMIObject -Class Win32_Printer
ForEach($printer in $check) {
If($printers[$printer.Name].DetectedErrorState -ne $printer.DetectedErrorState) {
$printers[$printer.Name].PreviousStatus = $printers[$printer.Name].DetectedErrorState
$printers[$printer.Name].DetectedErrorState = $printer.DetectedErrorState
$printers[$printer.Name].StatusTime = 0
} Else {
$printers[$printer.Name].StatusTime += 1
}
}
Start-Sleep 60
} While ($True)
非常感谢Mr.Crff这个想法。