【问题标题】:Powershell create new user copy group membershipPowershell 创建新的用户副本组成员身份
【发布时间】: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
}

【问题讨论】:

标签: powershell


【解决方案1】:

原来是权限问题,只是我没有通过错误消息得到任何反馈!

谢谢大家的帖子。

【讨论】:

    【解决方案2】:

    我在这里看到了一些问题..

    $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. 如果您不打算使用 -passthru,为什么还要添加它?这只会将数据不必要地输出到屏幕上(除非这是您想要的)。
    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
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-10-26
      • 2019-08-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多