1

私のsharepoint powershellスクリプトでは、Webパーツを撤回してから、Webパーツを削除してから追加(および展開)しています。撤回すると、次に進む前に終了するまで待つ必要があります。私は無限ループを行っており、エラーをキャッチしたいと考えています。エラーがある場合は、待ってから再試行し、エラーがない場合は中断して次に進みます。問題は、try catch がエラーをキャッチしていないことです。(進行中のプロセスがある場合、変更を加えることはできません)。

これを修正する方法を知っている人はいますか?

ありがとう。

function RETRACT()
{
    ./retractwebpart.ps1
}

function REMOVE()
{
    ./removewebpart.ps1
}

function ADD()
{
    ./addwebpart.ps1
}




RETRACT

do
{
    try 
    {
        REMOVE -ErrorAction Stop
        Break
    }
    Catch [System.Exception] 
    {
        Start-Sleep -m 1000
    }
}
while ($true)

do
{
    try 
    {
        ADD -ErrorAction Stop
        Break
    }
    Catch [System.Exception] 
    {
        Start-Sleep -m 1000
    }
}
while ($true)

ファイルを撤回

# Retracting the solution from web application http://mydomain
Write-Host "Retracting the solution from web application http://mydomain..."
Uninstall-SPSolution –Identity PDFLibrary.wsp –WebApplication http://mydomain -confirm:$false -ErrorAction Stop

ファイルを削除

# Removing the solution from web application http://mydomain
Write-Host "Removing the solution from web application http://mydomain..."
Remove-SPSolution –Identity PDFLibrary.wsp -confirm:$false -ErrorAction Stop

ファイルを追加

# Adding the solution to SharePoint
Write-Host "Adding the solution to SharePoint..."
Add-SPSolution C:/PDFLibrary/PDFLibrary.wsp

# Deploying the solution to web application http://mydomain
Write-Host "Deploying the solution to web application http://mydomain..."
Install-SPSolution –Identity PDFLibrary.wsp –WebApplication http://mydomain –GACDeployment
4

1 に答える 1

1

問題を再現して試してみました。今回は削除-ErrorAction Stopしましたが、まだCatchブロックに入りました。秘訣は、Catch [System.Exception] ブロックを配置することだと思うかもしれません (試行 3 で削除-ErrorAction[System.Exception]ても Catch ブロックに入ったため、わかりません。コメントで提案された Hyper Anthony と同じように-ErrorAction Stop、すべてのコマンドでサポートされています) 。次の関数のスクリプトは、ロジックをテストするために意図的にエラーをスローします. RETRACT 関数がエラーをスローしていると思います.

Attempt1 -Without -ErrorAction

Function Remove
{
 C:\scripts\so\DeletedFiles.ps1 
}
try
{
 Remove
}
Catch [System.Exception]{
Write-Host "Unhandled Exception occurred"
}

正常に動作します - キャッチ ブロックに着地します。

Attempt2 with -ErrorAction Stop

Function Remove
{
 C:\scripts\so\DeleteFiles.ps1 
}
try
{
 Remove -ErroAction Stop
}
Catch [System.Exception]{
Write-Host "Unhandled Exception occurred"
}

それは正常に機能し、Catch ブロックに着陸します。

試行3

Function Remove
{
 C:\scripts\so\DeletedFiles.ps1 
}
try
{
 Remove
}
Catch{
Write-Host "Unhandled Exception occurred"
}

それはまだ機能し、Catch ブロックに着陸します。

RETRACTこれらすべての試みの後、関数が try catch ブロックの外側にあるエラーをスローしていると信じています。

于 2013-08-29T19:06:24.103 に答える