eccoci qui con un altro articolo interessante che vede protagonisti excel e gli script.
Nello scorso articolo "Come (ciclare su) leggere un file EXCEL con VBSCRIPT" abbiamo visto come è possibile leggere un file di excel da vbscript e lanciare dei comandi riga per riga, con i valori delle celle come parametri.
Oggi vediamo come fare la stessa cosa... ...con Powershell!
Bando alle ciance, ecco cosa faremo:
- Creeremo un file excel con gli utenti che ci interessa usare
- Cicleremo (loop) sul file excel per ottenere ogni utente
- Interpelleremo il dominio Active Directory per ottenere informazioni su ciascun utente: vedremo l'ultima volta che l'utente ha cambiato la password
Il file excel users.xlsx
ecco come si presenta il nostro file (l'ho riciclato dall'altro articolo):
come vedete, nella colonna E troviamo lo username degli utenti.
Lo script
import-module activedirectory #importo
il modulo Active Directory
$ExcelObject = new-Object -comobject Excel.Application #
creo l'instanza di programma excel
$ExcelObject.visible = $false #
non voglio che la finestra di excel sia visibile
$ExcelObject.DisplayAlerts =$false # non voglio vedere alerts o messaggi da excel.
$strPath1="C:\Users\DiegoC\Desktop\TMP\Private\SCRIPTOMANE\2018-09-25_powershell_excel\users.xlsx" # definisco il percorso del file excel.
if (Test-Path $strPath1) { #controllo che il file ESISTA
$ActiveWorkbook = $ExcelObject.WorkBooks.Open($strPath1) #
apro il workbook excel.
$ActiveWorksheet = $ActiveWorkbook.Worksheets.Item(1) #
seleziono il foglio numero 1
} else {
echo "ORRORE: il file excel non esiste"; # altrimenti scrivo un messaggio simpatico....
}
$intRow = 2 # parto dalla riga 2, perchè la prima contiene le
intestazioni
Do {
$UserName = $ActiveWorksheet.Cells.Item($intRow, 5).Value() #leggo lo username dalla
quinta colonna (E)
$FName = $ActiveWorksheet.Cells.Item($intRow, 1).Value() #leggo il full Name dalla
prima colonna (A)
$obj = get-aduser $UserName
-Properties
PasswordLastSet # ottengo da AD le proprietà
dell'utente, incluso quando ha cambiato la pw l'ultima volta.
write-host "l'utente " $FName
" ha cambiato la password il " $obj.PasswordLastSet
$intRow++
} While ($ActiveWorksheet.Cells.Item($intRow,1).Value() -ne $null) #continuo fino a che non trovo una riga vuota.
$ExcelObject.Workbooks.Close() # chiudo il file
$ExcelObject.Quit() # chiudo excel
Ad esempio, se ci trovassimo su un server Exchange (o se stessimo interagendo con il server dal nostro client attraverso una session remota di Powershell) potremmo lanciare dei comandi per ogni casella di posta o utente riportato nel nostro file...
A voi la scelta dei comandi da far eseguire alla nostra amata Powershell, con i dati che leggete da excel!
Happy Scripting!
Nessun commento:
Posta un commento
I commenti sono soggetti a moderazione, prima di essere pubblicati.
Qualsiasi contenuto illecito, immorale o che io ritenga (arbitrariamente) offensivo od inappropriato, verrà cancellato.