Le blog technique

Toutes les astuces #tech des collaborateurs de PI Services.

#openblogPI

Retrouvez les articles à la une

SQL Server – Script Table Row Count in a Database

Ce script très utile pour des travaux d’inventaire ou de statistiques, permet de compter le nombre de lignes que disposent les tables d’une base de données :

USE [DB]
GO
SELECT OBJECT_NAME(OBJECT_ID) TableName, st.row_count
FROM sys.dm_db_partition_stats st
WHERE index_id < 2
ORDER BY st.row_count DESC
GO

Powershell: Générateur de Mot-de-passe

Il arrive souvent dans le cadre de migration ou de création de nouvelle forêt/Domaine Active Directory, de générer des nouveau mots de passe pour les nouveau comptes. Afin d’automatiser cette opération, le PowerShell nous permet de scripter cette étape et de la faire correspondre à la stratégie de mot-de-passe mise en œuvre.

Voici un exemple de fonction qui permet de générer des mots-de-passe correspondant à la stratégie par défaut (complexité et 8 caractères):

#============================================
# Fonction de création de Password aléatoire   
#============================================
function RandomPassword ([int]$intPasswordLength)
       {
          if ($intPasswordLength -lt 4) {return "password cannot be <4 chars"}   # -lt inférieur à
             
          $strNumbers = "1234567890"
          $strCapitalLetters = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
          $strLowerLetters = "abcdefghijklmnopqrstuvwxyz"
          $strSymbols = "@-?!#"
          $rand = new-object random
 
          for ($a=1; $a -le $intPasswordLength; $a++)  #inférieur -le inférieur ou égal à
               {
                    if ($a -gt 4) #supérieur à
                       {
                             $b = $rand.next(0,4) + $a
                             $b = $b % 4 + 1
                       } else { $b = $a }
                    switch ($b)
                       {
                             "1" {$b = "$strNumbers"}
                             "2" {$b = "$strCapitalLetters"}
                             "3" {$b = "$strLowerLetters"}
                             "4" {$b = "$strSymbols"}
                       }
                    $charset = $($b)
                    $number = $rand.next(0,$charset.Length)
                    $RandomPassword += $charset[$number]
               }
          return $RandomPassword
       }
 
#######################
# PROGRAMME PRINCIPAL
#######################
                # Génération aléatoire du Password en lançant la fonction définie précédemment                 
             RandomPassword 8
              

Il suffit de modifier le programme principal pour générer des mots-de-passe plus longs. Il ne reste plus qu’à intégrer et appeler la fonction dans un script global de création des comptes Active Directory.

PowerShell : Ajout d’entrée DNS

Dans le cadre d’installation de certaines plateformes, il est parfois nécessaire de créer de nombreuses entrées DNS.

Pour réaliser cette opération, l’interface graphique peut s’avérer fastidieuse et source d’erreurs. Il peut donc être intéressant de réaliser quelques commandes pour réaliser ces ajouts :

Pour cela, les entrées DNS à créer peuvent être stockées dans un fichier csv comme ici dans le cadre de Lync Server:

image

Une fois le fichier construit, il suffit de le parser et de construire la commande dnscmd:

   1:  $file=import-csv C:\sources\dnslync.csv -Delimiter ";"
   2:   
   3:  foreach ($entry in $file)
   4:  {
   5:     dnscmd v-DNS-01 /recordAdd mazone.org $entry.Host $entry.type $entry.IP
   6:  }

L’exécution confirme la création des entrées:

image

Les entrées sont ainsi créées dans la zone précisée.