我看到有人发布了这个用于分配 Gid 的小脚本,但不幸的是我遇到了错误。我对其进行了一些修改以更好地满足我的需求,但想知道其中的 $groups 变量是什么意思?(见下文)
每次我尝试运行它时都会出现错误
###Find the highest GID used on any group in the domain
$highGid = Get-ADGroup -Searchbase $searchbase -LDAPFilter "(gidNumber=*)" -Properties gidNumber |
Measure-Object -Property gidNumber -Maximum |
Select-Object -ExpandProperty Maximum
###Avoid assigning GIDs below 1000000
$highGid = [Math]::max( $highGid, 1000000 )
####Find every security group without a gidNumber, and give it one.
$groups = Get-ADGroup -SearchBase $searchbase -LDAPFilter "(!gidNumber=*)" | ? {$_.GroupCategory -eq "Security"}
$groups | Set-ADGroup -Add @{ gidNumber=++$highGid }
答案1
这样的使用$groups
看起来像是将两行代码合并为一行的一次失败的尝试。
代码原本的样子可能就是这样的:
$groups = Get-ADGroup -LDAPFilter "(!gidNumber=*)" | ? {$_.GroupCategory -eq "Security"}
$groups | Set-ADGroup -Add @{ gidNumber=++$highGid }
这相当于一行代码:
Get-ADGroup -LDAPFilter "(!gidNumber=*)" | ? {$_.GroupCategory -eq "Security"} | Set-ADGroup -Add @{ gidNumber=++$highGid }
$gighGid
必须定义为System.Double
。我的域中没有为 AD 对象分配任何 GID,因此我无法测试这一点,但您可能只需将 $highGid 转换为某个位置即可int
。最合理的方法是在第一行执行此操作,如下所示:
$highGid = [int](Get-ADGroup ...)