2017-03-08 16 views
0

サービスへの参照を取得するために、Win32_ServiceクラスでGet-WMIObjectを使用しています。私はその参照を変数に格納しています。私の質問は、サービスの状態を更新するために参照変数を使用するだけですか、別のGet-WMIObjectを実行する必要がありますか? get-WMIObjectメソッドとinterrogateserviceメソッドでの変数参照の使用

は現在、私はこれを使用します。

$parameters = @{ 
     Class = 'Win32_Service' 
     ComputerName = $server 
     Credential = $script:credentials 
     Filter = "Name='$ServiceName'" 
    } 
$targetservice = Get-WMIObject @parameters 
$results = $targetservice.startservice() 
if($results.returnvalue -eq 0) 
{ 
    do 
    { 
     start-sleep -milliseconds 100 
    } until((Get-WMIObject @parameters).state -eq 'Running') 
} 

私はその2回目の呼び出しには、Get-WmiObjectコマンドをする必要がある、または私はそれはこのように行うことができますか?

$parameters = @{ 
     Class = 'Win32_Service' 
     ComputerName = $server 
     Credential = $script:credentials 
     Filter = "Name='$ServiceName'" 
    } 
$targetservice = Get-WMIObject @parameters 
$results = $targetservice.startservice() 
if($results.returnvalue -eq 0) 
{ 
    do 
    { 
     start-sleep -milliseconds 100 
     $targetservice.interrogateservice() 
    } until(($targetservice).state -eq 'Running') 
} 

私はinterrogateserviceは、サービスの状態を更新すると仮定されて知っているが、何らかの理由で、あなたが思うだろうとして機能していないと、ループ内で立ち往生。

答えて

0

WMIの結果は、クエリ実行時のステータスのみを反映します。現在のステータスを取得するには、Get-WmiObjectを再実行する必要があります。

+0

そうする必要があるとは思えますが、それはそれが何であるかと思います。ありがとう – todd1215

関連する問題