簡體   English   中英

Powershell命令,等待一個進程完成

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM