如何从get - scheduledtask获取结果到PowerShell变量



我有一个在远程服务器上启动任务的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

最新更新