#powershell #winforms #if-statement
Вопрос:
Есть ли способ добавить групповые политики для нового пользователя AD в том же сценарии? Когда я добавляю функцию создания нового пользователя к кнопке, кажется, что новый пользователь появляется только в конце сценария, когда я пытаюсь добавить групповую политику в переменную $userName, она не может найти пользователя в объявлении. Могу ли я создать нового пользователя до завершения сценария? По какой-то причине мне также нужно снова объявить переменную.
function Creation {
$firstName = $textbox_FirstName.Text
$middleName = $textbox_MiddleName.Text
$lastName = $textbox_Surname.Text
$jobCode = $textbox_JobCode.Text
$Password = $textbox_Password.Text | ConvertTo-SecureString -AsPlainText -Force
if ($dropdown_FirstOU.Text -eq "Aberdeen") {
$OU = "OU=Aberdeen,OU=UK,DC=Kuehne-Nagel,DC=local"
} elseif ($dropdown_FirstOU.Text -eq "Kingpin") {
$OU = "OU=Kingpin,OU=UK,DC=Kuehne-Nagel,DC=local"
}
if (($dropdown_FirstOU.Text -eq "Banbury") -and ($dropdown_SecondOU.Text -eq "Business Development")) {
$OU = "OU=Business Development,OU=Banbury,OU=UK,DC=Kuehne-Nagel,DC=local"
} elseif (($dropdown_FirstOU.Text -eq "Banbury") -and ($dropdown_SecondOU.Text -eq "CTI/Property")) {
$OU = "OU=CTI / Property,OU=Banbury,OU=UK,DC=Kuehne-Nagel,DC=local"
}
if (($dropdown_FirstOU.Text -eq "London") -and ($dropdown_SecondOU.Text -eq "Heathrow03") -and ($dropdown_ThirdOU.Text -eq "Heathrow03")) {
$OU = "OU=Heathrow03,OU=Heathrow03,OU=London,OU=UK,DC=Kuehne-Nagel,DC=local"
}
$Telephone = $textbox_Telephone.Text
if ($textbox_MiddleName.Text -eq "") {
$displayName = "$lastName, $firstName"
$userName = "$firstName.$lastName"
} else {
$displayName = "$lastName, $firstName $middleName"
$userName = "$firstName.$middleName.$lastName"
}
New-ADUser -Name "$userName" -GivenName "$firstName" -Surname "$lastName" -Initials "$middleName" -officephone "$Telephone" -samAccountName "$userName" -AccountPassword $Password -Enabled $True -DisplayName "$displayName / Kuehne Nagel / $jobCode" -userPrincipalName "$userName@kuehne-nagel.local" -Path "$OU"
Set-ADUser -Identity $userName -ChangePasswordAtLogon $true
}
function Template {
$firstName = $textbox_FirstName.Text
$middleName = $textbox_MiddleName.Text
$lastName = $textbox_Surname.Text
if ($textbox_MiddleName.Text -eq "") {
$displayName = "$lastName, $firstName"
$userName = "$firstName.$lastName"
} else {
$displayName = "$lastName, $firstName $middleName"
$userName = "$firstName.$middleName.$lastName"
}
if ($RadioButton_IFF.Checked) {
Add-ADGroupMember -Identity "Test1" -Members $UserName
}
}
Ответ №1:
После создания пользователя ( New-ADUser
) вам нужно будет извлечь ADUser
объект, чтобы использовать его.
Пример:
New-ADUser -Name "$userName" -GivenName "$firstName" -Surname "$lastName" -Initials "$middleName" -officephone "$Telephone" -samAccountName "$userName" -AccountPassword $Password -Enabled $True -DisplayName "$displayName / Kuehne Nagel / $jobCode" -userPrincipalName "$userName@kuehne-nagel.local" -Path "$OU"
$UserName = Get-ADUser $userName
Затем вы можете использовать $userName
с командами Set-ADUser
и. Add-ADGroupMember
Честно говоря, было бы проще использовать одну функцию и включить в нее свое состояние.
Пример:
function Creation {
$firstName = $textbox_FirstName.Text
$middleName = $textbox_MiddleName.Text
$lastName = $textbox_Surname.Text
$jobCode = $textbox_JobCode.Text
$Password = $textbox_Password.Text | ConvertTo-SecureString -AsPlainText -Force
if ($dropdown_FirstOU.Text -eq "Aberdeen") {
$OU = "OU=Aberdeen,OU=UK,DC=Kuehne-Nagel,DC=local"
} elseif ($dropdown_FirstOU.Text -eq "Kingpin") {
$OU = "OU=Kingpin,OU=UK,DC=Kuehne-Nagel,DC=local"
}
if (($dropdown_FirstOU.Text -eq "Banbury") -and ($dropdown_SecondOU.Text -eq "Business Development")) {
$OU = "OU=Business Development,OU=Banbury,OU=UK,DC=Kuehne-Nagel,DC=local"
} elseif (($dropdown_FirstOU.Text -eq "Banbury") -and ($dropdown_SecondOU.Text -eq "CTI/Property")) {
$OU = "OU=CTI / Property,OU=Banbury,OU=UK,DC=Kuehne-Nagel,DC=local"
}
if (($dropdown_FirstOU.Text -eq "London") -and ($dropdown_SecondOU.Text -eq "Heathrow03") -and ($dropdown_ThirdOU.Text -eq "Heathrow03")) {
$OU = "OU=Heathrow03,OU=Heathrow03,OU=London,OU=UK,DC=Kuehne-Nagel,DC=local"
}
$Telephone = $textbox_Telephone.Text
if ($textbox_MiddleName.Text -eq "") {
$displayName = "$lastName, $firstName"
$userName = "$firstName.$lastName"
} else {
$displayName = "$lastName, $firstName $middleName"
$userName = "$firstName.$middleName.$lastName"
}
New-ADUser -Name "$userName" -GivenName "$firstName" -Surname "$lastName" -Initials "$middleName" -officephone "$Telephone" -samAccountName "$userName" -AccountPassword $Password -Enabled $True -DisplayName "$displayName / Kuehne Nagel / $jobCode" -userPrincipalName "$userName@kuehne-nagel.local" -Path "$OU"
#new Part
$UserName = Get-ADUser $userName
$userName | Set-ADUser -ChangePasswordAtLogon $True
if ($RadioButton_IFF.Checked) {
Add-ADGroupMember -Identity "Test1" -Members $UserName
}
}
Комментарии:
1. Добавить-ADGroupMember : Не удается найти объект с идентификатором: ‘Гарри. Тест» под: «DC=Кене-Нагель,DC=местный». В C:UsersAdministratorDocuments Новый пользователь.ps1:58 символ:9 Добавить-Участник группы -Идентификатор «Test1» -Участники $Имя пользователя
2. По тому, как построены эти функции, вам нужно будет добавить их в обе. Потому
$UserName
что переменная будет содержаться в функции. Честно говоря, вам, вероятно, следует сделать эту функцию одной3. Мне было интересно, должна ли это быть одна функция, позвольте мне попробовать, но я думаю, что у нее будет та же ошибка с невозможностью найти пользователя. Я попытался добавить паузу, но это не помогло.
4. Я обновил ответ, включив в него слегка измененную вашу функцию.
5. Вы можете просто захватить только что созданного пользователя, как
$user = New-ADUser ...
. После этого не нужно использовать Get-ADUser.