如何通过PowerShell删除webpart来捕获错误?

时间:2013-08-29 18:40:14

标签: powershell sharepoint-2010

在我的sharepoint powershell脚本中: 我正在收回webpart,然后删除webpart,然后添加(并部署它)。 当我收回它时,我必须等到它完成才能继续前进。我正在做一个无限循环,我想抓住错误。如果有错误,请等待,然后再试一次,如果没有错误,则打破并继续前进。问题是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

1 个答案:

答案 0 :(得分:1)

我尝试复制您的问题并试一试。这次我删除了-ErrorAction Stop,它仍然进入Catch阻止。诀窍可能是我认为Catch [System.Exception]块就位(不确定因为在尝试3中我删除了-ErrorAction[System.Exception]并且它仍然进入Catch块。就像Hyper一样安东尼在评论-ErrorAction Stop中建议所有命令都支持它。所以它应该可以工作。以下函数中的脚本会故意抛出错误来测试逻辑。我认为你的RETRACT函数抛出了错误。

尝试1 -Without -ErrorAction

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

工作正常 - 登陆Catch Block。

尝试2 使用-ErrorAction停止

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

它工作正常并落入Catch区块。

<强> Attempt3

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

它仍然有效并进入Catch区块。

在所有这些尝试之后,我相信你的RETRACT函数正在抛出try catch块之外的错误。