[英]Powershell command for waiting one process to get completed
我有強大的shell腳本,它將執行多項任務,例如卸載,刪除並再次安裝wsp解決方案。我面臨一個問題,例如第一個過程需要花費很長的時間來卸載解決方案,因此其他過程必須等到第一個操作必須完成后才能執行完全完成。現在我給睡眠時間,但是在不同的機器速度變化時會遇到一些問題。.我也知道像外部函數一樣調用記事本,但是我不希望在這里發生。除此之外,任何解決方案都可用就像我需要等待第一個過程完成之前,開始第二個過程。
$InstallDIR = "F:\new\source\UpdatedWSPFiles"
$Dir = get-childitem $InstallDIR -Recurse
$WSPList = $Dir | where {$_.Name -like "*.wsp*"}
Foreach ($wsp in $WSPList )
{
$WSPFullFileName = $wsp.FullName
$WSPFileName = $wsp.Name
try
{
Write-Host -ForegroundColor White -BackgroundColor Blue "Working on $WSPFileName"
Write-Host -ForegroundColor Green "Retracting Solution"
Uninstall-SPSolution -AllWebApplications -Identity "$WSPFileName" -Confirm:$false
sleep 100
Write-Host -ForegroundColor Green "Removing Solution from farm"
Remove-SPSolution -Identity "$WSPFileName" -Confirm:$false -Force
sleep 60
Write-Host -ForegroundColor Green "Adding solution to farm"
Add-SPSolution "$WSPFullFileName" -Confirm:$false
sleep 60
}
您可以使用-wait開關嘗試啟動過程:
PS> $p="C:\windows\System32\WindowsPowerShell\v1.0\powershell.exe"
PS> $params="-command &{ if ((Get-PSSnapin `"Microsoft.SharePoint.PowerShell`" -ErrorAction SilentlyContinue) -eq $null)
{
Add-PSSnapin `"Microsoft.SharePoint.PowerShell`"
}
Uninstall-SPSolution -AllWebApplications -Identity `"$WSPFileName`" -Confirm:$false}"
PS> Start-Process $p $params -Wait
猜猜你可以嘗試
Start-Job -Name "jobname" -ScriptBlock { Uninstall-SPSolution -AllWebApplications -Identity "$WSPFileName" -Confirm:$false }
和
Wait-Job -Name "jobname" -Timeout "maximum wait time"
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.