2017-11-20 6 views
1

Ich erstelle ein PowerShell-Skript, um Benutzerkonten zu kopieren. Das Skript funktioniert perfekt auf meiner Test Server 2016 VM. Es funktioniert auch in unserer Arbeitsumgebung auf einem Windows 10 PC eines Kollegen, aber ich kann es nicht auf meinem lokalen Computer ausführen. Es gibt den folgenden Fehler:Fehler: "New-ADUser: Der Objektname hat eine ungültige Syntax"

 
New-ADUser : The object name has bad syntax 
At line:155 char:1 
+ New-ADUser -Name $New_DisplayName @params 
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
    + CategoryInfo   : NotSpecified: (CN=cnelson test...ctions,DC=local:String) [New-ADUser], ADException 
    + FullyQualifiedErrorId : ActiveDirectoryServer:8335,Microsoft.ActiveDirectory.Management.Commands.NewADUser 

Add-ADGroupMember : Cannot find an object with identity: 'cnelsontest1' under: 
'DC=,DC=local'. 
At line:159 char:29 
+ Add-ADGroupMember -Members $Username.Text 
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
    + CategoryInfo   : ObjectNotFound: (cnelsontest1:ADPrincipal) [Add-ADGroupMember], ADIdentityNotFoundException 
    + FullyQualifiedErrorId : SetADGroupMember.ValidateMembersParameter,Microsoft.ActiveDirectory.Management.Commands.AddADGroupMember 
$params = @{'SamAccountName' = $Username.Text; 
      'Instance' = $AD_Account_To_Copy; 
      'DisplayName' = $New_DisplayName; 
      'GivenName' = $FirstName.Text; 
      'Path' = $New_Path; 
      'SurName' = $LastName.Text; 
      'ChangePasswordAtLogon' = $true; 
      'Enabled' = $true; 
      'UserPrincipalName' = $Username.Text; 
      'AccountPassword' = $New_Pass; 
      'EmailAddress' = $Username.Text + '@azcorrections.gov'; 
      'HomePage' = $HomePage.HomePage; 
      'Description' = $NewDescription.Description; 
      'Office' = $NewOffice.Office; 
      'StreetAddress' = $NewStreet.StreetAddress; 
      'City' = $NewCity.City; 
      'State' = $NewState.State; 
      'PostalCode' = $NewPostalCode.PostalCode; 
      'Title' = $NewTitle.Title; 
      'Department' = $NewDepartment.Department; 
      'Company' = $NewCompany.Company; 
      'ScriptPath' = $NewScript.ScriptPath; 
      'OfficePhone' = $PhoneNumber.text; 
      } 

New-ADUser -Name $New_DisplayName @params 

Full Script link

Ich PSVersion 5.1.150

Irgendwelche Ideen, laufen, was ich bin fehlt und warum ich in der kommenden Error? Ich weiß nicht, worauf es sich bezieht, und auch nicht, warum es auf einem Computer eines Kollegen funktioniert, aber nicht auf meinem eigenen.


Edit: Wert von $params zum Zeitpunkt des Fehlers:

 
Name     Value 
----     ----- 
AccountPassword  System.Security.SecureString 
Description   Chris Nelson Test Account 
UserPrincipalName  cnelsontest1 
HomePage    http://... 
DisplayName   cnelson test1 
SamAccountName  cnelsontest1 
ScriptPath 
EmailAddress   [email protected] 
Office    test 
GivenName    cnelson 
Title     SYSTEMS/LAN ADMR 
Company 
OfficePhone   555-1234 
StreetAddress   Sesame Street 
PostalCode   54321 
SurName    test1 
State     candid 
Department   IT 
ChangePasswordAtLogon True 
Path     cnelson,OU=IT_TECHSRVS,OU=Information Technology,OU=ADMIN,OU=CENT_OFF,DC=example,DC=com 
City     
Enabled    True 
Instance    CN=test\, cnelson,OU=IT_TECHSRVS,OU=Information Technology,OU=ADMIN,OU=CENT_OFF,DC=example,DC=com 

Ich $New_Path wie diese Berechnung:

$New_Path = (Get-ADUser ($UsernameCopy.Text)).DistinguishedName -replace '^.*?,', '' 
+0

Versuchen Hinzufügen des 'Name' zu ​​Ihrem params' ‚Name‘ = $ New_DisplayName; 'und dann Aufruf mit nur Splatting : 'New-ADUser @ params' –

+0

' versuche {New-ADUser ...} fange {$ params} '. Stellen Sie sicher, dass alle Parameter den Wert haben, den Sie erwarten. –

+0

@JamesC. Das sollte keinen Unterschied machen. –

Antwort

0

Die Art und Weise Sie den gemeinsamen Namen entfernen Anteil aus dem Wert von $AD_Account_To_Copy ist fehlerhaft. -replace '^.*?,', '' wird alles bis zum ersten Komma in der Zeichenfolge entfernen. Wenn der allgemeine Name selbst ein Komma enthält (wie in CN=test\, cnelson,OU=...), wird die Ersetzung cnelson, nicht entfernen. Ändern Sie Ihre regulären Ausdruck mit einer positiven vorwärtsgerichtete Behauptung, so dass alles, was vor dem ersten OU= entfernt wird:

$New_Path = $AD_Account_To_Copy -replace '^.*?,\s*(?=ou=)', '' 
+0

@AnsgarWichers Ich habe die betreffende Zeile geändert in: '$ New_Path = (Get-ADUser ($ UsernameCopy.Text)). DistinguishedName -replace '^. *?, \ S * (? = Ou =)', '' und bekomme eine ganze Reihe neuer Fehler. [Neue Fehlermeldungen] (https://pastebin.com/cCD6K1tB) – cnelson

+0

@cnelson Diese Fehler haben nichts mit dem in dieser Frage beschriebenen Problem zu tun. Wenn Sie eine neue oder folgende Frage haben: Stellen Sie eine neue Frage. Vermeiden Sie es, relevante Informationen extern zu veröffentlichen. Wenn Sie eine Antwort gefunden haben, die das Problem von Ihrer aktuellen Frage gelöst hat, betrachten Sie [diese Antwort akzeptieren] (https://meta.stackoverflow.com/a/5235). –