TP PowerShell – J’ai des objets COM’ dans mon ZoneCentral…

On a pas mal test sur un produit de chiffre en ce moment qui sont faits via un Objet Com. Alors un p’ti Tp sur le sujet…
Par contre, je ne vais pas expliquer ce que c’est qu’un objet COM, je vous renvoie au chapitre 10, du même nom, du bouquin d’Arnaud (p531 de la V3).

Dans ce TP on va récupérer la version de [Zone Central](http://www.primx.eu/zonecentral.aspx) sur le poste via un objet COM    :
Lors de son installation ZC (pour les intimes) enregistre automatiquement des dlls permettant de charger un objet COM : ZCAX.ZoneCentral.

Pour créer une nouvelle instance d’un objet COM dans PowerShell:

PS C:\> $zc = New-Object -ComObject ZCAX.ZoneCentral     
PS C:\> $zc     
System.__ComObject     
# Et là on a bien un objet au sens programmation orienté objet (classe, attributs, méthode, portés, etc…)

Bon, c’est cool… et maintenant ?

Alors là, dans l’idéal, il faut se référencer à la documentation de l’éditeur de votre objet COM pour connaître les fonctions proposées.
Mais pour les TLDR (i.e. Too Long Didn’t Read) en herbe que vous êtes, on peut toujours faire ça à la crado :

     PS C:\> $zc | Get-Member     
    TypeName : System.__ComObject#{00000172-8804-4ca8-8868-36f59defd14d}     
    
      Name                    MemberType Definition     
      ----                    ---------- ----------     
      CheckCertificate        
Lire la suite

TP PowerShell – Génération de mot de passe pour le livre de A. PETITJEAN

TP autour des aléas en PowerShell, suite à un besoin de génération de mot de passe : on veut générer un mot de passe aléatoire pour la création de compte d’un utilisateur. Pour ça déjà on va se demander comment on génère un aléatoire en PowerShell, bien comme d’hab., il y a une cmd-let pour ça :    

PS C:\> Get-Random     
1493366162     
PS C:\> Get-Random -Minimum 0 -Maximum 26     
7     
PS C:\> Get-Random -Minimum 0 -Maximum 26     
4
PS C:\> Get-Random -Minimum 0 -Maximum 26     
17   
PS C:\> Get-Random -Minimum 0 -Maximum 26     
22     
PS C:\> > Get-Random -Minimum 0 -Maximum 26     
8

À moins que vous n’ayez oublié combien il y a de lettre dans l’alphabet, je pense que vous avez saisi l’idée…

Bon à partir de là, on peut convertir nos nombres en `char`,
D’abord, on doit compter jusqu’au nombre de caractères voulus dans notre chaîne, voir le bouquin d’Arnaud pour plus de détail, on va utiliser cette abréviation :

PS C:\> 1..12     
1     
2     
3         
4     
5     
6     
7     
8     
9     
10     
11     
12

Ensuite, je vous invite à vous munir d’une table ASCII pour comprendre la suite    :

PS C:\> 1..12 | ForEach {$passwd += [char](Get-Random -Minimum 
Lire la suite

TP Powershell – String, Regex et petits poneys…

Petit TP PowerShell facile pour une fois, sur la gestion des chaînes de caractères (ou String).
Admettons, pour commencer que l’on est fait un bout de script qui récupère les comptes machines de nos serveurs avec leurs dates de création.

Premier exercice cash ! Écrivez cette commande PowerShell avec Get-ADComputer.

Pour les autres, la solution ci-dessous très bien cachée.

PS C:\> $tab = Get-ADComputer -SearchBase 'OU=Serveurs,DC=equestria,DC=com' -SearchScope Subtree -Filter * -Properties whencreated

Bon, et si on cherche à tester les serveurs donc le nom commence par ‘Pony-‘ pour avoir nos serveurs du projet poney ? Pour commencer doucement on va le faire avec une boucle FOR.

#Ici on crée un tableau vide
$srv_pony = @()

#Pour chaque élément du tableau de tous les serveurs
ForEach($srv in $tab){
    #Si le nom commence par pony
    if($srv.name -match '^pony\-*'){
        #On l’ajoute dans le tableau
        $srv_pony += $srv
    }
}

On récupère alors les serveurs dans l’Active Directory dont le nom de machine commence par pony-. Ceux qui ne connaissent pas ont sûrement remarqué que mon « -match » est un peu étrange. En fait j’utilise la syntaxe des expressions régulières. Les expressions régulières sont avant tout un modèle théorique (utilisé en compilation par … 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