【问题标题】:Get-ChildItem -SilentlyContinue throws AccessDeniedGet-ChildItem -SilentlyContinue 抛出 AccessDenied
【发布时间】:2018-09-24 11:18:53
【问题描述】:

代码:

$cPstFiles = Get-ChildItem -Path $env:USERPROFILE -File -Force `
    -Recurse -Include "*.pst" -ErrorAction "SilentlyContinue"

例外:

Get-ChildItem : Access is denied
At test.ps1:172 char:22
+         $cPstFiles = Get-ChildItem -Path $env:USERPROFILE -File -Force `
+                      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : NotSpecified: (:) [Get-ChildItem], UnauthorizedAccessException
    + FullyQualifiedErrorId : System.UnauthorizedAccessException,Microsoft.PowerShell.Commands.GetChildItemCommand

上下文:PowerShell v4.0/.NET 4.5.2/Windows 7。

这怎么可能?我怎样才能让SilentlyContinue 做它应该做的事情?

可能值得一提的是,脚本并不总是失败。它在某些机器上失败,但在其他机器上运行良好,即使在所有这些机器上都使用相同的映像部署了 Windows。

【问题讨论】:

  • 你确定 ` 后面没有空格吗?将所有参数放在一行时是否得到相同的结果
  • 没有空格,将所有参数放在一行并不会改变任何东西。

标签: powershell powershell-4.0


【解决方案1】:
$ErrorActionPreference = “silentlycontinue”
$Extension = "*pst"
    $TargetFolder = "$env:userprofile"
    Get-Childitem $TargetFolder -Include $Extension -Recurse 

【讨论】:

  • 虽然我知道$ErrorActionPreference,但我从未想过使用这种解决方法。有用。非常感谢!
  • 这没有帮助。
  • 虽然这适用于控制台,但它不会将 Get-Childitem 的结果分配给变量。
  • 我已经尝试过了,它只是阻止了错误的显示。遇到异常后,Get-ChildItem 的执行不会继续,这是我一直在寻找的。 @Morty 这就是不返回结果的原因。我认为这与使用-Recurse 开关有关,但我不确定为什么。
【解决方案2】:

试试

Set-ExecutionPolicy Remotesigned

最初PS没有权限在系统环境上执行脚本,因此将其设置为ResmoteSigned并以管理员权限运行可以解决问题。

【讨论】:

  • 虽然此代码可能有助于解决问题,但提供有关 why 和/或 如何 回答问题的附加上下文将显着改善其长期价值。请edit你的答案添加一些解释。
【解决方案3】:

只需将其覆盖在 try {} 块中,然后为此类硬错误添加 catch {} 例程即可。

哦,我刚才看到的,ErrorAction 应该只是 SilentlyContinue,而不是“SilentlyContinue”字符串。

【讨论】:

  • SilentlyContinue"SilentlyContinue" 在参数上下文中解析时完全相同
  • @Martin 你的回答不是我需要的,抱歉。总会有无法访问的文件,因为这就是 Windows 处理配置文件的方式。但这对我来说很好,我想跳过非终止错误 - 因此SilentlyContinue
【解决方案4】:

由于某些特殊文件或目录,您可能会遇到终止错误。 -erroraction 对这些没有帮助。一个 try/catch 将验证它正在发生。我已经看到它与 Windows Defer 文件夹有关。也许你可以排除它发生的文件夹。

【讨论】:

    猜你喜欢
    • 2017-02-21
    • 2013-03-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-17
    • 2011-02-22
    相关资源
    最近更新 更多