PowerShell Scripts Mass_Scripts
Dette er alt scripts for massehåndtering av diverse ting. Det vil si hådtering av en større mengde objekter av gangen.
Se kommentarene i scriptene for mer informasjon.
MassCountEnabledDisabledUsers.ps1 |
---|
#Atle Holm - 2009
#Teller antall disabled og enabled brukere i domenet
$Enabled = 0
$Disabled = 0
Get-QADUser -enabled -sl 0 | %{$Enabled++}
Get-QADUser -disabled -sl 0 | %{$disabled++}
"There are $Enabled enabled users and $Disabled disabled users.`n" |
MassDisableUsers.ps1 |
---|
#Atle Holm - 2009
if (!$args) {
Write-Host "Dette scriptet brukes feks slik:"
Write-Host "MassDisableUsers.ps1 C:\users.txt"
Write-Host "Deretter vil scriptet spørre om nødvendige detaljer."
break
} elseif ($args -match "/\?{1}") {
Write-Host "Dette scriptet disabler alle brukere angitt i en tekstfil som argument."
Write-Host "Hver linje i tekstfilen må være av type domene\bruker"
break
}
if ($args.count -gt 1) {
Write-Host "Du kan bare supplere ett argument med dette scriptet."
Write-Host "Dette argumentet er da filen som lister brukerne scriptet skal behandle."
break
}
$users = Get-Content $args
foreach ($user in $users) {
disable-QADUser $user
} |
MassEnableUsers.ps1 |
---|
#Atle Holm - 2009
#Sjekker om det er lagt ved et argument, som trengs
if (!$args) {
Write-Host "Dette scriptet brukes feks slik:"
Write-Host "MassEnableUsers.ps1 C:\users.txt"
Write-Host "Deretter vil scriptet spørre om nødvendige detaljer."
break
} elseif ($args -match "/\?{1}") {
Write-Host "Dette scriptet disabler alle brukere angitt i en tekstfil som argument."
Write-Host "Hver linje i tekstfilen må være av type domene\bruker"
break
}
if ($args.count -gt 1) {
Write-Host "Du kan bare supplere ett argument med dette scriptet."
Write-Host "Dette argumentet er da filen som lister brukerne scriptet skal behandle."
break
}
$users = Get-Content $args
foreach ($user in $users) {
enable-QADUser $user
}
|
MassMoveUsers.ps1 |
---|
#Atle Holm - 2009
if (!$args) {
Write-Host "Dette scriptet brukes feks slik:"
Write-Host "MassMoveUsers.ps1 C:\users.txt"
Write-Host "Deretter vil scriptet spørre om nødvendige detaljer."
Write-Host "Feks hvor brukerne skal flyttes til."
break
} elseif ($args -match "/\?{1}") {
Write-Host "Dette scriptet kopierer alle brukere til en OU bestemt av bruker."
Write-Host "Hver linje i tekstfilen må være av type domene\bruker"
break
}
if ($args.count -gt 1) {
Write-Host "Du kan bare supplere ett argument med dette scriptet."
Write-Host "Dette argumentet er da filen som lister brukerne scriptet skal behandle."
break
}
$fullPath = Read-Host "Skriv inn domene og AD sti til OU der brukere skal flyttes (feks cust.providernet.no/Users)"
$users = Get-Content $args
foreach ($user in $users) {
move-QADObject $user -NewParentContainer $fullPath
}
|
MassRemoveUsers.ps1 |
---|
#Atle Holm - 2009
#Dette scriptet trenger tre filer tilgjengelige, en tekstfil for grupper, en for brukernes navn og en for logonnavn
#Det kan ikke eksistere blanke "characters" etter brukernavn eller andre navn i filene
$USERNAMESLOCATION = read-host "Skriv inn sti til tekstfil som inneholder brukernavn"
$USERNAMES = get-content $USERNAMESLOCATION 2>> $er
if ($?) {
foreach ($USERNAME in $USERNAMES) {
remove-QADObject $USERNAME
}
} else {
write-output "An error occured: $er"
}
|
RemoteMassAdmLocalAdmin.ps1 |
---|
#Atle Holm - 2009
Remove-Item RemoteMassAdmLocalAdmin.log 2>> $NULL
Function DeleteUser {
$SERVERS = Get-Content servers.txt
foreach ($SERVER in $SERVERS) {
$userNamesToDel = Get-Content users.txt
$group =[ADSI]"WinNT://$SERVER/Administrators,group"
foreach ($userNameToDel in $userNamesToDel) {
$group.remove("WinNT://$env:userdomain/$userNameToDel") 2>> $er
if ($?) {
Write-Host "User $userNameToDel deleted from local Administrators at $Server"
$date = date
Write-Output "$date User $userNameToDel deleted from local Administrators at $Server." >> RemoteMassAdmLocalAdmin.log
} else { Write-Host $er }
}
}
}
Function AddUser {
$SERVERS = Get-Content servers.txt
foreach ($SERVER in $SERVERS) {
echo "Trying: $SERVER"
$userNamesToAdd = Get-Content users.txt
$group =[ADSI]"WinNT://$SERVER/Administrators,group"
foreach ($userNameToAdd in $userNamesToAdd) {
echo "Adding: $userNameToAdd"
$group.add("WinNT://$env:userdomain/$userNameToAdd") 2>> $er
if ($?) {
Write-Host "User $userNameToAdd added to local Administrators at $Server."
$date = date
Write-Output "$date User $userNameToAdd added to local Administrators at $Server." >> RemoteMassAdmLocalAdmin.log
} else { Write-Host $er }
}
}
}
Function ListUsers {
$SERVERS = Get-Content servers.txt
foreach ($SERVER in $SERVERS) {
$group =[ADSI]"WinNT://$SERVER/Administrators,group"
$members = @($group.psbase.Invoke("Members"))
if ($?) {
Write-Host ""
Write-Host "*Listing users from local Administrators at `"$Server`" :"
Write-Host ""
$date = date
Write-Output "$date Users from local Administrators at $Server listed." >> RemoteMassAdmLocalAdmin.log
$members | foreach {$_.GetType().InvokeMember("Name", 'GetProperty', $null, $_, $null)}
} else { Write-Host $er }
}
}
if ($Args.count -eq 1) {
if ($Args -eq 1) { DeleteUser }
if ($Args -eq 2) { AddUser }
if ($Args -eq 3) { ListUsers }
} elseif ($Args.count -ne 1) {
Write-Output "Usage: RemoteMassAdmLocalAdmin.ps1 n"
Write-Output "n = 1 : Delete users listed in users.txt from local Administrators groups at servers listed in servers.txt"
Write-Output "n = 2 : Add users listed in users.txt to local Administrators groups at servers listed in servers.txt"
Write-Output "n = 3 : List users listed in local Administrators groups at servers listed in servers.txt"
}
#users.txt must include information of the type: domainname\userName
# domainname\userName
# domainname\userName
#servers.txt must include information of the type: machinename
# machinename
# machinename |
MassCreateUsers.ps1 |
---|
#Atle Holm - 2009
#Dette scriptet trenger en fil tilgjengelig, en tekstfil som inneholder informasjon av typen:
# Ola Nordmann ,brukerkonto,passord
#Scriptet krever Quests CMDlets
$OULOCATION = read-host "Skriv LDAP sti til OU hvor brukere opprettes(feks:company.com/UserOU)"
if (!$args[0]) {
$NAMESLOCATION = read-host "Skriv inn sti til tekstfil som inneholder brukernavn og logon navn"
} else {
$NAMESLOCATION = $args[0]
}
if ($?) {
$WORKBLOCK = get-content $NAMESLOCATION
foreach ($WORK in $WORKBLOCK) {
$NAME = $WORK.split(",")[0]
$USERNAME = $WORK.split(",")[1]
$PASSWORD = $WORK.split(",")[2]
write-host "Creating user $USERNAME `n Name: $NAME `n Password: $PASSWORD"
new-QADUser -name $NAME -DisplayName $NAME -ParentContainer $OULOCATION -SamAccountName $USERNAME -UserPassword $PASSWORD
Set-QADUser $USERNAME -userMustChangePassword $true
$date = date
write-output "$date Bruker $USERNAME opprettet med passord: $PASSWORD" >> MassCreateUsers.log
}
}
else {
write-output "An error occured: $er"
} |
MassCheckUserStatus.ps1 |
---|
#Atle Holm - 2009
#Checks if users are in AD and if they are enabled or disabled, if they are locked out or not.
if (!$args) {
Write-Host "Dette scriptet brukes feks slik:"
Write-Host "MassCheckUserStatus.ps1 C:\users.txt"
break
} elseif ($args -match "/\?{1}") {
Write-Host "Dette scriptet sjekker om alle brukere angitt i en tekstfil som argument er i AD og om de er enabled/disabled."
Write-Host "Også om de er låst ute eller ikke. Resultat pipes ut til AD.txt og NotAd.txt i stående katalog."
Write-Host "Hver linje i tekstfilen må vøre av type domene\bruker"
break
}
if ($args.count -gt 1) {
Write-Host "Du kan bare supplere ett argument med dette scriptet."
Write-Host "Dette argumentet er da filen som lister brukerne scriptet skal behandle."
break
}
$Users = Get-Content $args
$domene = Read-Host "Skriv inn domenet du operer i "
foreach ($User in $Users) {
$Container = Get-QADUser $User
if (($domene + "\" + $Container.SamAccountName) -eq $User) {
Write-Output "<-->" >> AD.txt
Write-Output ($Container.SamAccountName + " is in AD") >> AD.txt
if ($Container.AccountIsDisabled) {Write-Output "$User Account Disabled Status: Disabled" >> AD.txt}
if (!$Container.AccountIsDisabled) {Write-Output "$User Account Disabled Status: Not Disabled" >> AD.txt}
if ($Container.AccountIsLockedOut) {Write-Output "$User Account Locked Out Status: Locked Out" >> AD.txt}
if (!$Container.AccountIsLockedOut) {Write-Output "$User Account Locked Out Status: Not Locked Out" >> AD.txt}
Write-Output "<-->" >> AD.txt
Write-Output "<-->"
} else {
Write-Output "$User is not in AD" >> NotAD.txt
}
}
Write-Output "Se NotAD.txt og AD.txt for detaljer." |
|