我有一个非常烦人的问题,我基本上在做以下事情:
Get-ChildItem $rootPath -Recurse |
Where {$_.psiscontainer} |
Get-Acl | % {
Write-Host "Doing some stuff here"
}
但是我在调用Get-Acl
时说我无法访问时偶尔会收到错误。
没关系,我可以抓住错误继续吧?
所以我试过
Get-ChildItem $rootPath -Recurse |
Where {$_.psiscontainer} |
try {
Get-Acl | % {
Write-Host "Doing some stuff here"
}
} catch {Write-Host "error"}
但现在我得到了
无法识别“尝试”一词
这是令人难以置信的无益,因为try
肯定是PowerShell中的一个命令......
接下来,我尝试将命令拆分为
$folders = Get-ChildItem $rootPath -Recurse | Where {$_.psiscontainer}
foreach ($folder in $folders) {
try {
Get-Acl | % {
Write-Host "Doing some stuff here"
}
} catch {write-host "error"}
}
现在我正在
Get-childitem:指定的路径,文件名或两者都太长。完全限定的文件名必须少于260个字符,以及目录名称 必须少于248个字符。
为什么?我该怎么检查哪个文件夹失败?
答案 0 :(得分:0)
也许尝试类似:
$folders = Get-ChildItem $rootPath -Recurse -Directory -ErrorAction SilentlyContinue
foreach ($folder in $folders) {
try {
Get-Acl -Path $folder | % {
Write-Host "Doing some stuff here"
}
} catch {write-host "error"}
}
您可以使用-Directory
并继续处理错误(ErrorAction
)。
此外,您现在需要将参数传递给Get-Acl,因为您已经展开了管道(这是一个很好的调试步骤)。