代码:
$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。
答案 0 :(得分:2)
$ErrorActionPreference = “silentlycontinue”
$Extension = "*pst"
$TargetFolder = "$env:userprofile"
Get-Childitem $TargetFolder -Include $Extension -Recurse
答案 1 :(得分:1)
只需将其覆盖在try {}
块内,并为此类硬错误添加catch {}
例程。
哦,我刚刚看到的,ErrorAction应该是SilentlyContinue,而不是" SilentlyContinue"字符串。
答案 2 :(得分:0)
尝试
Set-ExecutionPolicy Remotesigned
最初PS没有权限在系统环境中执行脚本,因此将其设置为ResmoteSigned并使用管理员权限运行可以解决问题。
答案 3 :(得分:0)
由于某些特殊文件或目录,您可能会遇到终止错误。 -erroraction对这些没有帮助。尝试/捕获将验证它正在发生。我已经看到它与Windows Defender文件夹有关。也许您可以排除正在发生该文件夹。