Powershell工作“已完成”但未完成任务

时间:2017-06-28 13:43:44

标签: powershell start-job

我试图通过PowerShell中的作业启动/停止服务。在本地计算机上测试时,作业将进入已完成状态,但服务不会更改其状态。有没有办法更好地了解我的工作?

以下是代码:

$service = 'MSSQL$SQLEXPRESS'
$server = 'myPC'
$myJob = Start-Job -Scriptblock {Get-Service -Name $args[0] -computername $args[1] | Set-Service -Status Running} -ArgumentList @($service,$server)
sleep -Seconds 10
get-job

运行该代码段时,SQL SQL(EXPRESS)服务无法启动。

但是,如果我从提升的shell中运行以下命令,它将启动:

Get-Service -Name $service -computername $server | Set-Service -Status Running

当我运行Get-Job时,这就是我所看到的......

Id     Name            PSJobTypeName   State         HasMoreData     Location             Command                  
--     ----            -------------   -----         -----------     --------             -------                  
10     Job10           BackgroundJob   Completed     True            localhost            Get-Service -Name $arg...

这些都是从高架shell运行的,所以我绝对有权启动/停止服务。

1 个答案:

答案 0 :(得分:4)

使用Get-Job | Receive-Job查看作业的输出(包括任何错误)。

或者(更具体地说)您创建的工作:

$myjob | Receive-Job

同样是FYI,而不是Start-Sleep,您可以在继续执行代码之前执行$myjob | Wait-Job等待作业完成。你也可以:

$myjob | Wait-Job | Receive-Job