2014-03-13 182 views
2

當我在powershell中運行此代碼時,出現一個錯誤,指出找不到與參數名'目錄'匹配的參數?任何想法有什麼不對?謝謝找不到與參數名'目錄'相匹配的參數

$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參數(編輯:版本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

您需要的PowerShell 3.0版在最低限度,以支持對Get-ChildItem cmdlet上的-Directory參數。如果您使用的是Windows 7,則可以在安裝Microsoft .NET Framework 4.5.1後升級到Windows Management Framework Core 4.0。