2017-06-28 26 views
1

私はpowershellで仕事をしてサービスを開始/停止しようとしています。ローカルマシンでこれをテストすると、ジョブは完了した状態になりますが、サービスの状態は変わりません。私の仕事がどんなことをしたのかをより良く理解する方法はありますか?私はそのスニペットを実行したとき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)サービスが起動しない:ここでは

はコードです。

私は高架シェルから以下を実行した場合は、それが起動します:

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

私が取得 - ジョブを実行すると、ここで私が見たものである...

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

これらのどちらも高いシェルから実行されているので、私はサービスを開始/停止する権限があります。

答えて

3

Get-Job | Receive-Jobを使用すると、ジョブの出力(エラーを含む)を確認できます。

それとも、作成したジョブのために(具体的に):

$myjob | Receive-Job 

はまたFYI、むしろStart-Sleepよりも、あなたはコードの実行を継続する前にジョブが完了するのを待つために$myjob | Wait-Jobを行うことができます。あなたもできる:

$myjob | Wait-Job | Receive-Job 
+1

ありがとう!私の問題は「get-service:コンピュータ上でService Control Managerを開くことができませんでした。この操作には他の 権限が必要な場合があります。このようなエラーでジョブがまだ完了した状態になるのは不思議です。しかし、答えをありがとう! – Christopher

関連する問題