trrunde Skrevet 13. mars 2012 Del Skrevet 13. mars 2012 (endret) Skal skifte passord på ca 300 brukere, har komt frem til at letteste metoden for å gjøre dette må være script og powershell. Har en csv fil med brukernavn/passord. Denne ser slik ut: UserName;Password bruker1;sdhgishgkifg bruker2;dghjusfgfg Har lagt en .ps1 fil som ser slik ut: $csv= Import-CSV c:\users\admtrondar\desktop\username-with-expired-password.csv echo $csv echo "Starter for loop" ForEach ($User in $csv) { echo "Brukernavn:" echo $User.UserName echo $User.Password } echo "ferdig med for loop" Den skriver ut innholdet i csv filen, dette ser korrekt ut, så skriver den ut "Brukernavn:" og helt på slutten skriver den at den er ferdig med loop. Problemet er at jeg ikke får innholdet i variablene UserName og Password, noen som ser hvor jeg feiler? Endret 13. mars 2012 av trrunde Lenke til kommentar
ignoreme Skrevet 13. mars 2012 Del Skrevet 13. mars 2012 Hei Flott å se at flere begynner å se mot Powershell for slike ting som dette. Dog, så vil ikke det du prøver på over her gjøre så veldig mye. Først, så vil du trenge AD modulen for powershell. Se her. Andre, bruk komma som skille i .csv fila de. Sørg også for at .csv fila de er i UTF8 format. (det samme må .ps1 fila de være) ##-------------------------------------------------------------------------- ## FUNCTION.......: changepw ## PURPOSE........: Endrer passord på brukere ## EXAMPLE........: changepw ## Requirements...: .csv fila må ha Username,password ##-------------------------------------------------------------------------- Function changepw { # Vi trenger Ad modulen til powershell. echo "Laster inn AD module. Vent litt" import-module ac* echo "ferdig med å laste module" # Vi kjører en foreach på alle elementene i .csv fila vår Import-CSV "c:\users\admtrondar\desktop\username-with-expired-password.csv" | ForEach{ $user = $_.UserName $PW = ConvertTo-SecureString -string $_.Password -asPlainText -Force Set-ADAccountPassword -Identity $user -NewPassword $PW -reset } } Koden over vil gjøre det du ønsker (har ikke testet den, men ser veldig riktig ut). Vi resetter passordet, og trenger derfor ikke å vite det gamle. last inn funksjonen over i PW, og kjør deretter funksjonen ved å skrive "changepw" (uten ""). Du må endre filstien til der du har .csv fila, også trenger du AD modulen. Ad--modulen blir automatisk lastet inn så fort du kjører funksjonen changepw. Foreslår at du finner en bruker du kan teste på først, får du kjører scriptet på alle:) Lenke til kommentar
NoBo Skrevet 13. mars 2012 Del Skrevet 13. mars 2012 Prøv med å angi -Delimiter ";" Dvs. $csv= Import-CSV -Delimiter ";" c:\users\admtrondar\desktop\username-with-expired-password.csv Lenke til kommentar
trrunde Skrevet 13. mars 2012 Forfatter Del Skrevet 13. mars 2012 Hei Flott å se at flere begynner å se mot Powershell for slike ting som dette. Dog, så vil ikke det du prøver på over her gjøre så veldig mye. Først, så vil du trenge AD modulen for powershell. Se her. Andre, bruk komma som skille i .csv fila de. Sørg også for at .csv fila de er i UTF8 format. (det samme må .ps1 fila de være) ##-------------------------------------------------------------------------- ## FUNCTION.......: changepw ## PURPOSE........: Endrer passord på brukere ## EXAMPLE........: changepw ## Requirements...: .csv fila må ha Username,password ##-------------------------------------------------------------------------- Function changepw { # Vi trenger Ad modulen til powershell. echo "Laster inn AD module. Vent litt" import-module ac* echo "ferdig med å laste module" # Vi kjører en foreach på alle elementene i .csv fila vår Import-CSV "c:\users\admtrondar\desktop\username-with-expired-password.csv" | ForEach{ $user = $_.UserName $PW = ConvertTo-SecureString -string $_.Password -asPlainText -Force Set-ADAccountPassword -Identity $user -NewPassword $PW -reset } } Koden over vil gjøre det du ønsker (har ikke testet den, men ser veldig riktig ut). Vi resetter passordet, og trenger derfor ikke å vite det gamle. last inn funksjonen over i PW, og kjør deretter funksjonen ved å skrive "changepw" (uten ""). Du må endre filstien til der du har .csv fila, også trenger du AD modulen. Ad--modulen blir automatisk lastet inn så fort du kjører funksjonen changepw. Foreslår at du finner en bruker du kan teste på først, får du kjører scriptet på alle:) Er klar over at koden ikke vil gjøre så mye, tok bort delen som faktisk gjør endringer i AD frem til jeg så at den skrev ut den infoen jeg forventet. planen var å legge en Set-QADuser -Identify $User.UserName -UserPassword $User.Password Har også en del i toppen på ps1 filen som laster inn AD modulen, tok ikke med den da jeg så at den delen fungerte, eneste som ikke funka var for løkken. Skal forsøke koden din i morgen på jobb og se hvordan denne funker Lenke til kommentar
trrunde Skrevet 14. mars 2012 Forfatter Del Skrevet 14. mars 2012 Viste seg å være ; som ødela for meg, skiftet over til , så funka det med en gang. Hele filen ble slik: Import-Module ac* $csv= Import-CSV c:\users\admtrondar\desktop\username-with-expired-password.csv ForEach ($User in $csv) { echo $User.UserName $PW = ConvertTo-SecureString -string $User.Password -asPlainText -Force Set-ADAccountPassword -Identity $User.UserName -NewPassword $PW -reset } Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå