我正在编写一个脚本来在Azure中设置Redis缓存。在设置新缓存之前,我想通过运行以下来检查它的存在:
$cache = Get-AzureManagedCache -Name $cacheName
如果缓存不存在,则输出此“异常”:
Get-AzureManagedCache:找不到缓存服务'PrototypeFOO' 在C:\ builds \ repos-scm \ branches \ 2.6 \ 2.6.0 \ scm \ AzureDeploymentSandbox \ Scripts \ Create-RedisCache.ps1:39 char:15 + $ cache = Get-AzureManagedCache -Name $ cacheName + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo:CloseError:(:) [Get-AzureManagedCache],ArgumentException + FullyQualifiedErrorId:Microsoft.Azure.Commands.ManagedCache.GetAzureManagedCache
所以我把它包装在这样的try / catch块中:
try
{
$cache = Get-AzureManagedCache -Name $cacheName
}
catch
{
Write-Host "Catching the exception"
}
当我运行它时,它会跳过catch语句并继续处理。我可以将“-EA SilentlyContinue”附加到第一行来抑制消息,但我担心这也会抑制合法错误,所以我想避免这种情况。有关如何处理此异常的任何想法?
答案 0 :(得分:3)
保留try / catch块,但将-ErrorAction Stop
添加到Azure调用。
或者,您可以在脚本的顶部设置$ErrorActionPreference='Stop';
,这将自动使所有错误像在.NET中一样。