Gå til innhold

Anbefalte innlegg

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 av trrunde
Lenke til kommentar
Videoannonse
Annonse

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

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

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

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 konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...