找不到与参数名称'directory'匹配的参数

时间:2014-03-13 12:55:58

标签: powershell

当我在powershell中运行此代码时,出现错误,找不到与参数名称'directory'匹配的参数?知道什么是错的吗?谢谢

$Output = @()
$DirList = GCI \\server\share -directory | %{$_.FullName; GCI $_ -Directory|select -expandproperty FullName}
ForEach($Dir in $DirList){
    $ACLs=@()
    (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 ",")"
    }
}

2 个答案:

答案 0 :(得分:3)

您至少需要PowerShell 3.0版才能支持-Directory cmdlet上的Get-ChildItem参数。如果您使用的是Windows 7,则可以在安装Microsoft .NET Framework 4.5.1后升级到Windows Management Framework Core 4.0。

答案 1 :(得分: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

    }