내가 제목이 약간 오해의 소지가있을 수 있습니다 알고 일치하지 않는 결과를 반환하지만 텍스트 10 줄을 입력 할 필요없이 더 잘 쓸 불가능했다 여기PowerShell을 GetAccessControl는
$drives = get-wmiobject win32_volume | ? { ($_.DriveType -eq 3) -and ($_.DriveLetter -ne $null) }; ForEach($drive in $drives) {$drive.DriveLetter; ((Get-Item $drive.Name).GetAccessControl('Access')).Access}
내가 스크립트의 각 부분이 무엇 설명 : 내 하드 드라이브의 권한과 나는 다음과 같은 접근 방식은 꽤 잘 작동하는지 발견
스토어 모든 하드 드라이브 항목을 $ 드라이브로
$drives = get-wmiobject win32_volume | ? { ($_.DriveType -eq 3) -and
($_.DriveLetter -ne $null) }
각 하드 드라이브의 예를 통해 사이클 및
ForEach($drive in $drives) {$drive.DriveLetter;
인쇄가 ACL 권한을 각 드라이브에 주어진 하드 드라이브의 이름을 인쇄, 드라이브 이름 매개 변수
((Get-Item $drive.Name).GetAccessControl('Access')).Access}
로 $ drive.Name을 전달하여
오늘 나는 꽤 펑키 한 것으로 나타났습니다. 전에 언급 한 명령을 실행하면 다음과 같은 6 가지 ACL 항목이 있습니다 :
내가 대신 $의 drive.Letter를 사용하여 텍스트로 직접 드라이브 이름을 전달하면그러나, 내가 대신 6
PS C:\Users\lopezcha> ((Get-Item 'C:').GetAccessControl('Access')).Access
FileSystemRights : FullControl
AccessControlType : Allow
IdentityReference : NT AUTHORITY\SYSTEM
IsInherited : False
InheritanceFlags : ContainerInherit, ObjectInherit
PropagationFlags : None
FileSystemRights : FullControl
AccessControlType : Allow
IdentityReference : BUILTIN\Administrators
IsInherited : False
InheritanceFlags : ContainerInherit, ObjectInherit
PropagationFlags : None
FileSystemRights : FullControl
AccessControlType : Allow
IdentityReference : AMERICAS\lopezcha
IsInherited : False
InheritanceFlags : ContainerInherit, ObjectInherit
PropagationFlags : None
의 3 ACL 항목은 사람이 문제가 발생하는 이유에 대한 단서가 있습니까 얻을 ?
EDIT : 흥미로운 것을 발견했습니다 ... 드라이브 이름에 "C :"를 사용하면 3 개의 ACL이 다시 생기지 만 "C : \"를 사용하면 6 개의 ACL이 생깁니다. 이 부분적으로 내 질문에 대답하지만 여전히 사용 권한의 차이가 반환 된 이유를 알고 싶습니다.
$ drive.DriveLetter = C : $ drive.Name = C :
당신은 100 % 정확합니다. 나는 도스를 사용하여 꽤 오랫동안 소프트웨어를 개발했으며, 그 전에는 C라는 사실을 들어 보지 못했습니다. 실제로는 명령을 실행하는 폴더에 대한 참조였습니다. 요점을 증명하기 위해 "C : \ Users \ lopezcha"에서 명령을 실행하고있는 폴더의 사용 권한을 테스트하고 "C :"를 사용하는 것과 동일한 권한을 얻었습니다. 교훈을 가져 주셔서 감사합니다. 귀하의 답변을이 질문의 답으로 표시했습니다. 감사합니다. –