TP PowerShell – Filtrer avec Where-Object (et plus si affinités)

La question du jour, c’est : Quels sont les utilisateurs qui n’exécutent pas le script logon.cmd lors du logon ? et combien sont-ils ? peut-on avoir la liste de ces comptes ?

On avait déjà vu comment chercher et lister des utilisateurs de l’Active Directory dans le TP n°1.
Donc je ne reviens pas sur la cmd-let Get-ADUser, et je vous donne directement la 1ère requête qui retourne tous les utilisateurs dans une OU et de ses sous-OU en intégrant la colonne scriptPath (qui contient le chemin du logonScript) aux objets dans le résultat.

PS C:\> Get-ADUser -Filter * -Properties @('scriptPath') -SearchBase 'OU=Utilisateurs,DC=ponyland,DC=org' -SearchScope Subtree

C’est donc à ce moment les experts d’Excel nous demanderons de leurs sortir le résultat dans un CSV pour qu’ils y mettent un filtre sur la colonne scriptPath et avoir le résultat…
=> Super efficace…

Ou alors, on peut se la jouer « beau-gosse » et filtrer directement le résultat dans PowerShell, explication : On va utiliser le pipe « | » (comme en linux) pour rediriger la sortie de la cmd-let Get-ADUser dans l’entrée de notre cmd-let Where-Object.
Cette cmd-let nous permet de faire en un appel l’équivalent de l’algorithme suivant (simplifié) :

Pour 
Lire la suite

TP PowerShell – Module Active Directory (bis)

Coucou les gens,
Je continue de rattraper des textes écrit à droite à gauche ici :
Ici, présentation d’une autre cmd-let PowerShell pour exporter des données de la console dans un fichier au format CSV, et on va utiliser le module AD vu précédemment pour trouver les données à exporter :

1. Charger le module Active Directory dans la console PowerShell :

Import-Module ActiveDirectory

2. Comme la dernière fois on utilise une cmd-let du module AD pour récupérer les utilisateurs qui ont ‘666’ dans l’attribut employeenumber dans une variable « $beast », mais avec un filtre LDAP (pour changer et que les vieux soit pas trop perdu…) :

$beast = Get-ADUser -LDAPFilter '(employeenumber=*666*)' -Properties @('employeenumber')

3. Disons qu’on veuille maintenant exporter ce résultat dans un fichier pour le fournir à nos collègues:

$beast | Export-Csv "TheNumberOfTheBeast.csv" -Delimiter ';' -Encoding UTF8 -NoTypeInformation

4. Le script va vous créer un fichier .csv dans le dossier courant que vous pourrez ensuite ouvrir depuis Excel, vous le visualiser avec :

Get-ChildItem *
 Répertoire : C:\Users\poney
  Mode                LastWriteTime     Length Name
 ----                -------------     ------  ----
 […]
 -a---        10/04/2015     14:11       3939  TheNumberOfTheBeast.csv

Voilà, très pratique pour les ‘quick search’ à l’arrache.… Lire la suite

TP PowerShell – Module Active Directory

Bonjour à tous,
Petit TP PowerShell rapide basé sur un cas d’usage demandé par des gens qui ne savent pas se servir d’un clavier.
Question posée : « Comment trouver une machine dans un annuaire Active Directory via une information indiquée dans le champ description ? »
1- Charger le module active directory de powershell :

Import-Module ActiveDirectory

2- Utiliser la cmd-let Get-ADComputer avec un filtre pour faire le boulot.
On cherche les objets pour lesquels le champ description contient “poneyland” et on veut afficher l’attribut ldap ‘description’ dans le résultat :

Get-ADComputer -Filter {(description -like "*poneyland*")} -Properties @('description')

3- Et si on ne cherche que des postes XP
(Oui même si c’est mal, justement : c’est pour leur péter leurs sales petites gueules) ?

Get-ADComputer -Filter {((description -like "*poneyland*") -and (operatingsystem -like "*XP*"))} –Properties @('description','operatingsystem')

Et voilà… Lire la suite