Скрипт Powershell - 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 Stop
с catch [System.Management.Automation.ActionPreferenceStopException]
либо (как здесь), потому что я не получу все пути к файлам.
1 ответ
Решение
Это сработало для меня
$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 в качестве второго прохода. Могут быть и другие ошибки, кроме отказа в доступе, но вы будете знать, в каких папках были проблемы