Doppelte User im AD, Konto ist bereits vorhanden
Liebe Alle,
ich arbeite an einem Skript welches später automatisiert neue AD User anlegen soll.
Das klappt auch alles sehr zufriedenstellend. Das einzige wo och hängenbleibe ist die Mehrfachanlage wenn
der Name des Benutzers in der Gesamtstruktur schon vorhanden ist. Einen weiteren kriege ich mit dem Skript hinzugefügt
mehr aber auch nicht.Beim 3ten kommt dann die Meldung das das Konto bereits vorhanden ist.
Hier der Skript Code. Ich poste den mal komplett, vielleicht hat einer von Euch ja auch Verbesserungsvorschläge.
Bestimmt denke ich
Ich hoffe mir kann jemand dabei helfen. Ich weiß das doppelte Namen echt selten sind, aber es soll trotzdem abgedeckt werden. Wichtig ist dabei das der User, wenn doppelt, fortlaufend angelegt wird. User,User2,User3,User4 etc.
Der erste soll keine Zahl erhalten, erst der 2te usw.
Ich hoffe sehr das mir damit jemand helfen kann.
Ganz Liebe Grüße
gfritz74
ich arbeite an einem Skript welches später automatisiert neue AD User anlegen soll.
Das klappt auch alles sehr zufriedenstellend. Das einzige wo och hängenbleibe ist die Mehrfachanlage wenn
der Name des Benutzers in der Gesamtstruktur schon vorhanden ist. Einen weiteren kriege ich mit dem Skript hinzugefügt
mehr aber auch nicht.Beim 3ten kommt dann die Meldung das das Konto bereits vorhanden ist.
Hier der Skript Code. Ich poste den mal komplett, vielleicht hat einer von Euch ja auch Verbesserungsvorschläge.
Bestimmt denke ich
#######################
#Übergabe von Testsystem#
#######################
Param(
$ON_Vorname = "User",
$ON_Name = "Test",
$ON_Location = "Düsseldorf",
$ON_EmployeeID = "9999",
$ON_Funktion = "Testuser",
$ON_Dezernat = "Düsseldorf"
#[Parameter(Mandatory=$True)]
#[string]$ON_Vorname,
#[Parameter(Mandatory=$True)]
#[string]$ON_Name,
#[Parameter(Mandatory=$True)]
#[string]$ON_Location,
#[Parameter(Mandatory=$True)]
#[string]$ON_EmployeeID,
#[Parameter(Mandatory=$True)]
#[string]$ON_Funktion,
#[Parameter(Mandatory=$True)]
#[string]$ON_Derzernat
)
###########################
#Test-Conection LDAPServer#
###########################
$ldapServer1 = "DC01.contoso.com"
$ldapServer2 = "DC02.contoso.com"
$ldapServer3 = "DC03.contoso.com"
Foreach ($Computer in $ldapserver1)
{
if (Test-Connection -ComputerName $ldapserver1 -Count 1 -Quiet)
{
$Server = "DC01"
}
elseif (Test-Connection -ComputerName $ldapserver2 -Count 1 -Quiet)
{
$Server = "DC02"
}
elseif (Test-Connection -ComputerName $ldapserver3 -Count 1 -Quiet)
{
$Server = "DC03"
}
}
##################
#benötigte Arrays#
##################
#Department_Array
$Department_Array = @("Düsseldorf")
###################
#benötigte Switche#
###################
#Domain_Switch
$Domain = Switch($ON_Location) {
'Berlin' {'@ber.contoso.com'}
'Chemnitz' {'@che.contoso.com'}
'Düsseldorf' {'@dus.contoso.com'}
'Frankfurt' {'@fra.contoso.com'}
'Hamburg' {'@ham.contoso.com'}
'Köln' {'@cgn.contoso.com'}
'München' {'@muc.contoso.com'}
'Stuttgart' {'@str.contoso.com}
}
#postalCode_Switch
$postalCode = Switch($ON_Location) {
'Berlin' {'10719'}
'Chemnitz' {'09112'}
'Düsseldorf' {'40474'}
'Frankfurt' {'60313'}
'Hamburg' {'20354'}
'Köln' {'50672'}
'München' {'80538'}
'Stuttgart' {'70173'}
}
#State_Switch
$st = Switch($ON_Location) {
'Berlin' {'Berlin'}
'Chemnitz' {'Sachsen'}
'Düsseldorf' {'Nordrhein-Westfalen'}
'Frankfurt' {'Hessen'}
'Hamburg' {'Hamburg'}
'Köln' {'Nordrhein-Westfalen'}
'München' {'Bayern'}
'Stuttgart' {'Baden-Württenberg'}
}
#streetAddress_Switch
$streetAddress = Switch($ON_Location) {
'Berlin' {'32'}
'Chemnitz' {' 16'}
'Düsseldorf' {'4'}
'Frankfurt' {'5-7'}
'Hamburg' {'63'}
'Köln' {'13'}
'München' {' 48'}
'Stuttgart' {'45'}
'Zürich' {'69'}
}
#Stadt_Switch für Password
$ON_Location_Short = Switch($ON_Location) {
'Berlin' {'BER'}
'Chemnitz' {'CHE'}
'Düsseldorf' {'DUS'}
'Frankfurt' {'FRA'}
'Hamburg' {'HAM'}
'Köln' {'CGN'}
'München' {'MUC'}
'Stuttgart' {'STR'}
}
#ADS-ROOT-DC Switch
$result_RA_Standort = switch ($ON_Location)
{
"Düsseldorf" {"$Server";break}
"Frankfurt" {"$Server";break}
"Hamburg" {"$Server";break}
"Stuttgart" {"$Server";break}
"Berlin" {"$Server";break}
"Köln" {"$Server";break}
"Chemnitz" {"$Server";break}
"München" {"$Server";break}
}
#ADS-SUBDOMAIN-DC Switch
$result_SUB_Standort = switch ($ON_Location)
{
"Düsseldorf" {"$Server";break}
"Frankfurt" {"$Server";break}
"Hamburg" {"$Server";break}
"Stuttgart" {"$Server";break}
"Berlin" {"$Server";break}
"Köln" {"$Server";break}
"Chemnitz" {"$Server";break}
"München" {"$Server";break}
}
#OU_ROOT Switch
$result_root_ou = switch ($ON_Location)
{
"Düsseldorf" {"OU=Users,OU=IS,DC=contoso,DC=com";break}
"Frankfurt" {"OU=Users,OU=IS,DC=contoso,DC=com";break}
}
#OU_SUB Switch
$result_Sub_ou = switch ($ON_Location)
{
"Düsseldorf" {"OU=User,OU=DUS,DC=dus,DC=contoso,DC=com";break}
"Frankfurt" {"OU=User,OU=FRA,DC=fra,DC=contoso,DC=com";break}
}
######################
#benötigte Funktionen#
######################
#Function Replace-Umlaut
Function Replace-Umlaut {
param (
[string]$Text
)
$characterMap = @{}
$characterMap.([Int][Char]'ä') = "ae"
$characterMap.([Int][Char]'ö') = "oe"
$characterMap.([Int][Char]'ü') = "ue"
$characterMap.([Int][Char]'ß') = "ss"
$characterMap.([Int][Char]'Ä') = "Ae"
$characterMap.([Int][Char]'Ü') = "Ue"
$characterMap.([Int][Char]'Ö') = "Oe"
$characterMap.([Int][Char]' ') = "."
$characterMap.([Int][Char]'á') = "_"
ForEach ($key in $characterMap.Keys) {
$Text = $Text -creplace ([Char]$key),$characterMap[$key]
}
$Text
}
#create User and Password Single
$count=0
$count++
$Jahr = (Get-Date).Year
$vorname = Replace-Umlaut $ON_Vorname
$nachname = Replace-Umlaut $ON_Name
$nastring1 = $("$Vorname").Substring("0","1").Tolower()
$nastring2 =$NachName.ToLower()
$PWString = $("$Vorname").Substring("0","1").ToUpper()
$PWString2 = $("$NachName").Substring("","1").ToUpper()
$PWString3 = $Nachname.substring(1,1).Tolower()
$PWString4 = $ON_Location_Short.ToUpper()
$userPrincipalName1 = "$nastring1$nastring2"
$Password = "$PWString4$Jahr$PWString$PWString2$PWString3"
$user_password = $Password | ConvertTo-SecureString -AsPlainText -Force
$AD_Konto_Name = "$ON_Name, $ON_Vorname"
$userPrincipalName = "$userPrincipalName1$Domain"
$SamAccountName = "$PWString$nachname"
#create User Double
$vorname1 = Replace-Umlaut $ON_Vorname
$nachname1 = Replace-Umlaut $ON_Name
$nastring1 = $("$Vorname1").Substring("0","1").Tolower()
$nastring2 =$NachName1.ToLower()
$PWString1 = $("$Vorname1").Substring("0","1").ToUpper()
$PWString2 = $("$NachName1").Substring("","1").ToUpper()
$PWString3 = $Nachname1.substring(1,1).Tolower()
$PWString4 = $ON_Location_Short.ToUpper()
$userPrincipalName2 = "$nastring1$nastring2$count"
$count=0
$count++
$AD_Konto_Name_Double = "$ON_Name, $ON_Vorname$count"
$userPrincipalName_Double = "$userPrincipalName1$Count$Domain"
$SamAccountName_Double = "$PWString1$nachname1$count"
#######################
#Settings_User for All#
#######################
$Settings_User = @{
GivenName = $ON_Vorname
SN = $ON_Name
Company = "Testfirma"
streetAddress = $streetAddress
postalCode = $postalCode
l = $ON_Location
st = $st
c = "DE"
co = "Deutschland"
countryCode = "276"
EmployeeID = $ON_EmployeeID
title = $ON_Funktion
Department = $ON_Dezernat
}
##################################
#Settings_User_Single_DC_for Root#
##################################
$Root_Ad_User_Single = @{
name = "$AD_Konto_Name"
Displayname = $AD_Konto_Name
userPrincipalName = "$userPrincipalName1@contoso.com"
SamAccountName = "$SamAccountName"
Path = $result_root_ou
Server = $result_RA_Standort
OtherAttributes = $Settings_User
}
##################################
#Settings_User_Single_DC_for Sub#
##################################
$Sub_Ad_User_Single = @{
name = "$AD_Konto_Name"
Displayname = $AD_Konto_Name
userPrincipalName = "$userPrincipalName"
SamAccountName = "$SamAccountName"
Path = $result_Sub_ou
Server = $result_Sub_Standort
OtherAttributes = $Settings_User
}
##################################
#Settings_User_Double_DC_for Root#
##################################
$Root_Ad_User_Double = @{
name = "$AD_Konto_Name_Double"
Displayname = "$ON_Name, $ON_Vorname"
userPrincipalName = "$userPrincipalName2@contoso.com"
SamAccountName = "$SamAccountName_Double"
Path = $result_root_ou
Server = $result_RA_Standort
OtherAttributes = $Settings_User
}
#################################
#Settings_User_Double_DC_for Sub#
#################################
$Sub_Ad_User_Double = @{
name = "$AD_Konto_Name_Double"
Displayname = "$ON_Name, $ON_Vorname"
userPrincipalName = "$userPrincipalName_Double"
SamAccountName = "$SamAccountName_Double"
Path = $result_Sub_ou
Server = $result_Sub_Standort
OtherAttributes = $Settings_User
}
####################
#Funktionen AD_User#
####################
#function IT_UserAD
function IT_UserAD{
new-aduser @Root_Ad_User_Single -ErrorAction Stop -AccountPassword $user_password -ChangePasswordAtLogon $true -Enabled $true
}
#function UserAD
function UserAD{
new-aduser @Sub_Ad_User_Single -ErrorAction Stop -AccountPassword $user_password -ChangePasswordAtLogon $true -Enabled $true
}
#function Double_UserAD
function Double_IT_UserAD{
new-aduser @Root_Ad_User_Double -ErrorAction Stop -AccountPassword $user_password -ChangePasswordAtLogon $true -Enabled $true
}
#function Double_IT_UserAD
function Double_UserAD{
new-aduser @Sub_Ad_User_Double -ErrorAction Stop -AccountPassword $user_password -ChangePasswordAtLogon $true -Enabled $true
}
#function Add_User
function Add_User {
if ($ON_Dezernat -in $Department_Array)
{
IT_UserAD
}
else
{
UserAD
}}
#function Double_Add_User
function Double_Add_User {
if ($ON_Dezernat -in $Department_Array)
{
Double_IT_UserAD |Out-Null
}
else
{
Double_UserAD |Out-Null
}}
#Get-User-Name
function Get-User {
[CmdletBinding()]
param(
[Parameter(Mandatory=$true, ParameterSetName="Name")]
[ValidateNotNullOrEmpty()]
[string]$Name,
# UPN we will be searching in the domains; this is mandatory.
[Parameter(Mandatory=$true, ParameterSetName="UserPrincipalName")]
[ValidateNotNullOrEmpty()]
[string]$UserPrincipalName
)
process {
$Domain_Array = @($server)
switch ($PSCmdlet.ParameterSetName) {
Name {
$SearchCriteria = "Name"
$SearchSpace = $AD_Konto_Name
}
UserPrincipalName {
$SearchCriteria = "UserPrincipalName"
$SearchSpace = $UserPrincipalName
}
}
foreach ($DCdomain in $Domain_Array) {
$SearchResult = Get-ADUser -Filter {$SearchCriteria -eq $SearchSpace} -Server $DCdomain
if ($SearchResult) {
$Output = Get-ADUser -Identity $SearchResult.SamAccountName -Server $DCdomain
Double_Add_User
}
}
if ($Output -eq $null) {
#ping $DCdomain
Add_User
}
}
}
Get-User -name $AD_Konto_Name
Ich hoffe mir kann jemand dabei helfen. Ich weiß das doppelte Namen echt selten sind, aber es soll trotzdem abgedeckt werden. Wichtig ist dabei das der User, wenn doppelt, fortlaufend angelegt wird. User,User2,User3,User4 etc.
Der erste soll keine Zahl erhalten, erst der 2te usw.
Ich hoffe sehr das mir damit jemand helfen kann.
Ganz Liebe Grüße
gfritz74
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 2948605083
Url: https://administrator.de/contentid/2948605083
Ausgedruckt am: 25.11.2024 um 12:11 Uhr
6 Kommentare
Neuester Kommentar
vielleicht eine anderen Script prüfen ob Users existiert oder nicht
hier ist eine Script von jemand
#Find Users exist in AD or Not?
#Biswajit Biswas
$users = get-content c:\users.txt
foreach ($user in $users) {
$User = Get-ADUser -Filter {(samaccountname -eq $user)}
If ($user -eq $Null) {"User does not exist in AD ($user)" }
Else {"User found in AD ($user)"}
}
hier ist eine Script von jemand
#Find Users exist in AD or Not?
#Biswajit Biswas
$users = get-content c:\users.txt
foreach ($user in $users) {
$User = Get-ADUser -Filter {(samaccountname -eq $user)}
If ($user -eq $Null) {"User does not exist in AD ($user)" }
Else {"User found in AD ($user)"}
}
Moin,
ein bisschen Eigeninitiative erwarte ich schon. Wir sind hier in einem Forum - Geben und Nehmen.
Wenn du dich mit meinen Hinweis auseinandersetzt und ein bisschen Logik einbringst, bringt dich weiter. Wenn du auf einen Fehler läufst, darfst du gerne deinen PowerShell Code gerne posten und wir schauen zusammen drüber.
Gruß,
Dani
ein bisschen Eigeninitiative erwarte ich schon. Wir sind hier in einem Forum - Geben und Nehmen.
Wenn du dich mit meinen Hinweis auseinandersetzt und ein bisschen Logik einbringst, bringt dich weiter. Wenn du auf einen Fehler läufst, darfst du gerne deinen PowerShell Code gerne posten und wir schauen zusammen drüber.
Gruß,
Dani