2014-03-13 2 views
2

이 코드를 powershell에서 실행할 때 매개 변수 이름 'directory'와 일치하는 A 매개 변수를 찾을 수 없다는 오류가 발생합니까? 어떤 생각이 잘못 됐습니까? 당신이매개 변수 이름 'directory'와 일치하는 매개 변수를 찾을 수 없습니다

$Output = @() 
$DirList = GCI \\server\share -directory | %{$_.FullName; GCI $_ -Directory|select -expandproperty FullName} 
ForEach($Dir in $DirList){ 
    [email protected]() 
    (get-acl $Dir).accesstostring.split("`n")|?{$_ -match "^(.+?admin(istrators|141))\s+?(\w+?)\s+?(.+)$"}|%{ 
     $ACLs+=[PSCUSTOMOBJECT]@{Group=$Matches[1];Type=$Matches[2];Access=$Matches[3]} 
    } 
    ForEach($ACL in $ACLs){ 
     if($Members){Remove-Variable Members} 
     $Members = Get-ADGroupMember $ACL.Group -ErrorAction SilentlyContinue|%{[string]$_.SamAccountName} 
     $Output += "$Dir $($ACL.Group) $($ACL.Access) $($Members -join ",")" 
    } 
} 

답변

3

문제는 $DirList = GCI \\server\share -directoryGCI $_ -Directory입니다. Get-ChildItem cmdlet은 -directory 매개 변수 (EDIT : 버전 3 이전)를 지원하지 않습니다.

네트워크 파일 공유의 모든 최상위 디렉토리 항목을 가져 와서 처리하는 것처럼 보입니다. 이것은 다음과 같이 달성 될 수 있습니다 :

 
Get-ChildItem -path \\server\share | 
    Where-Object { $_.PSIsContainer } | 
    ForEach-Object { 

     Write-host $_.FullName 

     # processing code here 

    } 
+1

이것은 사실이 아닙니다. 'Get-ChildItem' cmdlet에는'-Directory' 매개 변수가 있지만 버전 3.0 이전에는 사용할 수 없습니다. –

+1

업데이트 됨. Trevor에게 감사드립니다. – andyb

+0

감사합니다. 각 폴더의 보안 그룹을 가져 오려고합니다. 그리고 나는 -W와 그 멤버들로 끝나는 보안 그룹 만 필요로한다. – user1342164

2

당신은 Get-ChildItem cmdlet의 -Directory 매개 변수를 지원하기 위해 최소한 PowerShell을 버전 3.0이 필요합니다 감사합니다. Windows 7 사용자는 Microsoft .NET Framework 4.5.1을 설치 한 후 Windows Management Framework Core 4.0으로 업그레이드 할 수 있습니다.

관련 문제