【问题标题】:PowerShell: Can't catch UnauthorizedAccessException thrown by get-contentPowerShell:无法捕获获取内容引发的 UnauthorizedAccessException
【发布时间】:2014-07-30 20:15:46
【问题描述】:

我正在尝试捕获 System.UnauthorizedAccessException。如果用户对特定文件没有读取权限,则会发生此异常。

$fwlog = $env:SystemRoot + "\system32\logfiles\firewall\pfirewall.log"

if(Test-Path $fwlog) 
{
    try
    {
        Get-Content -ReadCount 10 -Path $fwlog
    }

    catch [System.UnauthorizedAccessException]
    {
        Write-Host "caught"
    }
}
else 
{
    write-host "File does not exist"
}

但我不断收到此错误消息:

Get-Content : Access to the path 'C:\Windows\system32\logfiles\firewall\pfirewall.log' is denied.
At D:\SourceCode\PowerShell\FwLogParser.ps1:7 char:9
+         Get-Content -ReadCount 10 -Path $fwlog
+         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : PermissionDenied: (C:\Windows\syst...l\pfirewall.log:String) [Get-Content], UnauthorizedAccessException
    + FullyQualifiedErrorId : GetContentReaderUnauthorizedAccessError,Microsoft.PowerShell.Commands.GetContentCommand

我在这里做错了什么?


感谢您的回答。我仍然不明白为什么这个运行会进入 [Exception] 而不是更具体的 [System.UnauthorizedAccessException]。

$fwlog = $env:SystemRoot + "\system32\logfiles\firewall\pfirewall.log"
$ErrorActionPreference = "stop"

if(Test-Path $fwlog) 
{
    try
    {
        Get-Content -ReadCount 10 -Path $fwlog 
    }

    catch [System.UnauthorizedAccessException]
    {
        Write-Host "caught"
    }

    catch [Exception]
    {
        Write-Host "Caugth generic exception"
    }
}
else 
{
    write-host "File does not exist"
}

【问题讨论】:

    标签: powershell exception-handling


    【解决方案1】:

    try/catch 只会捕获终止错误。 您可以在脚本之上使用以下命令使所有错误成为终止错误

    $erroractionPreference="stop"

    @Shay Levy 在这里有解释:https://stackoverflow.com/a/8381798/381149

    【讨论】:

    • @Matze 你可能不想修改全局 $ErrorActionPreference 在这种情况下使用:Get-Content -ReadCount 10 -Path $fwlog -erroraction stop
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-10-04
    • 1970-01-01
    • 1970-01-01
    • 2012-02-04
    • 2013-09-01
    • 2021-10-26
    • 2021-03-13
    相关资源
    最近更新 更多