如何在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
}
答案 0 :(得分:1)
似乎您只想在服务停止后调用Get-ChildItem。 一种选择是:
$getservice = Get-Service -Name wuauserv
$getservice.WaitForStatus('Stopped')
Get-ChildItem -Path $env:SystemRoot\SoftwareDistribution\Download -Force -Recurse |
Remove-Item -Force -Recurse -ErrorAction SilentlyContinue
您可以选择指定超时:
$getservice.WaitForStatus('Stopped', '02:00:00')
请注意,WaitForStatus方法在每次状态检查之间等待大约250毫秒。如果这太重了,你可以使用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
答案 1 :(得分: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
}
答案 2 :(得分: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