45 votes

PowerShell ? L'utilisez-vous ? Pouvez-vous me montrer des trucs sympas d'administration de système que je peux faire avec ?

Je lis partout que PowerShell est la voie de l'avenir. Lors de sa sortie, j'ai fait tout un tas de laboratoires virtuels, mais depuis, je ne l'ai toujours pas utilisé dans un environnement de production. Je sais que le jour viendra où j'aurai affaire à des systèmes d'exploitation où il sera déjà installé, alors je veux être prêt.

Je veux savoir :

  1. L'utilisez-vous ?
  2. Quel a été votre processus d'initiation à l'utilisation de PowerShell ?
  3. Quel type de tâches d'administration de système avez-vous réalisé à l'aide de ce logiciel ?
  4. Je suis administrateur de base de données SQL Server. Quelles sont les choses les plus intéressantes à faire avec ce serveur ?

Il semble que tout le monde soit d'accord pour dire que Microsoft insiste beaucoup sur ce point, mais personne ne l'utilise encore. J'aimerais connaître le point de vue des administrateurs système qui l'utilisent pour effectuer des tâches quotidiennes et partager des exemples de code.

34voto

sysadmin1138 Points 129885

Microsoft fait tout ce qui est en son pouvoir pour que PowerShell devienne le choix des utilisateurs et des auteurs d'automatismes du monde entier. L'époque où il fallait compiler du code en .NET pour faire la même chose est révolue. Désormais, il suffit d'utiliser notepad.exe et google. Nous en sommes de grands fans au bureau, d'autant plus que la console de gestion d'Exchange 2007 n'inclut PAS tout ce qu'il est possible de faire avec PowerShell. Microsoft a délibérément omis d'implémenter des choses qui ne sont faites qu'une fois de temps en temps, plus faciles à développer de cette façon, ce qui force carrément son utilisation si vous avez quoi que ce soit qui ressemble à un environnement complexe.

La gestion de la nouvelle génération de produits Microsoft (Win7, Windows Server 2008, Exchange 2007/2010, SQL Server 2008) dispose de crochets PowerShell très riches. Une fois que Remote Powershell (PowerShell 2.0 IIRC) sera déployé avec Server 2008 R2, il deviendra encore PLUS utile pour les auteurs d'automatisation.

Ce que nous en avons fait :

  • Créer une page web pour déléguer certaines tâches administratives aux utilisateurs du service d'assistance. La page web déclenche des commandes qui sont exécutées dans PowerShell. Ce qu'elle fait :
    • Créer et supprimer des comptes d'utilisateurs, y compris provisionner des boîtes aux lettres et des répertoires personnels Exchange 2007
    • Débloque les comptes verrouillés
    • Créer/supprimer des groupes
    • Ajouter/supprimer des utilisateurs des groupes
    • Déplacer des utilisateurs entre les magasins de courrier
    • Définir les mots de passe
  • Extraire des données du système ERP et intégrer les données du carnet d'adresses mondial dans l'Active Directory chaque nuit.
  • Résoudre le problème LegacyExchangeDN qui s'est présenté lors de notre migration Exchange 2003 vers Exchange 2007. Nous avons dû ajouter une adresse X500 à tous les utilisateurs d'Exchange 2003. Un script PowerShell script assez court a permis de résoudre le problème.
  • Création scriptée de "boîtes aux lettres de groupe" (boîtes aux lettres partagées dans Exchange où plusieurs utilisateurs ont accès à la boîte aux lettres), un processus par ailleurs manuel en raison de la nature des données dont nous avons besoin avant de le lancer. La configuration de ces boîtes aux lettres s'en est trouvée grandement standardisée.
  • Création d'un script qui parcourt toutes les machines du domaine en réinitialisant une clé de registre spécifique et en redémarrant un service. Cela a pris 18 heures, mais le travail a été fait.

Alors oui, PowerShell va nous accompagner pendant un certain temps.

EDIT : Ajout d'un exemple de code, puisque cela a été demandé

$list=import-csv("groupusers.csv")
$lastseengroup=$list\[0\].group
$ADGroupPrefix="grp.netware."
$ADGroupSuffix="{redacted -- in the format of ,ou=groups,dc=domain,dc=domain,dc=domain}"
Clear-Variable memberlist
Clear-Variable unknownusers
foreach ($entry in $list) {
    if ($($entry.group) -ne $lastseengroup) {
        echo "stumbled across new group $($entry.group), committing changes to $lastseengroup"
        $newgroup=$ADgroupPrefix+$lastseengroup
        $newgroupdn='"'+"cn=$newgroup$ADGroupSuffix"+'"'
        echo "getting DN for $newgroup"
        $existinggroup=dsquery group domainroot -name $newgroup
        if (($existinggroup -ne $null)) {
            dsmod group $newgroupdn -chmbr $memberlist
        } else {
            dsadd group $newgroupdn -scope u -secgrp yes -members $memberlist -desc "Group imported from eDirectory"
        }
        Clear-Variable memberlist
    }
    $User=get-user $($entry.member) -ErrorAction SilentlyContinue
    if ($User.isvalid) {
        $UserDN=$User.distinguishedname
        $memberlist=$memberlist+'"'+"$UserDN"+'" '
    } else {
        $unknownusers=$unknownusers+$($entry.member)
    }
    $lastseengroup=$($entry.group)

}
dsadd group "cn=$ADGroupPrefix$lastseengroup$ADGroupSuffix" -scope u -secgrp yes -members $memberlist

Ceci prend un fichier CSV créé avec un script perl script et met à jour un ensemble de groupes. Si le groupe existe déjà, il remplace les membres par ceux spécifiés dans le fichier. Si le groupe n'existe pas, il le crée. Il s'agit d'une synchronisation à sens unique. De plus, il ne faut pas tout à fait encore en production, mais elle est proche de l'être.

17voto

Jules Points 130

Étant donné que les produits serveur de Microsoft seront compatibles avec PowerShell dès le départ (je crois que la prochaine version d'Exchange a tous disponible via PowerShell), et que des livres tels que PowerShell en pratique décrivent d'excellents moyens d'automatiser des tâches autrement monotones, je pense qu'il est raisonnable de suggérer que PowerShell sera une technologie prévalente dans le monde des serveurs Windows pendant un certain temps encore.

12voto

Darren Greaves Points 1500

Je recommande Podcast de Scott Hanselman #162 . Il semble que toutes les équipes chargées des serveurs Microsoft soient "obligées" de fournir des cmdlets PowerShell et de suivre une syntaxe unique et cohérente.

En outre, des tiers tels que VMWare l'adoptent

En bref, je pense que PowerShell, à partir de la version 2.0, a sérieusement l'intention de remplacer les fichiers batch pour toutes les tâches, à l'exception des plus triviales.

10voto

Chad Miller Points 1081

Dix scripts que j'utilise en tant qu'administrateur de bases de données SQL Server (tous sont décrits/posés sur mon blog ):

  1. Vérifier l'espace disque sur tous les serveurs SQL et charger des données dans une table SQL
  2. Exécuter des rapports de permissions sur tous les serveurs SQL de production et charger les données dans une base de données SQL.
  3. Tout découvrir Windows Server 2003 clusters, nœuds et virtuels sur le réseau et charge vers les tables SQL
  4. Découvrez toutes les bases de données sur tous les serveurs SQL tels que définis dans la section SCCM et le charger dans une table SQL
  5. Créer un tableau de bord des sauvegardes SQL Server en chargeant les informations de sauvegarde de tous les serveurs SQL dans une table SQL.
  6. Vérifiez que TCP Offload Engine est désactivé dans Windows Server 2003 SP2 (c'est un obstacle à la performance pour de nombreux serveurs SQL).
  7. Vérifier l'alignement des partitions de disque (ce qui peut également nuire aux performances si les disques sont mal alignés).
  8. Copier des tables SQL d'un serveur à un autre
  9. Copie récurrente de tous les documents SSIS les paquets utilisant une MSDB Storage d'un serveur à l'autre, y compris la structure des dossiers
  10. Créer ma propre visionneuse graphique de dépendances d'objets

8voto

MobileCushion Points 1058

Quel type de tâches administratives avez-vous programmé avec ce logiciel ?

surveillance des applications/services : obtenir des chiffres clés sur les performances à partir du journal des événements (à distance) et des procédures stockées et les afficher à partir d'un seul fichier de traitement par lots.

Je suis un DBA SQL Server, montrez-moi des choses sympas à faire avec ?

automssqlbackup Sauvegarde quotidienne pour MSSQL avec rotation (quotidienne=incrémentale, hebdomadaire+mensuelle=complète ; conserver 5 sauvegardes quotidiennes, 5 sauvegardes hebdomadaires), zippage, notification par courrier électronique.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X