0

나는 wsp solutions를 제거하고 제거하고 다시 설치하는 것과 같은 여러 작업을 수행하는 파워 쉘 스크립트를 가지고 있습니다. 첫 번째 프로세스와 같은 문제에 직면하고 있습니다. 다른 프로세스는 첫 번째 작업이 완료 될 때까지 기다려야합니다. 이제는 잠자기 시간을 제공하지만 다른 컴퓨터 속도가 달라지는 동안 문제가 있습니다. 또한 외부 함수처럼 메모장을 호출하는 것을 알고 있지만 그만하면됩니다. 여기에서 일어나야 만합니다. 두 번째 프로세스를 시작하기 전에 첫 번째 프로세스가 완료 될 때까지 기다려야하는 것처럼 모든 솔루션이 유용합니다.하나의 프로세스가 완료되기를 기다리는 Powershell 명령

$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 
} 
+0

질문은 무엇을 시도 할 수 추측? foreach 루프를 병렬로 실행 하시겠습니까? (모든 솔루션은 동시에 제거됩니다.) –

답변

0

당신이 잠깐 스위치로 시작하는 프로세스를 시도 할 수 있습니다 :

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 
0

당신이

Start-Job -Name "jobname" -ScriptBlock { Uninstall-SPSolution -AllWebApplications -Identity "$WSPFileName" -Confirm:$false } 

Wait-Job -Name "jobname" -Timeout "maximum wait time" 
+0

모든 replays.Actually 주셔서 감사합니다. 제거 프로세스가 완료되었는지 여부를 확인하는 foreach 명령을 찾고 있는데, 완료되면 그 결과는 루프를 반복하고 프로세스를 계속합니다. 처음 프로세스가 완료되지 않으면 foreach가 계속 확인해야합니다. – user2039349

+0

죄송합니다. 뭔가 놓쳤습니다. ( – terry

관련 문제