我有一个在远程服务器上启动任务的PowerShell脚本。该任务需要几个小时才能运行,所以我需要在代码中有一个循环,每隔几分钟检查一次任务,看看它是否仍在运行,然后脚本继续执行下一步。我试着运行以下命令:
$svc_cred = Get-Credential -Credential <DOMAIN><ServiceAccount>
$global:Remote_session = New-PSSession -ComputerName <Server> -Credential $svc_cred
Invoke-Command -Session $global:Remote_session -ScriptBlock {
$results = Get-ScheduledTask -TaskName "Export_users" -TaskPath ""
Write-Output "Taskname: $results.TaskName"
Write-Output "State: $results.State"
}
但是这会产生输出:
Taskname: MSFT_ScheduledTask (TaskName = "Export_users", TaskPath = "").TaskName
State: MSFT_ScheduledTask (TaskName = "Export_users", TaskPath = "").State
我想要的输出是:
Taskname: Export_users
State: Running
我如何编写此代码以允许访问脚本以检查State是否等于"running"?
您可以在while循环中使用计划任务的State属性,如:
Start-ScheduledTask -TaskName 'SomeTaskName'
while ((Get-ScheduledTask -TaskName 'SomeTaskName').State -ne 'Ready') {
##Wait a while
Start-Sleep -Seconds 10
}
Santiago Squarzon的评论回答了我的问题。
"Taskname: $ (results.TaskName美元)";and "State: $($results.State)"或者更简单,$results | Select-Object TaskName, State -圣地亚哥Squarzon