Come configurare smartphone e PC. Portale informativo
  • casa
  • notizia
  • PowerShell riceve utenti dall'annuncio. Excel invece di PowerShell: query su AD e rapporti di sistema "al ginocchio"

PowerShell riceve utenti dall'annuncio. Excel invece di PowerShell: query su AD e rapporti di sistema "al ginocchio"

Nei commenti all'articolo precedente, hanno ricordato la contabilità in Excel anziché in 1C. Bene, controlliamo quanto conosci Excel. Oggi ti mostrerò come ottenere dati da Active Directory e lavorarci senza macro e PowerShell, solo con i normali meccanismi di Office. Ad esempio, puoi facilmente ottenere analisi sull'uso dei sistemi operativi nella tua organizzazione se non disponi già di qualcosa come Microsoft SCOM. Bene, o semplicemente riscaldati e distraiti dai copioni.


Naturalmente, puoi ottenere i dati come negli esempi seguenti con una sola riga in PowerShell. Ma, in primo luogo, PowerShell è troppo noioso e, in secondo luogo, Excel può aggiornare dinamicamente i dati: i documenti risultanti possono essere pubblicati sul Web e dimenticarsi di aggiornarli.

Per lavorare con i dati, utilizzerò il motore di Power Query. Per Office 2010 e 2013, dovrai installare il plug-in, questo modulo è già integrato in Microsoft Office 2016. Purtroppo l'edizione standard non ci basta, abbiamo bisogno di Professional.


Il meccanismo stesso è progettato per ricevere ed elaborare dati da una varietà di fonti, dal vecchio ODBC e file di testo a Exchange, Oracle e Facebook. Maggiori dettagli sul meccanismo e sul linguaggio di scripting integrato "M" sono già stati scritti su Habré, ma analizzerò un paio di esempi di utilizzo di Power Query per ottenere dati da Active Directory.

Riscaldamento: guarda quando i nostri utenti hanno effettuato l'accesso

La query al database del dominio stesso viene creata nella scheda "Dati - Nuova query - Da altre fonti - Da Active Directory".



Specificare l'origine dati.


Sarà necessario selezionare un nome di dominio, specificare i dati necessari per la connessione. Successivamente, scegliamo il tipo di oggetti, in questo esempio - utente. Sul lato destro della finestra di anteprima, la query è già in esecuzione e mostra un'anteprima dei dati.



Prepariamo la richiesta, ammiriamo l'anteprima.


È necessario preparare la query in anticipo facendo clic sul pulsante "modifica" e selezionando le colonne desiderate. In effetti, queste colonne sono classi e ciascuna di esse contiene un insieme di attributi specifici di un oggetto di Active Directory, ad eccezione della colonna principale. nome da visualizzare, che è esso stesso un attributo. Rimarrò con le classi utente, persona, superiore e securityPrincipal. Ora devi selezionare gli attributi necessari da ciascuna classe usando l'"estensione" - un'icona con due frecce nell'intestazione della colonna:

  • Classe utente ampliare scegliendo lastLogonTimestamp e Controllo dell'account utente;
  • in persona scegliere numero di telefono;
  • in superiorequandoCreato;
  • e dentro securityPrincipalSamAccountName.


Espandere la query.


Ora configuriamo il filtro: in particolare, per non ottenere account bloccati, è necessario che l'attributo userAccountControl abbia un valore di 512 o 66048. Il filtro potrebbe essere diverso nel tuo ambiente. Puoi leggere ulteriori informazioni sull'attributo nella documentazione Microsoft.



Applicazione di un filtro.


A volte Excel determina in modo errato il formato dei dati, in particolare i valori dell'attributo lastLogonTimestamp. Se una tale disgrazia si verifica improvvisamente, nella scheda "Converti" puoi impostare il formato corretto.

Ora la colonna userAccountControl dovrebbe essere rimossa: non è affatto necessaria nel display. E fai clic su "Scarica e chiudi".


Il risultato è stato un piatto, che resta un bel po' da ricordare. Ad esempio, rinomina le colonne in qualcosa di leggibile. E imposta aggiornamenti automatici dei dati.


L'aggiornamento automatico all'apertura di una tabella o per timeout è configurato nella scheda "Dati" in "Proprietà".



Impostazioni di aggiornamento dei dati.


Dopo aver completato l'impostazione dell'aggiornamento, puoi tranquillamente consegnare il tavolo al personale del dipartimento del personale o del servizio di sicurezza: fagli sapere chi e quando è entrato nel sistema.


Richiedi il codice nella lingua "M" sotto lo spoiler.

let Source = ActiveDirectory.Domains("domain.ru"), domain.ru = Source()[#"Categorie di oggetti"], user1 = domain.ru(), #"Remote Columns" = Table.RemoveColumns(user1,( "organizationalPerson", "shadowAccount", "posixAccount", "msExchOmaUser", "msExchBaseClass", "msExchIMRecipient", "msExchCertificateInformation", "msExchMultiMediaUser", "msExchMailStorage", "msExchCustomAttributes", "mailRecipient", "distinguishedName")), #"Espanso securityPrincipal" = Table.ExpandRecordColumn(#"Colonne remote", "securityPrincipal", ("sAMAccountName"), ("sAMAccountName"), #"Espanso in alto" = Table.ExpandRecordColumn(#"Expanded securityPrincipal ", "top ", ("quandoCreated"), ("quandoCreated")), #"Persona espansa" = Table.ExpandRecordColumn(#"In alto espansa", "persona", ("numero di telefono"), ("numero di telefono ")), #" Elemento utente espanso" = Tabella. ExpandRecordColumn(#"Elemento persona espanso", "user", ("lastLogonTimestamp", "userAccountControl" ), ("lastLogonTimestamp", "userAccountControl")), #"Righe filtro applicate" = Table.SelectRows(#"Elemento utente espanso", each ( = 512 o = 66048)), #"Tipo modificato" = Table. TransformColumnTypes (#"Righe filtrate",(("lastLogonTimestamp", type datetime))), #"Colonne rimosse1" = Table.RemoveColumns(#"Tipo modificato",("userAccountControl")) in #"Colonne rimosse1"

Creiamo una rubrica, ovvero cosa fare quando il portale aziendale non è amico di AD

Un'altra opzione per l'utilizzo di Excel in combinazione con Active Directory è la formazione di una rubrica basata sui dati di AD. È chiaro che la rubrica sarà aggiornata solo se il dominio è in ordine.


Crea una richiesta per un oggetto utente, espandi la classe utente in posta, e la classe persona in numero di telefono. Elimina tutte le colonne tranne nome distinto— la struttura del dominio ripete la struttura dell'impresa, quindi i nomi Unità organizzative abbinare i nomi dei dipartimenti. Allo stesso modo, i gruppi di sicurezza possono essere utilizzati come base per i nomi delle unità organizzative.


Ora dalla linea CN=Nome utente, OU=Reparto contabilità, OU=Dipartimenti, DC=dominio, DC=ruè necessario estrarre direttamente il nome del reparto. Il modo più semplice per farlo è utilizzare i delimitatori nella scheda Trasforma.



Estraiamo il testo.


Come delimitatori io uso UO= e ,OU=. In linea di principio, una virgola è sufficiente, ma sto andando sul sicuro.



Inserisci i separatori.


Ora usando il filtro puoi tagliare inutili tu come gli utenti bloccati e Costruito, imposta l'ordinamento e carica i dati nella tabella.



Vista del tavolo finale.

Report rapido sulla composizione delle postazioni di lavoro, senza introduzione di agenti e altri preparativi

Ora proviamo a creare una tabella utile ottenendo i dati sui computer. Facciamo un report sui sistemi operativi utilizzati dall'azienda: per questo creeremo una richiesta, ma nel navigatore questa volta selezioneremo computer.



Facciamo una richiesta sull'oggetto computer.


Lascia le classi di colonna computer e superiore ed espanderli:

  • Classe computer ampliare scegliendo cn, sistema operativo, OperatingSystemServicePack e versione del sistema operativo;
  • in classe superiore scegliere quandoCreato.


Richiesta estesa.


Se lo si desidera, è possibile effettuare un report solo sui sistemi operativi server. Ad esempio, applicare un filtro sull'attributo operatingSystem o operatingSystemVersion. Non lo farò, ma correggerò la visualizzazione dell'ora di creazione: sono interessato solo all'anno. Per fare ciò, nella scheda "Conversione", seleziona la colonna di cui abbiamo bisogno e seleziona "Anno" nel menu "Data".



Estraiamo l'anno dal momento in cui il computer è entrato nel dominio.


Ora resta da rimuovere la colonna del nome visualizzato come non necessaria e caricare il risultato. I dati sono pronti. Ora puoi lavorare con loro come con un normale tavolo. Per cominciare, creeremo una tabella pivot nella scheda "Inserisci" - "Tabella pivot". Siamo d'accordo con la scelta della fonte dei dati e ne configuriamo i campi.



Impostazioni del campo della tabella pivot.


Ora resta da personalizzare il design per assaggiare e ammirare il risultato:



Tabella pivot per computer in AD.


Facoltativamente, puoi aggiungere un grafico riepilogativo, anche nella scheda "Inserisci". Nelle "Categorie" (o nelle "Righe", a piacere) aggiungi sistema operativo, nei dati cn. Nella scheda "Designer", puoi scegliere il tipo di grafico che ti piace, io ho preferito il grafico a torta.



Grafico a torta.


Ora puoi vedere chiaramente che, nonostante l'aggiornamento in corso, il numero totale di workstation con Windows XP e server con Windows 2003 è piuttosto elevato. E c'è qualcosa per cui lottare.


Richiedi il codice sotto lo spoiler.

let Source = ActiveDirectory.Domains("domain.ru"), domain.ru = Source()[#"Categorie di oggetti"], computer1 = domain.ru(), #"Remote Columns" = Table.RemoveColumns(computer1,( "user", "organizationalPerson", "person")), #"Altre colonne remote" = Table.SelectColumns(#"Colonne remote",("displayName", "computer", "top")), #"Elemento espanso computer" = Table.ExpandRecordColumn(#"Altre colonne remote", "computer", ("cn", "sistema operativo", "operatingSystemServicePack", "operatingSystemVersion"), ("cn", "operatingSystem", "operatingSystemServicePack", " operatingSystemVersion"), #"Espanso in alto" = Table.ExpandRecordColumn(#"Computer espanso", "in alto", ("quandoCreato"), ("quandoCreato")), #"Anno estratto" = Table.TransformColumns( #"Espanso top",(("whenCreated", Date.Year))), #"Colonne rimosse1" = Table.RemoveColumns(#"Anno estratto",("displayName")) in #"Colonne rimosse1"

Aggiungi i tag

Script per scaricare tutti gli utenti da MS Active Directory (ITGC)

Ivan Piskunov

Una delle procedure di audit standard ITGC per catalogo Directory attiva è ottenere un download di tutti gli utenti del dominio. Sulla base dei dati ottenuti, vengono ulteriormente formate procedure di test, ad esempio studiando l'elenco degli amministratori o identificando gli utenti con una password scaduta. Il modo più efficiente per generare tale scaricamento è utilizzare l'interfaccia standard PowerShell , esempi di cui prenderemo in considerazione in questo articolo.

1. Caricamento rapido tramite script PowerShell

Di seguito è riportato uno script di PowerShell, come uno dei modi più semplici e veloci per ottenere un elenco di tutti gli utenti di un dominio AD in formato CSV, che può essere aperto senza problemi dallo stesso Excel.

$objSearcher = Nuovo oggetto System.DirectoryServices.DirectorySearcher $objSearcher.SearchRoot = "LDAP://ou=Utenti,ou=Departmets,dc=test,dc=en" $objSearcher.Filter = "(&(objectCategory=person) (!userAccountControl:1.2.840.113556.1.4.803:=2))" $users = $objSearcher.FindAll() # Numero di account $users.Count $users | ForEach-Object ( $utente = $_.Proprietà Nuovo oggetto PsObject -Proprietà @( Titolo = $user.description Reparto = $user.reparto Login = $user.userprincipalname Telefono = $user.telephonenumber Room = $user.physicaldeliveryofficename Nome = $utente.cn ) ) | Export-Csv -NoClobber -Codifica utf8 -Percorso C: list_domain_users.csv

Affinché lo script funzioni sul tuo sistema, devi correggerlo leggermente, ovvero inserire i parametri necessari, ad es. come in questo esempio questi sono i parametri Utenti nell'unità Dipartimenti nel dominio Test.ru. E specificare anche il percorso della posizione in cui è stato salvato il file. list_domain_users.csv

Dopo lo scarico, se immediatamente aperto list_domain_users.csv , apparirà in una forma illeggibile, tuttavia, utilizzando strumenti standard, possiamo facilmente portarlo nel formato di cui abbiamo bisogno. Apertura in Excel list_domain_users.csv , seleziona la prima colonna, quindi vai alla scheda "Dati" e fai clic su "Testo per colonne". Selezionare Delimitato e fare clic su Avanti. Pronto!

!Nota che questo script non visualizzerà più di 1000 utenti. È abbastanza adatto per una piccola azienda, ma coloro che hanno un numero enorme di utenti nel dominio dovrebbero ricorrere ai metodi descritti di seguito.

2. Cmdlet avanzato di PowerShell per ottenere i download degli utenti di Active Directory

Lo strumento Modulo Active Directory per Windows PowerShell (introdotto in Windows Server 2008 R2 e versioni successive) consente di creare cmdlet che eseguono varie manipolazioni con oggetti directory di Active Directory. Per ottenere informazioni sugli utenti e sulle loro proprietà, utilizzare il cmdlet Get-ADUser.

Iniziare avviare una finestra di Powershell con diritti di amministratore e importare il modulo Active Directory per ulteriori azioni:
Directory attiva del modulo di importazione

a elenca tutti gli account di dominio ed esegui il comando:

Get-ADUser-filtro *

a visualizzare tutte le informazioni su tutti gli attributi disponibili utente utente, eseguire il comando

Get-ADUser -identity tuser -proprietà *


Ad esempio, siamo interessati a informazioni su data e ora di cambio password alla scadenza . Il risultato dell'esecuzione del comando può essere esportato in un file di testo:

Get-ADUser -filter * -properties PasswordExpired, PasswordLastSet, PasswordNeverExpires | ft Nome, Passwordscaduta, PasswordLastSet, PasswordNeverExpires > C:tempusers.txt

O subito carica su CSV , che verrà successivamente esportato convenientemente in Excel (inoltre, utilizzando sort-object, ordineremo la tabella in base alla colonna PasswordLastSet e aggiungeremo anche una condizione where: il nome utente deve contenere la stringa "Dmitry")

Get-ADUser -filter * -properties PasswordExpired, PasswordLastSet, PasswordNeverExpires | dove ($_.nome –come “*Dmitry*”) | sort-oggetto PasswordLastSet | seleziona-oggetto Nome, PasswordExpired, PasswordLastSet, PasswordNeverExpires | Esporta-csv -percorso c:tempuser-password-expires-2015.csv

Buon pomeriggio, cari lettori e abbonati, continuiamo a esplorare con voi le possibilità di Powershell e Active Directory. Come ricorderete, ha tutti gli account utente e computer nel database NTDS.dit, tutto è fantastico e centralizzato. Quando un'azienda ha più di un amministratore di sistema, può risultare che accumula spazzatura e credenziali aggiuntive. Siamo tutti persone e possiamo dimenticare alcune cose e in alcuni momenti possiamo essere distratti, il che porterà anche a dimenticare informazioni importanti. E arriviamo alla conclusione che gli utenti inattivi (licenziati o dimenticati) si accumulano nella directory di Actvie, in ogni caso un buon amministratore di sistema dovrebbe identificarli, disabilitarli e poi cancellarli a piacimento, cosa che faremo.

Tramite scatto ADUC

L'ultima volta, ti ho già fornito un esempio dell'utilizzo dello snap-in Utenti e computer di Active Directory, tramite il quale abbiamo cercato i computer mancanti sulla rete locale che non apparivano da un mese. Ora facciamo lo stesso con gli account utente. Ho AD su Windows Server 2012 R2, apri ADUC, per farlo, premi WIN + R e inserisci dsa.msc.

Nel modulo di richiesta che si apre, inserisci:

  • Nome della query > il mio è utenti persi
  • Descrizione se necessario
  • Richiedi root > qui puoi lasciare l'intero dominio, oppure specificare sulla UO desiderata

Quindi fare clic sul pulsante di richiesta.

Nella scheda utenti, vediamo la voce "Numero di giorni dall'ultimo accesso", ad esempio, ho impostato 60 giorni.

Di conseguenza, otterrai l'elenco degli account dei dipendenti inattivi di cui hai bisogno.

Tramite scatto PowerShell

Lo stesso può essere fatto tramite Powershell. Darò immediatamente il codice, il cui compito è cercare utenti inattivi, per questo ho scelto un periodo di 45 giorni, disattivando i dati dell'utente e spostandomi in una UO appositamente designata per questo.

$date_with_offset=(Get-Date).AddDays(-45)
$ utenti = Get-ADUser -Proprietà LastLogonDate -Filter (LastLogonDate -lt $date_with_offset ) | OrdinaLastLogonDate
foreach ($utente in $utenti) (set-aduser $utente -enabled $false; move-adobject -identity $utente -targetpath "ou=Dismesso,ou=Msk L.Users,ou=Posizione,dc=msk,dc= contoso,dc=com")
Get-ADUser -Proprietà LastLogonDate -Filter (LastLogonDate -lt $date_with_offset ) | OrdinaLastLogonData | Nome FT, LastLogonDate -AutoSize | Out-File c:\Script\users.txt

  • Nella prima riga dichiari una variabile in cui imposti il ​​periodo di ricerca
  • Crea una variabile ed effettua una selezione in base all'ora dell'ultimo accesso
  • Utenti in movimento

  • Fare un rapporto su un file

Cose più utili per lavorare con l'utente. Prima di utilizzare i comandi seguenti, è necessario caricare il modulo di Active Directory, tramite il comando

Ottieni aiuto Ottieni ADUser

0

Ho il seguente script di lavoro che controlla se un ampio elenco di utenti in un file CSV è un membro di un gruppo AD e scrive i risultati in results.csv.

Non sono sicuro di come convertire lo script in modo da poter cambiare $group = "InfraLite" in $group = DC .\List_Of_AD_Groups.CSV .

Quindi lo script non restituisce solo corrispondenze per un gruppo AD, ma restituisce corrispondenze per gli 80 gruppi AD contenuti in List_of_AD_groups.csv. Scrivere SÌ/NO per ogni gruppo di annunci in una nuova colonna CSV (o se ciò non è possibile, la creazione di un file CSV separato per ogni gruppo con i risultati farà lo stesso.

Potrei farlo manualmente modificando il valore da $group ed esportando il nome del file ed eseguendo nuovamente lo script 80 volte, ma dovrei essere veloce con PS per farlo

ad esempio results.csv ?:

NOME AD_GROUP1 AD_GROUP2 AD_GROUP80 ecc ecc. user1 si no si user2 no no si user3 no si no echo "UserName`InfraLite" >> results.csv $users = GC .\user_list.csv $group = "InfraLite" $members = Get-ADGroupMember -Identity $group -Recursive | Seleziona -ExpandProperty SAMAccountName foreach ($utente in $utenti) ( se ($membri -contiene $utente) ( echo "$utente $gruppo`tSì" >> results.csv ) else ( echo "$utente`tNo" >> risultati .csv ) )

  • 2 risposte
  • Ordinamento:

    Attività

0

una soluzione banale al tuo problema sarebbe avvolgere il tuo codice esistente in un altro ciclo e creare un file di output per ogni gruppo:

$groups = Get-Content "C:\groups.txt" foreach ($group in $groups) ( $members = Get-ADGroupMember ... ... )

Un approccio più elegante sarebbe creare un modello di mappatura di gruppo, clonarlo per ogni utente e popolare la copia con l'appartenenza al gruppo dell'utente. Qualcosa del genere dovrebbe funzionare:

$modello = @() Ottieni contenuto "C:\groups.txt" | ForEach-Object ( $template[$_] = $false ) $gruppi = @() Get-ADGroup -Filtro * | ForEach-Object ( $groups[$_.DistinguishedName] = $_.Name ) Get-ADUser -Filter * -Properties MemberOf | ForEach-Object ( $groupmap = $template.Clone() $_.MemberOf | ForEach-Object ( $groups[$_] ) | Where-Object ( $groupmap.ContainsKey($_) ) | ForEach-Object ( $groupmap [$_] = $true ) Nuovo oggetto -Tipo PSObject -Proprietà $groupmap ) | Esporta-Csv "C:\user_group_mapping.csv" -NoType

0

Ci gioco da un po' e penso di aver trovato un modo per darti esattamente quello che stavi cercando.

Penso che Ansgar fosse sulla strada giusta, ma non sono riuscito a convincerlo a fare quello che è successo dopo. Ha menzionato che al momento in cui scrivo non aveva accesso all'ambiente AD.

Ecco cosa mi è venuto in mente:

$UserArray = Get-Content "C:\Temp\Users.txt" $GroupArray = Get-Content "C:\Temp\Groups.txt" $OutputFile = "C:\Temp\Something.csv" # Configurazione di una tabella hash per uso successivo $UserHash = New-Object -TypeName System.Collections.Hashtable # Ciclo esterno per aggiungere utenti e appartenenza a UserHash $UserArray | ForEach-Object( $UserInfo = Get-ADUser $_ -Properties MemberOf # Rimuove la sintassi LPAP solo in SAMAccountName del gruppo $Memberships = $UserInfo.MemberOf | ForEach-Object( ($_.Split(",")) .replace("CN=","") ) #Aggiunta della coppia User=Membership all'hash $UserHash.Add($_,$Memberships) ) # Outer loop per creare un oggetto per utente $Results = $UserArray | ForEach-Object( # Crea prima un oggetto semplice $User = New-Object -TypeName PSCustomObject -Property @( Name = $_ ) # Aggiungi dinamicamente membri all'oggetto, in base a $GroupArray $GroupArray | ForEach-Object ( #Checking $UserHash per vedere se il gruppo compare nell'elenco dei membri dell'utente $UserIsMember = $UserHash.($User.Name) -contiene $_ #Aggiunta di proprietà all'oggetto e valore $User | Add-Member -MemberType NoteProperty -Name $ _ -Value $UserIsMember ) #Restituire l'oggetto alla variabile Return $User ) #Converti gli oggetti in un CSV, quindi emettili $Results | ConvertTo-CSV -NoTypeInformation | Out-File $OutputFile

Speriamo che tutto abbia un senso. Ho commentato più che potevo. Sarebbe molto facile convertire in ADSI se non avessi installato RSAT su qualsiasi macchina su cui lo esegui. Se ti serve fammi sapere e farò delle modifiche veloci.

Non è un segreto che dalla prima versione di PowerShell, Microsoft ha cercato di renderlo il principale strumento di amministrazione di Windows. E in molti modi funziona! Oggi, utilizzando semplici esempi, mostreremo le funzionalità di PowerShell che possono essere utilizzate per ottenere varie informazioni sugli utenti di Active Directory e sui loro attributi.

Nota. In precedenza, per ottenere informazioni sugli attributi degli account utente di AD, dovevi utilizzare vari strumenti: la console ADUC (inclusa ), un'utilità e così via. La scelta dello strumento era solitamente basata sull'attività da svolgere e sulla capacità di programmazione dell'amministratore.

PowerShell 2.0 ha introdotto un modulo speciale per lavorare con Active Directory - (introdotto in Windows Server 2008 R2), i cui cmdlet consentono di eseguire varie manipolazioni con oggetti nella directory AD. Per ottenere informazioni sugli utenti del dominio Active Directory e sulle relative proprietà, utilizzare il cmdlet Get-ADUser. È possibile utilizzare il cmdlet Get-ADUser per ottenere il valore di qualsiasi attributo di un account utente esistente in AD. Inoltre, puoi specificare vari criteri di selezione e generare elenchi di utenti di dominio e relativi attributi.

In questo esempio verrà illustrato come usare il cmdlet Get-ADUser di PowerShell per ottenere informazioni sull'ultima modifica della password di un utente e sulla scadenza.

Lanciamo la finestra di Powershll con diritti di amministratore e importiamo il modulo Active Directory con il comando:

Directory attiva del modulo di importazione

Consigli. In Windows Server 2012 e versioni successive, questo passaggio può essere ignorato, poiché il modulo PowerShell di Active Directory è abilitato per impostazione predefinita.

Nel sistema operativo client (nello stesso Windows 10), affinché il comando Get-AdUser funzioni, è necessario installare la versione appropriata di RSAT e abilitare il componente nel pannello di controllo Modulo Active Directory per Windows PowerShell(Strumenti di amministrazione del server remoto -> Strumenti di amministrazione dei ruoli -> Strumenti di Servizi di dominio Active Directory e Strumenti di AD LDS -> Strumenti di Servizi di dominio Active Directory).

È possibile ottenere un elenco completo di tutti gli argomenti del cmdlet Get-ADUser in questo modo:

Aiuta Get-ADUser

Per visualizzare un elenco di tutti gli account di dominio, eseguire il comando:

Get-ADUser-filtro *

Il formato dell'elenco restituito non è molto comodo da usare, vengono visualizzati solo alcuni 10 di base su più di 120 attributi e proprietà degli account utente (DN, SamAccountName, Name, UPN, ecc.), inoltre, vediamo le informazioni sul manca l'ora dell'ultima modifica della password.

Per visualizzare informazioni complete su tutti gli attributi disponibili dell'utente tuser, eseguire il comando:

Get-ADUser -identity tuser -proprietà *

Quindi, vediamo un elenco completo degli attributi utente di AD e dei loro valori associati all'account utente. Successivamente, passeremo alla formattazione dell'output del cmdlet Get-ADUser in modo che i campi necessari vengano visualizzati. Ci interessano gli attributi:

  • Password scaduta
  • PasswordUltimoSet
  • La password non ha scadenza

Eseguiamo il comando:

Get-ADUser tuser -proprietà PasswordExpired, PasswordLastSet, PasswordNeverExpires

Ora i dati utente contengono informazioni sulla data di modifica della password e l'ora in cui scade. Presentiamo le informazioni in una forma tabellare più conveniente:

Get-ADUser -filter * -properties PasswordExpired, PasswordLastSet, PasswordNeverExpires | ft Nome, Password scaduta, Password LastSet, Password NeverExpires

Per visualizzare i dati utente da un'unità organizzativa specifica, utilizzare il parametro base di ricerca:

Get-ADUser -SearchBase 'OU=Mosca,DC=winitpro,DC=loc' -filter * -properties PasswordExpired, PasswordLastSet, PasswordNeverExpires | ft Nome, Password scaduta, Password LastSet, Password NeverExpires

Il risultato dell'esecuzione del comando può essere esportato in un file di testo:

Get-ADUser -filter * -properties PasswordExpired, PasswordLastSet, PasswordNeverExpires | ft Nome, Passwordscaduta, PasswordLastSet, PasswordNeverExpires > C:\temp\users.txt

Oppure in CSV, che verrà poi convenientemente esportato in Excel (facoltativamente utilizzando sort-oggetto ordina la tabella per colonna PasswordLastSet e aggiungi anche una condizione dove– il nome utente deve contenere la stringa “Dmitry”):

Get-ADUser -filter * -properties PasswordExpired, PasswordLastSet, PasswordNeverExpires | dove ($_.nome –come “*Dmitry*”) | sort-oggetto PasswordLastSet | seleziona-oggetto Nome, PasswordExpired, PasswordLastSet, PasswordNeverExpires | Export-csv -percorso c:\temp\user-password-expires-2015.csv

Pertanto, puoi creare una tabella con tutti gli attributi utente di Active Directory necessari.

Per ottenere un elenco di account utente AD in base a un attributo specifico, utilizzare il parametro –Filter. Come argomenti per questo parametro, puoi specificare il valore di determinati attributi degli utenti di Active Directory, di conseguenza, il cmdlet Get-ADUser verrà applicato agli utenti che soddisfano i criteri di filtro.

Elenco degli utenti AD il cui nome inizia con Roman:

Get-ADUser -filter (nome -come "Roman*")

Get-ADUser -Filter (SamAccountName -come "*") | Misura-Oggetto

Elenco di tutti gli account attivi (non bloccati) in AD:

Get-ADUser -Filter (abilitato -eq "True") | Seleziona-Oggetto SamAccountNome,Nome,Cognome,GivenName | Formato tabella

Elenco degli account con password scaduta:

Get-ADUser -filter (Enabled -eq $True) -properties passwordExpired | dove($_.Passwordscaduta)

Elenco degli account attivi con indirizzi email:

Get-ADUser -Filter ((mail -ne "null") -and (Enabled -eq "true")) -Proprietà Cognome,GivenName,mail | Seleziona-Oggetto Nome,Cognome,Nome,mail | Formato tabella

Compito: per un elenco di account archiviati in un file di testo (un account per riga), è necessario ottenere il numero di telefono dell'utente in AD e caricare le informazioni in un file CSV di testo (può essere facilmente importato in Esxel).

Import-Csv c:\ps\usernsme_list.csv | ForEach ( Get-ADUser -identity $_.user -Properties Name, telephoneNumber | Seleziona nome, telephoneNumber | Export-CSV c:\ps\export_ad_list.csv -Append -Encoding UTF8 )

L'esempio seguente consente di scaricare la rubrica dell'azienda come file CSV, che può essere successivamente importato in Outlook o Mozilla Thunderbird:

Get-ADUser -Filter ((mail -ne "null") -and (Enabled -eq "true")) -Proprietà Cognome,GivenName,mail | Seleziona-Oggetto Nome,Cognome,Nome,mail | Export-Csv -NoTypeInformation -Codifica utf8 -delimiter "," $env:temp\mail_list.csv

Utenti che non hanno cambiato la password negli ultimi 90 giorni:

$90_Days = (Get-Date).adddays(-90) Get-ADUser -filtro ((passwordlastset -le $90_days))

$utente = Get-ADUser winadmin -Proprietà thumbnailPhoto $user.thumbnailPhoto | Set-Contenuto winadmin.jpg -Byte di codifica

Elenco di gruppi di cui è membro l'account utente

Get-AdUser winadmin -Proprietà membro di | Seleziona membro di -expandproperty membro di

Articoli correlati in alto