Powershell 脚本 - gci

Powershell script - gci

我正在尝试使用以下脚本将输出分成两个文件:

try {
    gci C:\Windows\System32 -r -Force | % {
        if (!$_.PsIsContainer) {
            $_.FullName;
            $file = $_.FullName
        }
    } > paths.txt
} catch [System.UnauthorizedAccessException] {
    $file > errors.txt
}

我知道您无法使用 catch [System.UnauthorizedAccessException] 捕获非终止脚本,但我也不想将 -ErrorAction Stopcatch [System.Management.Automation.ActionPreferenceStopException] 一起使用(例如 here), 因为我不会获取所有文件路径。

这对我有用

$epath2 = $null

Get-ChildItem -Path C:\Windows\System32 -Recurse -Force -Directory -ErrorVariable epath2 |
foreach {
     if ($?) {
       Out-File -InputObject $_.FullName -FilePath c:\test\paths.txt -Append
    } 
}

if ($epath2) {
  $epath2 | 
  foreach {
     ($_.Exception -split "'")[1] | Out-File -FilePath c:\test\errors.txt -Append
  }
}

捕获 -ErrorAction 变量中的错误并作为第二遍发送到 errors.txt。除了访问被拒绝之外,可能还有其他错误,但您会知道哪些文件夹出现问题