Скрипт Powershell - gci - PullRequest
       33

Скрипт Powershell - gci

0 голосов
/ 22 октября 2018

Я пытаюсь разделить вывод на два файла с помощью следующего скрипта:

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

Я знаю, что вы не можете поймать неразрывные скрипты с catch [System.UnauthorizedAccessException], но я неЯ хочу использовать -ErrorAction Stop с catch [System.Management.Automation.ActionPreferenceStopException] (например, здесь ), потому что я не получу все пути к файлам.

1 Ответ

0 голосов
/ 22 октября 2018

Это сработало для меня

$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 и отправлять в error.txt в качестве второго прохода.Могут быть и другие ошибки, кроме отказа в доступе, но вы будете знать, в каких папках обнаружены проблемы

...