Powershell创建新的用户副本组成员身份

时间:2017-09-22 11:09:39

标签: powershell

我试图成功执行一个脚本,该脚本具有从win8.1计算机到2003域控制器的cmdlet。我在2003域控制器上设置了ADWS,现在可以从我的win8.1机器上远程使用cmdlet。

我尝试使用此脚本的目的是从预先存在的用户($ UserOne)获取组成员资格详细信息,创建新用户($ UserTwo),创建复制组的foreach循环从预先存在的($ UserOne)用户到创建的新用户($ UserTwo)的成员资格详细信息。

目前,脚本一直工作到创建新用户($ UserTwo)为止,但之后的foreach循环似乎没有执行。

你们中的任何人都知道我的代码有什么问题吗?我怀疑在创建用户后我是如何直接进入foreach循环的。我还尝试在创建新用户后使用Invoke-Command创建一个新会话以复制组成员身份,但是由于远程服务器是Windows 2003,因此我的cmdlet都不会在scriptblock中工作。

非常感谢帮助,我对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
}

2 个答案:

答案 0 :(得分:1)

原来这是一个权限问题,只是因为我没有通过错误消息获得任何反馈!

感谢你们的帖子。

答案 1 :(得分:0)

我在这里看到很多问题。

$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
  1. 如果不打算使用-pasthru,为什么要添加它呢?这只会不必要地将数据输出到屏幕上(除非您要这样)。
  2. 如果将命令的结果值分配为null,则再次得到的屏幕垃圾将更少。

尝试

$null = New-ADUser -SAMAccountName $SecondUser -UserPrincipalName "blah@blah.com" -DisplayName $SecondUser -Enabled $true -AccountPassword $secureString -Credential $cred -Server $serv

$UserTwo = Get-ADUser -Identity $SecondUser -Properties memberOf -Server $serv

您为什么要这样做?您已经知道,自从您刚刚创建帐户以来,该用户就不会成为任何组的成员(默认用户除外)。这样一来,您就永远不会在脚本中使用值$ usertwo。

write-host "Adding user $SecondUser to AD groups."

foreach($group in $UserOne.memberof)
{ 
   Add-ADGroupMember -Identity $group -Member $SecondUser -Server $serv
   write-output $group
}