2014-09-18 1 views
0

CSV를 가져 오는 작은 스크립트를 만든 다음 암호가 만료되지 않도록 암호 AD를 호출 한 다음 변경합니다. 기본 도메인 정책에 빠지기를 원하면 다음 로그인시 암호를 변경할 필요가 없습니다. 저는 개별적으로 작동하도록했습니다,하지만 ForEach 변수를 추가하려고하면 작동하지 않습니다. 여기에 내 대본이있다. 그것은 CSV의 각 엔트리를 폴링 할 수 있지만, QAD에서 $ entry 변수로 무엇인가를하려고하면 null이됩니다. 나는 powershell에서 최고가 아니니, 그래서 너를 권유한다.QAD를 사용하여 Powershell에서 변수를 envoke하고 Null 예외가 발생했습니다.

Import-Module ActiveDirectory 
Add-PSSnapin Quest.ActiveRoles.ADManagement 

$list = Import-csv “password.csv” 
ForEach($entry in $list) 
{ 
Set-QADUser $entry -UserMustChangePassword $True 
Start-Sleep -Sec 1 
Set-QADUser $entry -UserMustChangePassword $False 
} 

답변

1

$entry에는 CSV 파일의 헤더를 기반으로하는 속성이있는 개체가 포함됩니다.

Import-csv “password.csv” 

단순히 입력하면 위의 개체가 표시됩니다. 하나의 열만있는 경우에도 속성을 호출해야합니다.

ForEach 루프에서는 $entry.Username으로 전화해야합니다. 대답은 귀하의 csv 파일에 있습니다. 파일이 하나 개의 열을 포함하는 경우, 당신이 뭔가를 할 수 있습니다 :

$list = Get-Content | Select-Object -Skip 1 

Skip 1는 CSV 헤더를 무시합니다. 또는 다음과 같이 할 수 있습니다.

$list = Import-csv “password.csv” | Select-Object -ExpandProperty UserName 

이 모든 것이 가정입니다. CSV "password.csv"의 내용에 대한 대답이 들어 있습니다.

+0

매트 - 감사합니다. 내 문제일지도 모른다. CSV에는 사용자 이름 목록 만 있었으며 사용자 이름이 무엇인지 정의 할 헤더가 없습니다. 그런 작은 세부 사항. 나는 그 장면을 줄 것이고 그것이 효과가 있다면 답을 알릴 것이다. –

관련 문제