Powershell 设置具有特定属性的新用户
Powershell setting up a new user with a specific attribute
我有一个脚本可以创建可用于不同操作的新用户。
Param(
[Parameter(Mandatory=$True,Position=1)]
[string]$GivenName, #=givenName
[Parameter(Mandatory=$True,Position=2)]
[string]$Name, # =sn
[Parameter(Mandatory=$True,Position=9)]
[string]$ADuser,
[Parameter(Mandatory=$True,Position=4)]
[string]$Description, #=title
[Parameter(Mandatory=$True,Position=4)]
[string]$AdministrationUser,
[Parameter(Mandatory=$True,Position=4)]
[string]$SamAccManager
)
在这些参数之后,我有一个新用户名等等,但是我想使用最后一个参数 SamAccManager 添加到 adminDisplayName,这样我就可以搜索谁负责该 AD 用户,因为那里将是没有登录权限的用户,仅用于测试目的。
new-aduser -name $DisplayName -DisplayName $DisplayName -Description $Description -GivenName $GivenName -Surname $Name -SamAccountName $usr -UserPrincipalName $UserPrincipalName -Path $OU_AD
如何集成以将该信息添加到特定的 adminDisplayName 字段中?例如,我想在最后一节代码中添加 -admindisplayname $samaccmanager ,但我不能这样做,因为它是一个无效参数。有任何想法吗?
我注意到的第一件事是您将 Position
的重复值添加到参数中。此外,还有一个您似乎没有使用的参数:$AdministrationUser
就个人而言,我会更改其中一些参数的名称,以便它们代表什么变得更加清晰。
下面的代码使用 Splatting 将参数提供给 New-ADUser cmdlet。这是调用具有大量属性的 cmdlet 的一种可读性和可维护性很好的方法。
Param(
[Parameter(Mandatory=$True,Position=0)]
[string]$GivenName, # =givenName
[Parameter(Mandatory=$True,Position=1)]
[string]$SurName, # =SurName
[Parameter(Mandatory=$True,Position=2)]
[string]$AccountName, # =SamAccountName
[Parameter(Mandatory=$True,Position=3)]
[string]$Description, # =title
[Parameter(Mandatory=$True,Position=4)]
[string]$OU, #= distinguishedName of the OU
[Parameter(Mandatory=$True,Position=5)]
[string]$SamAccManager #= AdminDisplayName
)
# create a hashtable for the New-ADUser parameters
$userParams = @{
Name = "$GivenName $SurName"
DisplayName = "$GivenName $SurName"
Description = $Description
GivenName = $GivenName
Surname = $SurName
SamAccountName = $AccountName
UserPrincipalName = "$AccountName@yourdomain.com"
Path = $OU
# add the AdminDisplayName attribute as hashtable
OtherAttributes = @{AdminDisplayName = $SamAccManager}
}
# create the user by splatting the parameters
New-ADUser @userParams
当然,您也可以在创建用户后设置AdminDisplayName 属性
Set-ADuser -Identity $AccountName -Add @{AdminDisplayName = $SamAccManager}
我有一个脚本可以创建可用于不同操作的新用户。
Param(
[Parameter(Mandatory=$True,Position=1)]
[string]$GivenName, #=givenName
[Parameter(Mandatory=$True,Position=2)]
[string]$Name, # =sn
[Parameter(Mandatory=$True,Position=9)]
[string]$ADuser,
[Parameter(Mandatory=$True,Position=4)]
[string]$Description, #=title
[Parameter(Mandatory=$True,Position=4)]
[string]$AdministrationUser,
[Parameter(Mandatory=$True,Position=4)]
[string]$SamAccManager
)
在这些参数之后,我有一个新用户名等等,但是我想使用最后一个参数 SamAccManager 添加到 adminDisplayName,这样我就可以搜索谁负责该 AD 用户,因为那里将是没有登录权限的用户,仅用于测试目的。
new-aduser -name $DisplayName -DisplayName $DisplayName -Description $Description -GivenName $GivenName -Surname $Name -SamAccountName $usr -UserPrincipalName $UserPrincipalName -Path $OU_AD
如何集成以将该信息添加到特定的 adminDisplayName 字段中?例如,我想在最后一节代码中添加 -admindisplayname $samaccmanager ,但我不能这样做,因为它是一个无效参数。有任何想法吗?
我注意到的第一件事是您将 Position
的重复值添加到参数中。此外,还有一个您似乎没有使用的参数:$AdministrationUser
就个人而言,我会更改其中一些参数的名称,以便它们代表什么变得更加清晰。
下面的代码使用 Splatting 将参数提供给 New-ADUser cmdlet。这是调用具有大量属性的 cmdlet 的一种可读性和可维护性很好的方法。
Param(
[Parameter(Mandatory=$True,Position=0)]
[string]$GivenName, # =givenName
[Parameter(Mandatory=$True,Position=1)]
[string]$SurName, # =SurName
[Parameter(Mandatory=$True,Position=2)]
[string]$AccountName, # =SamAccountName
[Parameter(Mandatory=$True,Position=3)]
[string]$Description, # =title
[Parameter(Mandatory=$True,Position=4)]
[string]$OU, #= distinguishedName of the OU
[Parameter(Mandatory=$True,Position=5)]
[string]$SamAccManager #= AdminDisplayName
)
# create a hashtable for the New-ADUser parameters
$userParams = @{
Name = "$GivenName $SurName"
DisplayName = "$GivenName $SurName"
Description = $Description
GivenName = $GivenName
Surname = $SurName
SamAccountName = $AccountName
UserPrincipalName = "$AccountName@yourdomain.com"
Path = $OU
# add the AdminDisplayName attribute as hashtable
OtherAttributes = @{AdminDisplayName = $SamAccManager}
}
# create the user by splatting the parameters
New-ADUser @userParams
当然,您也可以在创建用户后设置AdminDisplayName 属性
Set-ADuser -Identity $AccountName -Add @{AdminDisplayName = $SamAccManager}