Powershell 正在尝试为向组中添加用户编写脚本

Powershell 正在尝试为向组中添加用户编写脚本,powershell,active-directory,Powershell,Active Directory,我正在尝试创建一个简单的脚本,它将自动成为我组织的安全组的成员。 我认为我的变量是空的,可能是定义错误,或者是我把语法搞砸了。希望这里有人能帮我看清我的错误 我将编辑下面的代码,以便更好地解释我的问题。我正在调用的属性的值可以是M,也可以是null 如果我运行以下命令,我将返回一个拥有extensionattribute6=M的用户列表 get-aduser -filter {extensionattribute6 -like 'M*'} 如果我尝试在指定OU的部分中添加,结果将变为null。

我正在尝试创建一个简单的脚本,它将自动成为我组织的安全组的成员。 我认为我的变量是空的,可能是定义错误,或者是我把语法搞砸了。希望这里有人能帮我看清我的错误

我将编辑下面的代码,以便更好地解释我的问题。我正在调用的属性的值可以是M,也可以是null

如果我运行以下命令,我将返回一个拥有extensionattribute6=M的用户列表

get-aduser -filter {extensionattribute6 -like 'M*'}
如果我尝试在指定OU的部分中添加,结果将变为null。 我想我要问的是OU是否有语法错误,或者,如果没有,是否有人可以冒险猜测我做错了什么。:)


当使用filter和like运算符时,必须使用语句右侧的*

$managers = Get-ADUser -SearchBase $OU -Filter "extensionattribute6 -like 'M*'"
这将添加一个
广告用户列表,这些用户在extensionattribute6中的值以M开头。如果不将*添加到右侧的“M”,那么它将查找extensionAttribute6值等于
M
的所有用户

如果要比较它们是否相等,则可以使用
-eq
表示相等(引号内无星号*)

如果您想查看多个特定的OU,我建议您使用这些OU的列表并对其进行迭代

$OUs = @()
$OUs += "OU=OU1,DC=domain,dc=com"
$OUs += "OU=OU2,OU=someParent,dc=domain,dc=com"
...

$managers = @()
foreach($OU in $OUs) {
  $managers += Get-ADUser -SearchBase $OU -Filter "extensionattribute6 -eq 'M'"
}

当使用filter和like运算符时,必须使用语句右侧的*

$managers = Get-ADUser -SearchBase $OU -Filter "extensionattribute6 -like 'M*'"
这将添加一个
广告用户列表,这些用户在extensionattribute6中的值以M开头。如果不将*添加到右侧的“M”,那么它将查找extensionAttribute6值等于
M
的所有用户

如果要比较它们是否相等,则可以使用
-eq
表示相等(引号内无星号*)

如果您想查看多个特定的OU,我建议您使用这些OU的列表并对其进行迭代

$OUs = @()
$OUs += "OU=OU1,DC=domain,dc=com"
$OUs += "OU=OU2,OU=someParent,dc=domain,dc=com"
...

$managers = @()
foreach($OU in $OUs) {
  $managers += Get-ADUser -SearchBase $OU -Filter "extensionattribute6 -eq 'M'"
}

我找到了解决这个问题的办法。我需要调用一个新变量,大量借鉴Jawad的建议

我确定的代码如下

$Managers = @()
$Managers += get-aduser -filter * -searchbase "ou=ou1,ou=ou2,ou=ou3,dc=dc1,dc=dc2" -properties extensionattribute6 | where-object{$_.extensionattribute6 -like 'M*'}
foreach ($Manager in $Managers) {add-adgroupmember -identity <groupname> -members $Manager}
$Managers=@()
$Managers+=get aduser-filter*-searchbase“ou=ou1,ou=ou2,ou=ou3,dc=dc1,dc=dc2”-properties extensionattribute6 |其中对象{$\像'M*}
foreach($Managers中的Manager){add adgroupmember-identity-members$Manager}

我找到了解决这个问题的办法。我需要调用一个新变量,大量借鉴Jawad的建议

我确定的代码如下

$Managers = @()
$Managers += get-aduser -filter * -searchbase "ou=ou1,ou=ou2,ou=ou3,dc=dc1,dc=dc2" -properties extensionattribute6 | where-object{$_.extensionattribute6 -like 'M*'}
foreach ($Manager in $Managers) {add-adgroupmember -identity <groupname> -members $Manager}
$Managers=@()
$Managers+=get aduser-filter*-searchbase“ou=ou1,ou=ou2,ou=ou3,dc=dc1,dc=dc2”-properties extensionattribute6 |其中对象{$\像'M*}
foreach($Managers中的Manager){add adgroupmember-identity-members$Manager}

您使用的编辑器或IDE是什么?您应该能够使用代码断点检查变量值。您是否遇到任何特定问题或错误?我正在服务器上使用本地安装的powershell。在本例中,它是powershell 2.0,没有附带ISE。我想我不能安装任何太花哨的东西——这需要在域控制器上运行。我是这里的学徒。如果这些听起来不太正确,请告诉我。谢谢您使用的编辑器或IDE是什么?您应该能够使用代码断点检查变量值。您是否遇到任何特定问题或错误?我正在服务器上使用本地安装的powershell。在本例中,它是powershell 2.0,没有附带ISE。我想我不能安装任何太花哨的东西——这需要在域控制器上运行。我是这里的学徒。如果这些听起来不太正确,请告诉我。谢谢谢谢你的提示!这是个好机会。不幸的是,这似乎不是根本原因,尽管它确实消除了一些错误。您确定为您正在使用的所有用户填写了extensionAttribute6吗?你犯了什么错误。你能在你的问题中发表这些吗?我已经编辑了我原来的帖子,以便更清楚。抱歉搞混了!出于测试目的,请将您的OU更改为“dc=domain,dc=com”(实际域值)dc=domain,dc=com表示根域:domain.com。在排除OU并仅指定“dc=domain,dc=com”时,我能够成功拉取用户列表,谢谢提示!这是个好机会。不幸的是,这似乎不是根本原因,尽管它确实消除了一些错误。您确定为您正在使用的所有用户填写了extensionAttribute6吗?你犯了什么错误。你能在你的问题中发表这些吗?我已经编辑了我原来的帖子,以便更清楚。抱歉搞混了!出于测试目的,请将您的OU更改为“dc=domain,dc=com”(实际域值)dc=domain,dc=com表示根域:domain.com。排除OU并仅指定“dc=domain,dc=com”时,我能够成功提取用户列表