【发布时间】:2019-03-01 00:08:11
【问题描述】:
我正在尝试成功执行一个脚本,该脚本包含从 win8.1 机器到 2003 域控制器的 cmdlet。我在 2003 域控制器上设置了 ADWS,现在可以从我的 win8.1 机器上远程使用 cmdlet。
我试图用这个脚本做的是从预先存在的用户 ($UserOne) 获取组成员身份详细信息,创建一个新用户 ($UserTwo),创建一个复制组成员身份详细信息的 foreach 循环从预先存在的 ($UserOne) 用户到创建的新用户 ($UserTwo)。
目前脚本一直运行到创建新用户 ($UserTwo) 为止,但是之后的 foreach 循环似乎没有执行。
有人知道我的代码有什么问题吗?我怀疑这是我在创建用户后直接进入 foreach 循环的方式。我还尝试在创建新用户后使用 Invoke-Command 创建新会话以复制组成员身份,但是由于远程服务器是 Windows 2003,我的 cmdlet 都不能在脚本块中工作。
非常感谢您的帮助,我对 Powershell 还是很陌生。我的代码如下:
$serv = "SERVERNAME"
$cred = "admin\admin"
$secureString = convertto-securestring "Password" -asplaintext -force
$FirstUser = "NameOne"
$SecondUser = "NameTwo"
$UserOne = Get-ADUser -Identity $FirstUser -Properties memberOf -Server $serv
New-ADUser -SAMAccountName $SecondUser -UserPrincipalName "blah@blah.com" -DisplayName $SecondUser -Enabled $true -AccountPassword $secureString -Credential $cred -Server $serv -PassThru
$UserTwo = Get-ADUser -Identity $SecondUser -Properties memberOf -Server $serv
foreach($group in $UserOne.memberof)
{
Add-ADGroupMember -Identity $group -Member $SecondUser -Server $serv
write-output $group
}
【问题讨论】:
-
我相信你必须给
add-adgroupmember一个用户对象(不仅仅是名字)。因此,当您执行new-aduser捕获该对象时:$userTwo = new-aduser ...然后在您的循环中将对象反馈给add-adgroupmember:add-adgroupmember -identity $group -member $userTwo.... -
刚刚尝试过,但不幸的是没有运气,它仍然没有执行 foreach 循环。
标签: powershell