나는 모두 "Bid Documents"라는 하위 폴더가있는 수백 개의 폴더가 있습니다.
그 "입찰 문서"폴더의 모든 인스턴스에 대해 ACL 사용 권한을 변경해야합니다.
이 프로세스를 자동화하는 방법이 있습니까? vbscript는 ACL 사용 권한을 처리하기위한 좋은 선택이 아니라고 들었습니다. 전 PowerShell 스크립트 또는 자동으로 전체 폴더 계층 구조를 검색하고 "제안"이라는 모든 폴더에 지정된 ACL 사용 권한을 추가 비슷한 뭔가 상상이지만, 이것이 실제로 가능한지, 아니면 다른 경우에는 모르겠다. 이 작업을 수행하는 방법.
누구를 생각해?
편집하다: 코멘트 박스는 다음과 같이 필자의 실제 powershell 명령어를 엉망으로 만든다 :
Get-ChildItem "e:\datastore\marcstone bids\*\*\*\Bid Documents" | where {$_.Attributes -eq 'Directory'}
문제는 때로는 Proposals 폴더가 Marcstone 입찰가에서 항상 세 계층이 아니라 때로는 두 계층 일 때가 있으므로 때때로 다음을 시도해보십시오.
Get-ChildItem "e:\datastore\marcstone bids\*\*\Bid Documents" | where {$_.Attributes -eq 'Directory'}
두 번째 버전에는 두 가지 버전이 있습니다. * 많은 버전이 있지만이 버전에서는 폴더를 찾지 못합니다. 왜?
다시 수정 : 이것은 점점 더 흥미 진진합니다. 성공한 명령에 의해 반환 된 결과를 조사한 결과 비어있는 "입찰 문서"폴더 만 반환한다는 것을 발견했습니다. 모든 파일을 포함하는 '입찰 문서'폴더는 반환되지 않습니다. 왜??
다시 수정 : 다음 명령을 변경하고 모든 "입찰 문서"폴더를 반환했습니다.
Get-ChildItem "e:\datastore\marcstone bids\*\*\*\Bid Documents" | where {$_.Attributes -match 'Directory'}
이제 icacls를 사용하여 권한을 변경하는 방법을 배우십시오.
다시 수정 : 좋아, 내가 icacls에 대한 올바른 구문이 생각 :
icacls *filename* /deny special-restrict1:(f)
그래서, 누군가 제발 내가이 두 명령을 연결하는 데 도움이됩니다.
다음과 같은 변수를 사용하여 실험 해보십시오.
$var = Get-ChildItem "e:\datastore\marcstone bids\1001-3500\1701-1750\1702 Morrow M
emorial Home - Sparta WI\Bid Documents" | where {$_.Attributes -match 'Directory'} | icacls $var /deny special-restrict1
:/F
실험 목적으로 특정 폴더를 선택했습니다. 이 명령은 다음 오류를 반환합니다.
First parameter must be a file name pattern or "/?"
누구를 생각해?
| icacls $var ..
에 ;icacls $var ..
또는 파이프 객체 사용 $_