在我的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
答案 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块之外的错误。