8439609403
Goto Top

Computer in Domäne heben über Powershell Skript

Hallo Zusammen,

ich teste seit einiger Zeit an einem Powershell Skript herum.
Dieses soll einen (bzw. 225) Computer aus einer Workbench in eine Domäne hebeln. Der Neue Computer Name soll sich aus einem
"DEDT"+Seriennummer zusammensetzen, sprich als Beispiel "DEDTR90WS55D". Im Active Directory habe ich bereits den Computer angelegt mit dem selben Namen "DEDTR90WS55D", habe diesen aber noch nicht am PC selber zugewiesen.

Das Skript sieht wie folgt aus:
# Die Seriennummer des Computers über WMI abrufen
$serialNumber = (Get-WmiObject Win32_BIOS).SerialNumber

# Den Computername direkt aus "DEDT" und der Seriennummer erstellen 
$computerName = "DEDT" + $serialNumber  

# Den Domänennamen festlegen
$domainName = "test.corp"  # Der Domänennamen bleibt in diesem Fall unverändert (test.Corp nur als Beispiel)  

# Anmeldeinformationen für den Domänenadministrator abrufen / Domain Admin
$credential = Get-Credential

# Den Computer zur Domäne hinzufügen
Add-Computer -ComputerName $computerName -DomainName $domainName -Credential $credential -Restart

Führe ich das Skript aus wird auch nach dem Domain Admin gefragt aber dann taucht folgender Fehler auf:

Add-Computer : Computer name DEDTR90WS55D cannot be resolved with the exception: One or more errors occurred..
At line:14 char:1
+ Add-Computer -ComputerName $computerName -DomainName $domainName -Cre ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidArgument: (DEDTR90WS55D:String) [Add-Computer], InvalidOperationException
    + FullyQualifiedErrorId : AddressResolutionException,Microsoft.PowerShell.Commands.AddComputerCommand

Kann mir da jemand weiterhelfen?

Ich bedanke mich schon einmal im vorraus!

Content-ID: 54161977157

Url: https://administrator.de/forum/computer-in-domaene-heben-ueber-powershell-skript-54161977157.html

Ausgedruckt am: 22.12.2024 um 04:12 Uhr

bitnarrator
bitnarrator 04.09.2023 aktualisiert um 11:33:43 Uhr
Goto Top
Ich hab das zwar so noch nie gemacht, aber musst du den Computer vorher nicht noch umbennenen?

Hier solltest du vielleicht die Lösung finden:
Powershell Rename PC und Join Domain

Oder hier:
https://subscription.packtpub.com/book/cloud-and-networking/978178913767 ...
kpunkt
kpunkt 04.09.2023 um 11:35:57 Uhr
Goto Top
Lautet denn der Computername tatsächlich DEDTR90WS55D oder bastelt er sich da etwas andres mit einem nicht unterstützen Zeichen zusammen?
Lass mal $computerName anzeigen. Obwohl...laut Fehlermeldung scheint er richtig zu sein.
Oder muss $computerName nicht doch in Anführungszeichen sein?
8439609403
8439609403 04.09.2023 um 11:58:57 Uhr
Goto Top
naja.. ich habs jetzt Selber hinbekommen face-smile

$Seriennummer = (Get-WmiObject -Class Win32_BIOS).SerialNumber
$NeuerComputername = "DEDT" + $Seriennummer

  1. Festlegen der Daten
$DomainName = "test.corp" # Der Name der Domäne
$DomainUser = "admin_username" # Ein Benutzer mit Berechtigung zum Hinzufügen von Computern zur Domäne
$DomainPassword = "admin_password" # Das Passwort des Domänenbenutzers

  1. Computer zur Domain adden
Add-Computer -DomainName $DomainName -Credential (New-Object PSCredential -ArgumentList $DomainUser, (ConvertTo-SecureString $DomainPassword -AsPlainText -Force)) -Restart
Snuffchen
Snuffchen 04.09.2023 um 12:02:43 Uhr
Goto Top
Aber in deinem Powershell-Befehl fehlt jetzt der Computername komplett?!
Da fehlt jetzt aber noch das vorherige Rename-Computer -NewName $NeuerComputername in deinem Script
Kraemer
Kraemer 04.09.2023 um 12:06:29 Uhr
Goto Top
Wenn du den Computernamen während des joins ändern willst, musst du den Parameter NewName verwenden!
https://learn.microsoft.com/en-us/powershell/module/microsoft.powershell ...
8439609403
8439609403 04.09.2023 um 12:44:05 Uhr
Goto Top
Zitat von @Snuffchen:

Aber in deinem Powershell-Befehl fehlt jetzt der Computername komplett?!
Da fehlt jetzt aber noch das vorherige Rename-Computer -NewName $NeuerComputername in deinem Script

Ok, scheinbar stimmt mein Skript wirklich nicht, es funktioniert nur wenn der PC bereits den richtigen namen hat... Kannst du mir zeigen an welcher stelle ich deine Zeile einfügen müsste?

Der PC ist vorm domainbeitritt schon im AD hinterlegt, gibt es denn die möglichkeit erst den PC namen zu ändern, dann der Domain beizutreten über ein einzelnes PS skript? Weil eigentlich muss der pc doch rebooten um die PC-namensänderung zu übernehmen oder?
kpunkt
kpunkt 04.09.2023 um 12:46:16 Uhr
Goto Top
Naja, man kennt dein Script halt nicht.
Einfach vor dem Add-Computer den Computer umbenennen.
8439609403
8439609403 04.09.2023 um 12:55:40 Uhr
Goto Top
Zitat von @kpunkt:

Naja, man kennt dein Script halt nicht.
Einfach vor dem Add-Computer den Computer umbenennen.

Hier ist mein aktuelles Skript

  1. Definiere die erforderlichen Informationen
$Seriennummer = (Get-WmiObject -Class Win32_BIOS).SerialNumber
$NeuerComputername = "DEDT" + $Seriennummer

$DomainName = "Domain.corp" # Der Name deiner Domäne
$DomainUser = "Admin" # Ein Benutzer mit Berechtigung zum Hinzufügen von Computern zur Domäne
$DomainPassword = "Password" # Das Passwort des Domänenbenutzers

  1. Ändere den Computernamen
Rename-Computer -NewName $NeuerComputername -Force

  1. Füge den Computer zur Domäne hinzu
Add-Computer -DomainName $DomainName -Credential (New-Object PSCredential -ArgumentList $DomainUser, (ConvertTo-SecureString $DomainPassword -AsPlainText -Force)) -Restart


Der Fehler dazu ist folgender:

Add-Computer : Computer 'DESKTOP-B0LTIG3' failed to join domain 'Domain.corp' from its current workgroup 'WORKGROUP' with following error message: Your computer
could not be joined to the domain. You have exceeded the maximum number of computer accounts you are allowed to create in this domain. Contact your system administrator
to have this limit reset or increased.
At line:13 char:1

back-to-topAdd-Computer -DomainName $DomainName -Credential (New-Object PSCreden ...

back-to-top~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

+ CategoryInfo : OperationStopped: (DESKTOP-B0LTIG3:String) [Add-Computer], InvalidOperationException
+ FullyQualifiedErrorId : FailToJoinDomainFromWorkgroup,Microsoft.PowerShell.Commands.AddComputerCommand


Der Fehler ensteht, weil der computer scheinbar den namen nicht ändert bevor er der Domäne beitretet will, obwohl ich das oben im Skript vor dem Domain beitritt festlege. Der PC soll in dem Skript vor dem Domänenbeitritt umbenannt werden, jedoch ohne restart weil sonst der rest des Skriptes nicht ausgeführt wird (rest = teil mit domain beitritt).
kpunkt
kpunkt 04.09.2023 um 13:01:06 Uhr
Goto Top
Mach halt Schritt für Schritt.
Irgendwas stimmt mit dem Computernamen nicht.
Habe ich vorher schon gefragt:
Wie sieht $NeuerComputername denn wirklich aus? Da ist ja der Fehler.
8439609403
8439609403 04.09.2023 um 13:06:04 Uhr
Goto Top
Zitat von @kpunkt:

Mach halt Schritt für Schritt.
Irgendwas stimmt mit dem Computernamen nicht.
Habe ich vorher schon gefragt:
Wie sieht $NeuerComputername denn wirklich aus? Da ist ja der Fehler.

Der Computername Soll so heissen "DEDTR90WS85D". Der Name stimmt schon, was nicht klappt ist dass der Name ohne neustart geändert wird, sodass der Domäne beigetreten werden kann.
kpunkt
kpunkt 04.09.2023 um 13:07:12 Uhr
Goto Top
Nicht wie er heißen soll, sondern wie deine Variable tatsächlich aussieht.
Aber okay...dann halt nicht.
Ich bin raus.
8439609403
8439609403 04.09.2023 um 13:12:18 Uhr
Goto Top
Zitat von @kpunkt:

Nicht wie er heißen soll, sondern wie deine Variable tatsächlich aussieht.
Aber okay...dann halt nicht.
Ich bin raus.

Ich habe doch mein Skript oben komplett offen gelegt, ich weiss nicht was du damit "sondern wie deine Variable tatsächlich aussieht" meinst.
Bingo61
Bingo61 04.09.2023 um 13:13:38 Uhr
Goto Top
Ist zwar schon auf gelöst,
aber Anmerkung habe ich dennoch:

Wenn man einen PC unter Windows neuen Namen gibt, möchte das Windows einen Reboot.
Machst denn nicht: kein neuer Name, richtig?
Kann es sein das da dein Denkfehler liegt?
Ist nur so Gedanke.
8439609403
8439609403 04.09.2023 um 13:17:21 Uhr
Goto Top
Zitat von @Bingo61:

Ist zwar schon auf gelöst,
aber Anmerkung habe ich dennoch:

Wenn man einen PC unter Windows neuen Namen gibt, möchte das Windows einen Reboot.
Machst denn nicht: kein neuer Name, richtig?
Kann es sein das da dein Denkfehler liegt?
Ist nur so Gedanke.

Ja das ist es ja, gibt es aber denn keine Möglichkeit in einer Session ohne reboot den Namen und die Domäne per Skript zu ändern?
Kraemer
Kraemer 04.09.2023 um 13:18:43 Uhr
Goto Top
Das Problem steht doch in der Meldung

You have exceeded the maximum number of computer accounts you are allowed to create in this domain.
Kraemer
Kraemer 04.09.2023 um 13:19:22 Uhr
Goto Top
Zitat von @8439609403:

Ja das ist es ja, gibt es aber denn keine Möglichkeit in einer Session ohne reboot den Namen und die Domäne per Skript zu ändern?

dazu hatte ich dir auch schon was geschrieben
8439609403
8439609403 04.09.2023 um 13:22:18 Uhr
Goto Top
Zitat von @Kraemer:

Zitat von @8439609403:

Ja das ist es ja, gibt es aber denn keine Möglichkeit in einer Session ohne reboot den Namen und die Domäne per Skript zu ändern?

dazu hatte ich dir auch schon was geschrieben

ich habe ja den parameter "newname" bereits hinzugefügt.

"Rename-Computer -NewName $NeuerComputername -Force"

Die meldung "You have exceeded the maximum number of computer accounts you are allowed to create in this domain." kommt, weil die namensänderung nicht greift und der ursprüngliche PC name nicht in die AD eingetragen werden kann sondern nur fest definierte namen, wie der name der eigentlich durch mein skript vergeben werden soll bestehend aus "DEDT" und der Seriennummer
kpunkt
kpunkt 04.09.2023 um 13:45:03 Uhr
Goto Top
Leerzeichen gehen halt nicht im Computernamen.
Man müsste sich halt die Variablen ansehen. Und zwar so, wie die Werte tatsächlich aussehen und nicht wie sie aussehen sollten...
Man käme wohl auch drauf, wenn man die Befehle mal einzeln durchgehen würde....

Oder ums noch deutlicher zu machen...wieviele Stellen hat denn die $serialNumber?
$NeuerComputername = $serialNumber +"DEDT"   
Wüde das Problem auch aufzeigen. Aber halt nur, wenn man sich die Variable auch mal anzeigen lassen würde...
Kraemer
Kraemer 04.09.2023 um 15:10:30 Uhr
Goto Top
lol der TO hat aufgegeben
silent-daniel
silent-daniel 05.09.2023 um 06:49:03 Uhr
Goto Top
Geh mal alles Schritt für Schritt durch:

1. Lass die die SN anzeigen:
Get-WmiObject -Class Win32_BIOS

2. prüf ob er es richtig zusammensetzt
$Seriennummer = (Get-WmiObject -Class Win32_BIOS).SerialNumber
$NeuerComputername = "DEDT" + $Seriennummer
Write-Host $Seriennummer

...

gruß sd