2012-11-28 3 views
3

우리는 우리의 Active Directory에서 학생 사용자를 자동으로 생성하기 위해 powershell을 사용하고 있습니다. 사서함 사용 설정을 제외한 모든 작업을 수행 할 수 있습니다. 중고등 학생에게만 이메일 주소를 제공합니다. 그래서 스크립트에서 csv를 읽고 중등 학생들에게만 사서함을 사용하게하려고합니다. 우리 중등 학교는 모두 100 개 미만의 캠퍼스 번호를 가지고 있으므로 스크립트에 ForEach를 사용하도록 시도한 다음 $ _. extensionAttribute1 (캠퍼스 번호가있는 CSV의 열)이 100보다 작 으면 계정에서 메일 사용 가능하도록 설정합니다. . 내가 겪고있는 문제는 첫 번째 사용자 만 처리하고 스크립트를 종료한다는 것입니다. 나는 그것을 CSV의 각 행을 통해 실행하고 싶습니다. 여기에 내 대본이있다.csv를 사용하는 ForEach 내부의 문

add-pssnapin Microsoft.Exchange.Management.PowerShell.E2010 

Import-CSV C:\scripts\updateuser.csv | ForEach { 
    $campus =$_.extensionAttribute1 
    If ($campus -lt '100') { 
    Enable-Mailbox -Identity $_.sAMAccountName -Database NISDSRV6DB1 
    }} 

전체 CSV를 통해 실행할 수 있도록 도움을 주시면 대단히 감사하겠습니다. 도움을 주셔서 감사합니다.

EDIT ... 저는 CSV 파일을 어지럽 혀서 재미있는 결과를 얻었습니다. 이 스크립트는 아무 것도 표시 할 수있는 유일한 방법은 extensionAttribute1 필드가 1로 채워 경우 내가 미만 100

+0

구문이 정확합니다. 실제로 생각대로 행동하고 있습니까? if 문 앞에 메시지를 작성하여 ForEach-Object 루프 내에서 실행되는 횟수를 디버그하십시오. – dugas

+0

코드가 정상적으로 보입니다. CSV 파일을 재생산하거나 적어도 더미 CSV 파일을 함께 넣고 테스트하는 것이 좋습니다. 그 반대. 현재 CSV에서 첫 번째 행을 처리 한 후 루프가 중단되는 것으로 의심됩니다. – nimizen

답변

0

'extensionAttribute1'값은 'if'문에서 정수로 올바르게 캐스팅되지 않습니다. 이것을 시도하십시오 :

add-pssnapin Microsoft.Exchange.Management.PowerShell.E2010 

Import-CSV C:\scripts\updateuser.csv | ForEach { 
    $campus =$_.extensionAttribute1 -as [Int] 
    if ($campus -lt '100'){ 
     Write-Host $_.sAMAccountName    
     Enable-Mailbox -Identity $_.sAMAccountName -Database NISDSRV6DB1 
    } 
} 
+0

나는 이해한다. 기밀 학생 정보이므로 입력 데이터를 제공 할 수는 없습니다. 귀하의 Write-Host 제안을 테스트하고 내가 얻은 결과를 확인하겠습니다. 불행히도 오늘 저는 작성 파일에 중학교 1 학년 학생 만 있었기 때문에 실제 CSV를 테스트 할 수 없었습니다. 도와 줘서 고마워. – user1861252

+0

그게 전부입니다. CSV에서 int로 특성을 읽지 않았습니다. 나는 내 스크립트를 업데이트했으며 예상대로 당긴다. 도와 주셔서 정말 감사합니다! – user1861252

0

변수 할당의 끝에 ;를 추가보십시오 모든 사용자를 얻기 위해 노력하고 있었다

$campus =$_.extensionAttribute1;

+0

제안 해 주셔서 감사하지만 세미콜론으로 인해 스크립트가 실패했습니다. 나는 그것을 고맙게 생각한다. – user1861252

0

나는 그것을 알아 냈습니다. 보조 캠퍼스 번호는 1, 7, 10, 42, 43, 44, 45, 46입니다. 번호가 하나 (이상) 인 경우보다 적게 만 인식합니다. 각 숫자 앞에 0을 입력하면 3 자리 숫자로 인식됩니다. 001, 007, 010, 042, 043, 044, 045 및 046이 작동하고 100 미만으로 인식됩니다. 아직 추론을 찾지 못했지만 이제 CSV 내보내기 프로세스를 조정하여이 번호 체계를 고려해야합니다. .

+0

업데이트 해 주셔서 감사합니다. 답변을 수정했습니다 ... 내보내기 프로세스를 조정할 필요가 없습니다. – nimizen