我已经汇集了各种来源的脚本,但无法理解为什么我在结果中获得重复的条目..
例如..
我需要检查远程服务器上的计划任务,并验证哪些未成功完成,然后进行调查。
我有一个schedulers.csv文件,它有两个comlumns IP和Name。
我从https://gallery.technet.microsoft.com/scriptcenter/Get-Scheduled-tasks-from-3a377294
下载了脚本Get-ScheduledTask.ps1效果很好,做我需要的。
然后,我想从列表中检索服务器名称,将上述脚本作为参数运行,然后在csv文件中恢复计划任务。
NextRunTime Author Trigger State UserId ComputerName Name LastRunTime LastTaskResult Description NumberOfMissedRuns Enabled Path
上面脚本的标题给我Name和LastTaskResult,这是我想要进一步查询的内容。
如果LastTaskResult成功完成,那么它应为0,否则我会进一步调查。
我到目前为止的代码是:
$servers = Import-Csv "C:\test\schedulers.csv"
foreach($server in $servers){
$ServerName = $server.Name
$ServerAddress = $server.IP
Write-Host $ServerName : $ServerAddress
$importfile = Get-ScheduledTask.ps1 -ComputerName $ServerName
|Export-Csv -Path c:\test\scheds.csv -NoTypeInformation
$Lines = Import-Csv "C:\test\scheds.csv"
ForEach($line in $lines){
$lines | %{
$TaskName = $_.name
$taskresult = $_.LastTaskResult
if ($_.LastTaskResult -ne "0")
{
Write-Host $line.LastTaskResult : $_.name : $_.Path
}else{
}
}
}
}
应该有3个结果显示,LastTaskResult中的值为1,但我得到大约38,这是我正在测试的两个服务器上的任务总量。
还有3个条目,以及所有其他条目..
请任何人都能看到我出错的地方..非常感谢
答案 0 :(得分:0)
没有经过测试,因为我没有你的Get-ScheduledTask.ps1,但这里有我可能会改变的内容
$servers = Import-Csv "C:\test\schedulers.csv"
foreach ($server in $servers) {
$ServerName = $server.Name
$ServerAddress = $server.IP
Write-Host $ServerName : $ServerAddress
$importfile = Get-ScheduledTask.ps1 -ComputerName $ServerName
$importfile | Export-Csv -Path c:\test\scheds.csv -NoTypeInformation
foreach ($line in $importfile) {
if ($line.LastTaskResult -ne '0') {
Write-Host $line.LastTaskResult : $line.Name : $line.Path
}
}
}