2017-11-20 14 views
1

사용자 계정을 복사하기 위해 직장에서 PowerShell 스크립트를 만들고 있습니다. 스크립트는 내 테스트 Server 2016 VM에서 완벽하게 작동합니다. 동료 Windows 10 PC에서도 작업 환경에서 작동하지만 로컬 컴퓨터에서는 실행할 수 없습니다. 같은 내가 누락 무엇을오류 : "New-ADUser : 개체 이름의 구문이 잘못되었습니다."

 
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

내가 PSVersion 5.1.150

어떤 아이디어를 실행하는거야 왜 난이 가로 질러 간다 : 그것은 다음과 같은 오류를 반환 오류? 나는 그것이 무엇을 언급하는지 알지 못하며, 왜 한 동료 컴퓨터에서 작동하지만 내 컴퓨터에서는 작동하지 않습니다.


편집 :

 
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 

이 같은 $New_Path을 계산 해요 : : 오류시 $params

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

시도,'다음 바로 스플래으로 호출 :'New-ADUser @ params' –

+0

'시도 {새 ADUser ...} 잡기 {$ params}'. 모든 매개 변수에 예상 값이 있는지 확인하십시오. –

+0

@ JamesC. 그것은 차이를 가져서는 안됩니다. –

답변

0

당신이 일반적인 이름을 제거하는 방법 $AD_Account_To_Copy 값의 일부분에 결함이 있습니다. -replace '^.*?,', ''은 문자열의 첫 번째 쉼표까지 모두 제거합니다. 일반 이름 자체에 쉼표 (예 : CN=test\, cnelson,OU=...)가 있으면 교체로 cnelson,이 삭제되지 않습니다. 첫 번째 OU= 전에 모두 제거되도록하는 긍정적 예측 주장으로 정규 표현식을 개정 : 당신의 PARAMS의` '이름'= $ New_DisplayName에`Name`을 추가

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

@AnsgarWichers 해당 줄을 다음과 같이 변경했습니다 : $ New_Path = (Get-ADUser ($ UsernameCopy.Text)) DistinguishedName -replace '^. *?, \ s * (? = ou =)', ' '그리고 완전히 새로운 오류 세트를 얻고 있습니다. [새 오류 메시지] (https://pastebin.com/cCD6K1tB) – cnelson

+0

@cnelson 이러한 오류는이 질문에서 설명하는 문제와 관련이 없습니다. 새 질문 또는 후속 질문이있는 경우 : 새로운 질문을 게시하십시오. 오프 사이트에서 관련 정보를 게시하지 마십시오. 현재의 질문에서 답을 찾은 경우 : [해당 대답 수락] (https://meta.stackoverflow.com/a/5235)을 고려하십시오. –