94652
Goto Top

Windows 8 Enterprise Client per Script (PS1 od. VBS) zu einer Domäne hinzufügen

Hallo Zusammen

Mein Problem ist, dass meine Scripts unter Windows 8 Enterprise nicht mehr korrekt arbeiten. Mit Windows 7 Enterprise funktionieren die Scripts fehlerfrei.

Für Eure Mithilfe zur Lösung danke ich schon mail im Voraus. Es grüsst Euch freundlich, Netzmeister-CH

back-to-topPowerShell Script

Param([bool]$_dbg=$false)
$Credential = New-Object -TypeName System.Management.Automation.PSCredential -ArgumentList @('DOMAIN1\username', (ConvertTo-SecureString -AsPlainText -Force 'password01' ))  
Add-Computer -DomainName DOMAIN1 -OUPath 'OU=OU1,OU=OU2,DC=DOMAIN,DC=1' -PassThru -Verbose -Credential $credential   

back-to-topFehlermeldung
AUSFÜHRLICH: Ausführen des Vorgangs "Domäne "DOMAIN1" beitreten" für das Ziel "COMPUTER01".
Add-Computer : Fehler beim Beitreten des Computers "COMPUTER01" aus seiner aktuellen Arbeitsgruppe "WORKGROUP" zur Domäne "DOMAIN1". > Fehlermeldung:
Zugriff verweigert.
In C:\pfad_zum_script\dj.ps1:4 Zeichen:1
+ Add-Computer -DomainName DOMAIN1 -OUPath 'OU=OU1,OU=OU2,DC=DOMAIN...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  + CategoryInfo          : OperationStopped: (COMPUTER01:String) [Add-Computer], InvalidOperationException
  + FullyQualifiedErrorId : FailToJoinDomainFromWorkgroup,Microsoft.PowerShell.Commands.AddComputerCommand

HasSucceeded ComputerName
------------ ------------
False        COMPUTER01

back-to-topHinweis
Das PowerShell Script wird über ein Batch mit folgendem Befehl:
call "C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe" C:\pfad_zum_script\dj.ps1
aufgerufen.

back-to-topVBScript

Const JOIN_DOMAIN             = 1
Const ACCT_CREATE             = 2
Const ACCT_DELETE             = 4
Const WIN9X_UPGRADE           = 16
Const DOMAIN_JOIN_IF_JOINED   = 32
Const JOIN_UNSECURE           = 64
Const MACHINE_PASSWORD_PASSED = 128
Const DEFERRED_SPN_SET        = 256
Const INSTALL_INVOCATION      = 262144
strDomain   = "DOMAIN1"  
strOU       = "OU=Kursraum,OU=OU1,OU=OU2,DC=DOMAIN,DC=1"  
strPassword = "password01"  
strUser     = "username"  
Set objNetwork = CreateObject("WScript.Network")  
strComputer = objNetwork.ComputerName
Set objComputer = _
    GetObject("winmgmts:{impersonationLevel=Impersonate}!\\" & _  
    strComputer & "\root\cimv2:Win32_ComputerSystem.Name='" _  
    & strComputer & "'")  
ReturnValue = objComputer.JoinDomainOrWorkGroup(strDomain, _
    strPassword, _
    strDomain & "\" & strUser, _  
    strOU, _
    JOIN_DOMAIN + ACCT_CREATE)

back-to-topFehlermeldung
Zugriff verweigert

back-to-topHinweis
Das VBScript wird über ein Batch mit folgendem Befehl:
start /wait c:\Windows\System32\wscript.exe //I c:\pfad_zum_script\dj.vbs
aufgerufen. Im Batch frage ich die %ERRORLEVEL%-Codes ab.

back-to-topKlassischer Weg

Wenn ich das Gerät von Hand in die Domäne aufnehme (identische Credentials) dann funktioniert es einwandfrei.

back-to-topServerumgebung

  • 3 Domänen-Controller (Windows Server 2008 R2, ServicePack 1)

back-to-topBemerkungen

  • Ich habe auch schon probiert, die Scripts ohne Angabe der OU auszuführen. Die Fehlermeldung bleibt immer die Gleiche. Passwort und Benutzername sind korrekt face-wink
  • Das PowerShell-Script wird unter einem Benutzer mit Admin-Rechte ausgeführt wird. Die Benutzerkontosteuerung habe ich "ausgeschaltet" und in der Registry unter HKLM\SOFTWARE\Microsoft\PowerShell\1\ShellIds\Microsoft.PowerShell\ExecutionPolicy den Wert RemoteSigned eingetragen.

Content-Key: 201591

Url: https://administrator.de/contentid/201591

Printed on: April 20, 2024 at 00:04 o'clock

Member: DerWoWusste
DerWoWusste Feb 12, 2013 at 15:33:23 (UTC)
Goto Top
Hi.

Führst Du die Skripte von Hand aus? Per Rechtsklick "ausführen als Administrator"?
Mitglied: 94652
94652 Feb 13, 2013 at 05:50:35 (UTC)
Goto Top
Hi DerWoWusste

face-wink

Das Script wird per Batch ausgeführt (siehe oben). Ich habe aber vergessen zu erwähnen, dass das Script unter einem Benutzer mit Admin-Rechte ausgeführt wird. Die Benutzerkontosteuerung habe ich "ausgeschaltet" und in der Registry unter HKLM\SOFTWARE\Microsoft\PowerShell\1\ShellIds\Microsoft.PowerShell\ExecutionPolicy den Wert RemoteSigned eingetragen.
Mitglied: 94652
94652 Feb 13, 2013 updated at 07:39:59 (UTC)
Goto Top

back-to-topLösung

Der Benutzer Exotic Hadron hat mir bei der Lösung des Problems geholfen. Vielen Dank!

Das Ausschalten der Benutzerkontosteuerung alleine reicht nicht (siehe oben)! Zusätzlich muss in der Registry SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System beim Name EnableLUA den Wert auf 0 setzen und den Computer neu booten. Erst mit diesem Registry-Hack wird die Benutzerkontosteuerung komplett ausgeschaltet.

Noch einen weiteren Tipp gegeben, welchen ich aber noch nicht überprüft habe:
What if you run this PowerShell script to run your script elevated: Re-launch Powershell Script Elevated
Alternatively, use the following script: A self elevating PowerShell script
Or, you can do it in a single line: Start-Process "$psHome\powershell.exe" -Verb Runas -ArgumentList '-command "Get-Process"'
Member: DerWoWusste
DerWoWusste Feb 13, 2013 at 07:19:39 (UTC)
Goto Top
Also der zweite Tipp ist die elevation von der ich sprach. Und der erste darf bei abgeschalteter UAC keinen Unterschied machen.

Etwas seltsam, das Ganze. Mach Dich aber mal über die UAC schlau, den Sätze wie
habe aber vergessen zu erwähnen, dass das Script unter einem Benutzer mit Admin-Rechte ausgeführt wird.
Haben seit der UAC keine Relevanz mehr.
Mitglied: 94652
94652 Feb 13, 2013 updated at 08:11:27 (UTC)
Goto Top
Komisch ist nur, dass ich vorgängig ein anderes PowerShell-Script (Computername umbenennen) erfolgreich ausgeführt habe.

In Bezug auf die UAC habe ich den Lösungstext angepasst. Vielen Dank für Deine Hinweise.