Se fai il sistemista e ti diverti a fare reportistica ed incrociare dati tra gli applicativi aziendali e Active Directory, questo è lo script che fa per te.
Lo script powershell sfrutta i seguenti CMDlet:
– DBAtools (https://dbatools.io/)
– GetADUSER di Microsoft (https://4sysops.com/wiki/how-to-install-the-powershell-active-directory-module/)
Lo script è stato customizzato per essere configurato facilmente e l’ho creato per le mie esigenze.
In breve lo script:
– Legge una tabella con le utenze AD;
– Crea se non esiste la Tabella coi dati di AD
– Interroga AD e memorizza le info in una nuova tabella
Io metto sempre Integrated Security = True per usare l’identity SQL di chi esegue lo script.
$SQLDB = 'IP DEL DB' $DB = 'NomeDatabase' $TABLE = 'Tabella da scrivere' $TABLESRC = 'Tabella da leggere' $connString = "Server = " + $SQLDB + "; Database = " + $DB + "; Integrated Security = True" $QueryText = "SELECT [UTENZAACTIVEDIRECTORY] FROM " + $DB + ".[dbo]." + $TABLESRC $SqlConnection = new-object System.Data.SqlClient.SqlConnection $SqlConnection.ConnectionString = $connString $SqlCommand = $SqlConnection.CreateCommand() $SqlCommand.CommandText = $QueryText $DataAdapter = new-object System.Data.SqlClient.SqlDataAdapter $SqlCommand $dataset = new-object System.Data.Dataset $DataAdapter.Fill($dataset) $dataset.Tables[0] | ForEach { $DataTable = Get-ADUser -identity $_.matricola.Trim() -Properties * |select samaccountname , surname, givenname, mail ,department, enabled |Where-Object {$_.LastLogonDate -ge (get-date).adddays(-400)} | ConvertTo-DbaDataTable Write-DbaDataTable -SqlInstance $SQLDB -Database $DB -InputObject $DataTable -Table $TABLE -AutoCreateTable }
Ovviamente è un esempio, con Get-ADUser possono essere fatte centinaia di altre operazioni. Inoltre lo script può essere schedulato su un server, eseguirlo in interattivo o inserirlo in un JOB SQL per un report.