2017-09-25 22 views
0

Start-Sleep -m 120の後にサービスが再度実行されているかどうかを確認するにはどうすればよいですか?スタートスリープを使用した後にサービスが実行されていることを確認してください

120分後にもwuauservが実行されている可能性があります。

$getservice = Get-Service -Name wuauserv 
If($getservice.Status -eq 'Running') 
{ 
    Start-Sleep -m 120 
    Get-ChildItem -Path $env:SystemRoot\SoftwareDistribution\Download -Force -Recurse | Remove-Item -Force -Recurse -ErrorAction SilentlyContinue 
} 
Else 
{ 
    Get-ChildItem -Path $env:SystemRoot\SoftwareDistribution\Download -Force -Recurse | Remove-Item -Force -Recurse -ErrorAction SilentlyContinue 
} 

答えて

1

サービスが停止すると、Get-ChildItemを呼び出すだけであるようです。 1つのオプションは次のとおりです。WaitForStatus方法は、各状態チェックの間に約250ミリ秒待機していること

$getservice.WaitForStatus('Stopped', '02:00:00') 

注:オプションのタイムアウトを指定することができます

$getservice = Get-Service -Name wuauserv 
$getservice.WaitForStatus('Stopped') 

Get-ChildItem -Path $env:SystemRoot\SoftwareDistribution\Download -Force -Recurse | 
    Remove-Item -Force -Recurse -ErrorAction SilentlyContinue 

。それが重すぎる場合は、whileループを使用できます。

$getservice = Get-Service wuauserv 
while($getservice.State -ne 'Stopped') 
{ 
    Start-Sleep -m 10 
    $getservice = Get-Service wuauserv 
} 

Get-ChildItem -Path $env:SystemRoot\SoftwareDistribution\Download -Force -Recurse | 
    Remove-Item -Force -Recurse -ErrorAction SilentlyContinue 
+0

i "は配置する必要がありますget-childitem -path ... "の後ろかっこか内部か? – farag

+0

これは、wuauservが動作しているにもかかわらず、フォルダを空にします。なぜサービスステータスをチェックしないのですか? – farag

0

サービスが停止してからGet-ChilItemを実行するまで、あなたはスクリプトを実行することができます。

while($true){ 

    if(-not isWuauservRunning){ 
     Get-ChildItem -Path $env:SystemRoot\SoftwareDistribution\Download -Force -Recurse | Remove-Item -Force -Recurse -ErrorAction SilentlyContinue 
     break 
    } 
} 
  • これは大きなスクリプトの一部である場合、あなたは私たちStart-Jobできる上、このアクティビティを実行しますバックグラウンドは使用のためwhile($true)です。

あなたはまた、そのようにそれを行うことができます(私はこの方法を好きではない、私はそれがより良いサービスが停止している場合を確認することだと思う):

function isWuauservRunning(){ 
    $isRunning = $false 
    $service = Get-Service -Name wuauserv 
    if(($service -ne $null) -and ($service.Status -eq 'Running')){ 
     $isRunning = $true 
    } 

    return $isRunning 
} 

function getAndRemoveItems(){ 
    Get-ChildItem -Path $env:SystemRoot\SoftwareDistribution\Download -Force -Recurse | Remove-Item -Force -Recurse -ErrorAction SilentlyContinue 
} 


if(isWuauservRunning()){ 
    Start-Sleep -m 120 
    if(-not isWuauservRunning()){ 
     getAndRemoveItems 
    } 

}else{ 
    getAndRemoveItems 
} 
0
$getservice = Get-Service -Name wuauserv 
while($getservice.Status -eq 'Running') 
{ 
    Start-Sleep -s 1800 
$getservice = Get-Service -Name wuauserv 
} 
Get-ChildItem -Path $env:SystemRoot\SoftwareDistribution\Download -Force -Recurse | Remove-Item -Force -Recurse -ErrorAction SilentlyContinue 
関連する問題