当我在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 ",")"
}
}
答案 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 -directory
和GCI $_ -Directory
Get-ChildItem cmdlet不支持-directory
参数(编辑:版本3之前)。
看起来您正在尝试获取并处理网络文件共享上的每个顶级目录条目。这可以通过以下方式实现:
Get-ChildItem -path \\server\share | Where-Object { $_.PSIsContainer } | ForEach-Object { Write-host $_.FullName # processing code here }