2017-03-24 8 views
0

하드 드라이브의 디렉터리 사용 권한을 끌어와 파일에 기록하는 간단한 PowerShell v4 스크립트가 있습니다.실행에 할당 된 시간을 초과하는 폴더 사용 권한 스크립트

시간의 90 %는 정상적으로 실행되지만 내 출력 파일은 비어 있거나 부분적으로 만 채워집니다. 오류 로그에 "작업 할당 시간 초과로 인해 작업이 종료되었습니다"라는 메시지가 1 시간 동안 표시됩니다. 일반적으로이 작업은 5 분 내에 실행됩니다.

이 문제의 원인에 대한 의견이 있으십니까?

$RootPath = "D:" 

$Folders = dir $RootPath -recurse | where {$_.psiscontainer -eq $true} 

foreach ($Folder in $Folders){ 
    $ACLs = get-acl $Folder.fullname | ForEach-Object { $_.Access } 

    Foreach ($ACL in $ACLs){ 
     if ($Folder.fullname -NotMatch "superoldhome"){ 
      $OutInfo = $Folder.Fullname + "`t" + $ACL.IdentityReference + "`t" + $ACL.AccessControlType 
      Add-Content -Value $OutInfo -Path $OutFile  
     } 
    }} 
+1

디버깅 할 수 없습니다. 우리는 귀하의 환경에 접근 할 수 없습니다. 스크립트와 아무 관련이 없을 수도 있습니다. 당신은 약간의 내장 로깅을 추가하여 진행 상황을 추적 할 수 있습니다. 스크립트에 오류 처리가없는 것 같습니다. – Matt

+1

대신 dumpsec을 사용할 것입니다. 휠 재발견에는 의미가 없습니다. –

답변

0

이 작업은 Windows 작업으로 실행됩니까? 어떤 이유로 하드 드라이브에 대한 액세스가 끊어 질 수 있습니까? 정말로 이것을 사용하고 싶다면, 몇개의 디버그 라인을 사용하여 연결 상태를 유지할 것을 제안합니다. 아마 무엇인가 : 당신이 당신의 루프에서 그 문제의 경우 것이있는 경우 itll는 로그에 기록

if (Test-Path $Folder) {} 
else {Add-Content -Value "Unable to resolve Path" -Path $OutFile} 

. 또는 모든 것을 파일에 기록 할 수 있습니다. 나는 내 머리 꼭대기에서 그것을하는 법을 잊어 버린다. 그러나 나에게 그것을 알린다, 나는 아마 그것을 위로 열찰 수있다.

+0

개인적으로이 질문은 답변보다 많은 질문을 던지며 좋은 형식이 아니며 완성되지 않은 코드 예제를 제공합니다. @Matt처럼 오류 처리를 제안하는 주석이 더 좋았을 것입니다. – Clijsters

0

피드백을 보내 주셔서 감사합니다. 나는 dumpsec을 실험 중이며 그 점에 대해 큰 기대를 걸고 있습니다. 그것이 나에게 원하는 것을 얻지 못한다면, Mattny와 같은 더 많은 로깅을 추가하려고 시도 할 것입니다. & Kenny.