【问题标题】:Powershell Instance ParameterPowershell 实例参数
【发布时间】:2022-08-05 23:46:36
【问题描述】:

我在我们的 Windows AD 中自动创建用户帐户。我正在尝试将权限从一个帐户复制到另一个帐户(就像您在“Active Directory 用户和计算机”应用程序中右键单击并复制用户一样)但是在使用 cmdlet 时\'New AD-User \' 并将变量传递给 \'instance\' 参数,这与我根本不传递变量没有什么不同。

这就是我用来获取$userInstance 变量的方法:

$userInstance = Get-ADUser -Identity $department User

这是我用来创建新用户的代码:

New-ADUser `
         -SamAccountName $userName `
         -UserPrincipalName \"$userName@123.COM\" `
         -Name \"$firstName $lastName\" `
         -GivenName $firstName `
         -Surname $lastName `
         -Enabled $true `
         -DisplayName \"$firstName $lastName\" `
         -City $city `
         -PostalCode $zip `
         -Company $company `
         -State $state `
         -EmailAddress $email `
         -Department $department `
         -Instance $userInstance `
         -AccountPassword (ConvertTo-SecureString \"1234\" -AsPlainText -Force)

当我运行这个命令时,它会做同样的事情,就像我在没有实例参数的情况下运行这个命令一样。

New-ADUser `
         -SamAccountName $userName `
         -UserPrincipalName \"$userName@123.COM\" `
         -Name \"$firstName $lastName\" `
         -GivenName $firstName `
         -Surname $lastName `
         -Enabled $true `
         -DisplayName \"$firstName $lastName\" `
         -City $city `
         -PostalCode $zip `
         -Company $company `
         -State $state `
         -EmailAddress $email `
         -Department $department `
         -AccountPassword (ConvertTo-SecureString \"1234\" -AsPlainText -Force)

我错过了什么吗?如果它只复制某些易于获得的属性(州、公司、城市),我不明白“实例”参数应该做什么。是否有实际复制模板帐户的东西,或者我是否需要编写一个循环来遍历模板帐户中的每个属性、权限和组,从而为我的组织提供某种意义并手动分配它们?

  • 你是如何填充变量$userInstance 的?通常,您将Get-AdUser 用于要复制的用户并将输出保存在变量中...
  • 请将此添加到您的问题中 - 不是评论。
  • 我是否应该始终将与问题相关的内容添加为帖子的编辑而不是评论?

标签: powershell active-directory


【解决方案1】:

“许可”到底是什么意思?

根据用户的 objectSid 设置对资源的权限。由于这对每个用户都是唯一的,因此您永远不能将它们(和相关权限)“复制”给新用户。

组成员资格存储在组而不是用户上。 memberOf 属性只是一个“backLink”,因此也不会被复制。

组成员资格需要在单独的步骤中添加,例如通过使用

Add-ADGroupMember

PowerShell中的cmdlet...

【讨论】:

  • 我所说的“权限”是指用户在 AD 中所在的组成员资格,即具有这种性质的事物。根据您的回答和其他一些研究,如果您真的想以编程方式复制以前帐户的所有功能或“权限”,那么“复制”用户有很多事情要做。
【解决方案2】:

“权限”可能不是我一直在寻找的词。我想创建用户并为他们分配与以前的用户相同的组和目录位置。通过使用@Oliver Hauck 之前所述的方法,我能够将组成员身份添加到我的新用户

Add-ADGroupMember

这有助于我的发现,但我希望不必为每个新员工类型以及他们的团队编写冗长、重复的切换代码,我们可以加入。希望有人看到这一点,并且不会对编写超长、无聊的 switch 代码感兴趣,我想分享一下我是如何实现这一点的,如果它在未来对其他人有所帮助的话。我还是得到了$用户实例变量以相同的方式,但添加-财产参数定义为成员

$userInstance = Get-ADUser -Identity $department User -Properties MemberOf

然后我用$用户实例变量以从中获取我需要的属性(要复制的组,目录路径)

//Obtains the Path from the copied User, without their common name (CN) attached
$path = $userInstance.DistinguishedName.split(",",2)[-1]

我仍然使用与上面相同的命令创建了新用户,但添加了-小路参数将目录路径分配给新AD用户命令

New-ADUser `
     -SamAccountName $userName `
     -UserPrincipalName "$userName@123.COM" `
     -Name "$firstName $lastName" `
     -GivenName $firstName `
     -Surname $lastName `
     -Enabled $true `
     -DisplayName "$firstName $lastName" `
     -City $city `
     -PostalCode $zip `
     -Company $company `
     -State $state `
     -Path $path `
     -EmailAddress $email `
     -Department $department `
     -AccountPassword (ConvertTo-SecureString "1234" -AsPlainText -Force)

这是我如何获得组成员资格并将其分配给新用户

//Obtains the groups to be copied from the existing User
$refGroups = $userInstance.MemberOf
//Adds AD Group Membership to User
$refGroups | Add-ADGroupMember -Members $userName

【讨论】:

    猜你喜欢
    • 2014-09-05
    • 2018-10-19
    • 1970-01-01
    • 1970-01-01
    • 2021-09-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-05
    相关资源
    最近更新 更多