현재 CSV 사용자 목록을 Active Directory로 가져 오기 위해 Dsadd 명령을 사용해야하는 클래스에 대한 할당 작업을하고 있습니다. ,Powershell 스크립트가 명령을 호출하지 않습니다.
하는 dsadd 사용자 "CN = Abruaba로드 리 게스, DC = CoolDomain, DC = 도메인 : 나는 그것을 실행하면
$CSV = Import-Csv -Delimiter "," -Path "$PWD\TestCSV.csv"
foreach ($user in $CSV)
{
$Member = $User.Title + ","
$Domain = $User.Domain + ", DC=Domains" + ", DC=com" + "`""
$Name = $User.Firstname + " " + $User.Lastname + ","
$Password = $User.Password
write-host Dsadd user `"CN=$Name"" DC=$Domain -pwd $User.Password -memberof `"CN=$Member" CN=Users, DC=$Domain"
}
, 그것은이 (가) PowerShell 창에 다음을 인쇄합니다
이 내 스크립트입니다 DC = 컴 CN = gk_students "-memberof -pwd 암호
는"CN 사용자, DC = CoolDomain, DC = 도메인, = DC = COM "
이것은로, 그 이름의 사용자를 추가 할 수있는 올바른 구문입니다 그 행을 단독으로 호출하면 작동합니다. 내가 명령이 dsadd 실패 "라는 실패 쓰기 호스트 제거한다면 : 'DC = 도메인,'알 수없는 매개 변수입니다
어떤 조언 감사합니다 사전에
편집 :.?. 나는 내 스크립트를 가지고 그러나이 스크립트가 실행될 수있는 가장 좋은 방법이라고 생각하지 않습니다.
마지막 줄을 변경하고 두 개 더 추가했습니다. 호스트에 쓰는 대신 변수에 쓴 후 그 결과를 한 줄에 넣으면 간단히 변수와 성공을 불러 일으켰습니다! 작동했습니다 :
$Execute = write-output Dsadd user `"CN=$Name"" DC=$Domain -pwd $User.Password -memberof `"CN=$Member" CN=Users, DC=$Domain"
$Fields="{0} {1} {2} {3} {4} {5} {6} {7}" -f $Execute
Invoke-Expression $Fields
powershell을 사용하여이 작업을 수행하는 더 좋은 방법이 있습니까?
감사합니다. 훨씬 의미가 있습니다. 형식 연산자가 존재한다는 것을 전혀 알지 못했습니다. – user3291398
문자열을 포맷하기 위해'-f'를 사용한다면 작은 따옴표를 사용하지 말고 별도의 이스케이프 문자를 사용하지 않는 것이 어떻습니까? 예 : CN = {0}, CN = 사용자, {1} "" "대신 CN = {0}, CN = 사용자, {1}" ' –