GidNumber Powershell?

GidNumber Powershell?

我看到有人发布了这个用于分配 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 ...)

相关内容