주일에 한 번 실행되고 특정 파일 공유에 대한 모든 사용 권한을 조정하는 스크립트가 있습니다. 필자는 주로 PowerShell 스크립트를 사용하지만 일부 부분에서는 icacls.exe를 실행합니다. 많은 파일이 있기 때문에 icacls.exe를 실행할 때 오류가 발생합니다.PowerShell에서 icacls.exe의 모든 출력을 캡처하는 방법
스크립트 시작시 각 고객 폴더 및 모든 하위 항목의 모든 사용 권한을 재설정합니다. 이것의 한 부분은 객체 소유자를 재설정하는 것입니다.
나는 이와 같이 icacls.exe를 호출하고 있습니다. 오류가 발생 여부
$ICACLSResult = icacls "$OBJPath\*" /setowner $OBJOwner /t /c /q | Out-String
그때 확인하기 위해 특정 텍스트 문자열 $ICACLSResult
을 확인하고 또한 내 오류 메시지 문자열 자체를 추가합니다.
if($ICACLSResult -notmatch "bei 0 Dateien ist ein Verarbeitungsfehler aufgetreten" -and $ICACLSResult -notmatch "Failed processing 0 files")
{
Add-Error -SED ($ErrorMSG + $ICACLSResult) -Level 2 -AddErrorInfo $False -ExitScript $False
Throw("AnErrorOccured")
}
그러나 변수 $ICACLSResult
의 실제 내용은 다음과 같습니다.
Successfully processed 13970 files; Failed processing 5 files
하지만 동일한 명령을 콘솔에서 직접 실행하면 다음과 같이 보입니다.
PS C:\Users\User> $ICACLSResult = icacls "$OBJPath\*" /setowner $OBJOwner /t /c /q | Out-String
D:\Folder1\Folder2\Folder3\File.txt: The system cannot find the path specified.
D:\Folder1\Folder2\Folder3\File.txt: The system cannot find the path specified.
D:\Folder1\Folder2\Folder3\File.txt: The system cannot find the path specified.
D:\Folder1\Folder2\Folder3\File.txt: The system cannot find the path specified.
D:\Folder1\Folder2\Folder3\File.txt: The system cannot find the path specified.
PS C:\Users\User>
그러나 다시 $ICACLSResult
은 이와 같이 보입니다. 이러한 자세한 오류 메시지없이
PS C:\Users\User> $ICACLSResult
Successfully processed 13970 files; Failed processing 5 files
PS C:\Users\User>
은, 그것이 말하는 모두가 많은 파일 구체적으로 어떤 파일 실패가 아니라 어떻게 때문에 변수
$ICACLSResult
를 기록 아무 소용이 없다.
추가 정보를 어떻게 얻고 $ICACLSResult
에 저장할 수 있습니까? 내가 원하는 것은 실패한 파일의 경로입니다. 그들이
$ICACLSResult = icacls "$OBJPath\*" /setowner $OBJOwner /t /c /q 2>&1
$ICACLSResult = icacls "$OBJPath\*" /setowner $OBJOwner /t /c /q 2>&1 | Out-String -Stream -Width 9999
$ICACLSResult = icacls "$OBJPath\*" /setowner $OBJOwner /t /c /q
을 시도했습니다 무엇
10
- 너무 많은 정보는, 줄 바꿈을
- 너무 많은 정보가 들어 바꿈을 포함
- 원하는 정보를 아직 변수
$ICACLSResult
: HTTP : // stackoverflow.com/questions/39272345/handling-net-use-error-messages-with-powershell/39294208#39294208 – Paul
문제 # 3의 경우 간단히'cmd/c "2> & 1"icacls ........를 실행하십시오. ............. ' – wOxxOm
@wOxxOm 고맙습니다. 이 글을 답으로 게시하면 원한다면 받아 들일 수 있습니다. – mariu5