PowerShell? L'utilisez vous? Pouvez-vous me montrer quelques trucs d’administration système sympas? [fermé]

45

Je continue de lire partout où PowerShell est la voie de l'avenir. Lors de sa sortie, j'ai effectué de nombreux laboratoires virtuels, mais je ne les ai toujours pas utilisés dans un environnement de production. Je sais que le jour viendra où j'aurai affaire à un système d'exploitation où il est déjà installé. Je veux donc être prêt.

Je veux savoir:

  1. L'utilisez vous?
  2. Quel a été votre processus de "démarrage" pour utiliser PowerShell?
  3. Quel type de tâches d'administration système avez-vous écrit avec?
  4. Je suis un administrateur de base de données SQL Server. Quelles sont les choses cool à faire avec ça?

Il semble que tout le monde s'accorde pour dire que Microsoft pousse cela très fort, mais personne ne l'utilise encore. Je souhaite entendre les administrateurs système qui l'utilisent pour effectuer leurs tâches quotidiennes et partager des exemples de code.

Nick Kavadias
la source
JScript est mort?
Sophie Alpert
7
Essayez de ne pas être un troll avec vos gros titres trompeurs la prochaine fois.
Jaykul
Peut-être est-ce parce que parfois je souhaite que cela disparaisse comme jscript. Est-ce juste moi ou est-ce très laid et prolixe?
Nick Kavadias

Réponses:

34

Microsoft fait tout ce qui est en son pouvoir pour faire de PowerShell le choix des utilisateurs expérimentés et des rédacteurs d'automatisation du monde entier. L'époque de la compilation de code dans .NET est révolue pour que nous puissions faire la même chose. Désormais, vous n'avez plus besoin que de notepad.exe et de Google. Nous en sommes très férus au bureau, d’autant plus que la console de gestion d’Exchange 2007 n'inclut PAS tout ce que vous pouvez faire dans PowerShell. Microsoft a délibérément échoué à mettre en œuvre des tâches qui ne se font que de temps en temps, plus faciles à développer de cette façon, ce qui oblige carrément à les utiliser si vous avez quelque chose 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) possède tous des points d'ancrage 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 rédacteurs automatisés.

Qu'est-ce que nous en avons fait:

  • Créez une page Web pour déléguer certaines tâches d'administration aux utilisateurs du service d'assistance. La page Web déclenche les commandes exécutées dans PowerShell. Les choses qu'il fait:
    • Créer et supprimer des comptes d'utilisateurs, y compris le provisioning des boîtes aux lettres Exchange 2007 et des répertoires de base
    • Déverrouille les comptes verrouillés
    • Créer / supprimer des groupes
    • Ajouter / supprimer des utilisateurs des groupes
    • Déplacer les utilisateurs entre les magasins de courrier
    • Définir les mots de passe
  • Prenez des extraits du système ERP et insérez chaque soir des données de carnet d'adresses global dans Active Directory.
  • Résolvez le problème LegacyExchangeDN qui a surgi lors de notre migration Exchange 2003 vers Exchange 2007. Il a fallu ajouter une adresse X500 à toutes les personnes qui travaillaient auparavant dans Exchange 2003. Un script PowerShell assez court l'a corrigée.
  • Création par script 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), processus autrement manuel en raison de la nature des données dont nous avons besoin avant de commencer. Cela a grandement standardisé la configuration de ces boîtes aux lettres.
  • Création d'un script qui parcourait toutes les machines dominées 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é accompli.

Alors oui, PowerShell va rester avec nous pendant un bon bout de temps.

EDIT : Ajouter un exemple de code, car il a été demandé

$ list = import-csv ("groupusers.csv")
$ lastseengroup = $ list [0] .group
$ ADGroupPrefix = "grp.netware."
$ ADGroupSuffix = "{rédigé - dans le format de, ou = groupes, dc = domaine, dc = domaine, dc = domaine}"
Liste de membres Clear-Variable
Nombre inconnu d'utilisateurs inconnus
foreach ($ entry dans $ list) {
    if ($ ($ entry.group) -ne $ lastseengroup) {
        echo "est tombé sur le nouveau groupe $ ($ entry.group), en validant les modifications apportées à $ lastseengroup"
        $ newgroup = $ ADgroupPrefix + $ lastseengroup
        $ newgroupdn = '"' +" cn = $ newgroup $ ADGroupSuffix "+ '"'
        echo "obtenir le DN pour $ newgroup"
        $ existinggroup = dsquery group domainroot -name $ newgroup
        if (($ existinggroup -ne $ null)) {
            dsmod groupe $ newgroupdn -chmbr $ memberlist
        } autre {
            groupe dsadd $ newgroupdn -scope u -secgrp yes -members $ memberlist -desc "Groupe importé de eDirectory"
        }
        Liste de membres Clear-Variable
    }
    $ User = get-user $ ($ entry.member) -ErrorAction SilentlyContinue
    if ($ User.isvalid) {
        $ UserDN = $ User.distinguishedname
        $ memberlist = $ memberlist + '"' +" $ UserDN "+ '"'
    } autre {
        $ unknownusers = $ unknownusers + $ ($ entry.member)
    }
    $ lastseengroup = $ ($ entry.group)

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

Cela prend un fichier CSV créé avec un script Perl et met à jour un ensemble de groupes. Si le groupe existe déjà, il remplace l'appartenance par celui spécifié dans le fichier. Si le groupe n'existe pas, il le crée. Ceci est une synchronisation à sens unique. En outre, pas encore en production, mais proche.

sysadmin1138
la source
6
PowerShell à distance !! tu veux dire comme ssh!?! à propos du temps!
Nick Kavadias
2
Comment exécutez-vous des scripts PowerShell à partir d'un site Web, utilisez-vous des scripts PowerShell comme langage de programmation Web? utilisez-vous powershellASP? exécutez-vous vos scripts en tant qu'utilisateur IIS?
quentin
17

Étant donné que les produits serveur de Microsoft seront compatibles avec PowerShell dès le début (je pense que la prochaine version d'Exchange a toute la configuration disponible via PowerShell), et que des ouvrages tels que PowerShell in Practice décrivent d'excellents moyens d'automatiser des tâches autrement monotones. il est raisonnable de penser que PowerShell sera une technologie répandue dans Windows Server pendant un certain temps encore.

Moobaa
la source
ce livre est encore en version bêta / en cours d'écriture
Nick Kavadias
Oui, c'est le cas - mais vous pouvez toujours l'acheter maintenant et obtenir un accès rapide au contenu. Et il y a des tonnes de trucs de maintenance de serveur là-bas :)
dimanche
4
Exchange est entièrement PowerShell depuis Exchange 2007. OCS sera entièrement compatible avec PowerShell dans sa prochaine version; la plupart des produits System Center le prennent en charge complètement ou le seront dans leurs prochaines versions. PowerShell ne va nulle part.
paul
12

Je recommanderais le podcast n ° 162 de Scott Hanselman . Il semble que toutes les équipes de serveurs Microsoft sont "obligées" de fournir des applets de commande PowerShell, ainsi que de suivre une syntaxe unique et cohérente.

En outre, des tiers comme VMWare l’ adoptent

En résumé, je pense que PowerShell, à compter de la version 2.0, a sérieusement pour objectif de remplacer les fichiers de traitement par lots pour toutes les tâches, sauf les plus triviales.

Michael Stum
la source
10

Dix scripts PowerShell que j'utilise en tant qu'administrateur de base de données SQL Server (tous sont décrits / publié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 d'autorisations sur tous les serveurs SQL de production et charger des données dans une base de données SQL
  3. Découvrez tous les clusters, nœuds et virtuels Windows Server 2003 sur le réseau et chargez-les dans des tables SQL
  4. Découvrez toutes les bases de données sur tous les serveurs SQL tels que définis dans SCCM et chargez-les dans une table SQL
  5. Créer une carte de performance de sauvegarde SQL Server en chargeant des informations de sauvegarde sur tous les serveurs SQL dans une table SQL
  6. Vérifiez que le moteur de déchargement TCP est désactivé dans Windows Server 2003 SP2 (il s'agit d'un destructeur de performances pour de nombreux serveurs SQL)
  7. Vérifiez les alignements de la partition de disque (également une menace pour les performances si les disques sont alignés de manière incorrecte)
  8. Copier les tables SQL d'un serveur à un autre
  9. Recursivley copier tous les packages SSIS utilisant un stockage MSDB d’un serveur à un autre, y compris la structure de dossiers
  10. Créer ma propre visionneuse de dépendance d'objets graphiques
Chad Miller
la source
8

Quel genre de tâches administratives avez-vous écrit avec cela?

surveillance des applications / services: obtenez les chiffres de performance clés à partir des procédures (à distance) EventLog et stockées et affichez-les à partir d'un seul fichier de commandes

Je suis un administrateur de base de données SQL Server. Montrez-moi des choses intéressantes à faire avec cela?

automssqlbackup : sauvegarde quotidienne de MSSQL avec rotation (quotidienne = incrémentielle, hebdomadaire + mensuelle = complète; conserver 5 sauvegardes quotidiennes, 5 hebdomadaires), compression, notification par e-mail

devio
la source
+1 pour automatiser l’ensemble du processus de sauvegarde MSSQL.
Andrei Rînea
Oui ... Powershell est de l'or pur pour automatiser des sauvegardes complexes dans SQL Server. Nous l'utilisons pour compresser et chiffrer des sauvegardes horaires, puis envoyer les fichiers à Amazon S3 pour un stockage hors site: codeblog.theg2.net/2010/02/…
Greg Bray
7

Ayant utilisé des scripts shell Unix dans une carrière précédente, puis passé à l'administration de serveur Windows, je peux dire que j'apprécie vraiment, vraiment PowerShell - je n'ai ni le temps ni la capacité d'apprendre trop de syntaxe arcanique et j'ai été agréablement surpris de constater que beaucoup des scripts PowerShell peuvent être écrits avec un langage très simple ... prenez ce que sa valeur car j’étais habitué à ksh !!

Je prédis que ce sera autour pour longtemps.

Filaire
la source
7

Je pensais que c'était cool: avec SQL Server 2008, vous obtenez de nouvelles extensions PowerShell qui vous permettent de naviguer dans des bases de données SQL, tout comme votre système de fichiers local ou votre registre.

Après avoir installé les outils du client SQL Server, vous pouvez ouvrir n’importe quelle base de données dans PowerShell (via le menu contextuel en cliquant avec le bouton droit de la souris) et la manipuler de manière orientée objet:

PS SQLSERVER:\SQL\MyServer\MyInstance\Databases\ExampleDB\>function prompt {"PS >"}
PS >cd tables
PS >dir

SCHEMA          NAME         CREATED
------          ----         -------
dbo             MyTable      25/06/2009 17:02

PS > dir | format-table name, columns, rowcount, parent

NAME            COLUMNS      ROWCOUNT      PARENT
----            -------      --------      ------
MyTable         {Id, Name}   0             {ExampleDB}

PS >$myTable = dir | where {$_.Name -eq "MyTable"}
PS >$myTable.Script()

SET ANSI_NULLS ON
SET QUOTED_IDENTIFIER ON
CREATE TABLE [dbo].[MyTable](
[Id] [int] IDENTITY(1,1) NOT NULL
[Name] [nText] NOT NULL
) ON [PRIMARY]

PS >set-location \SQL\AnotherServer\Default
PS >cd databases\Northwind\tables
PS >$myTables = dir | where {$_.Rowcount -gt 100 -and $_.HasIndex -eq 1}
PS >$myTables.Count

8

PS >foreach ($table in $tables) {$table.RebuildIndexes(90)}

Notez que la première ligne change simplement l'invite afin qu'elle ne soit pas si longue.

Espérons que mis à part cela, il est évident que ce qui se passe ici :)

Lex
la source
+1 Wow, c'est très utile. Merci!
Jftuga
5

SQL Server 2008 ayant maintenant des options de contexte PowerShell dans Management Studio, Exchange ne se contente pas de l'adopter. En outre, considérez-le comme le remplacement du DOS, car c'est à peu près ce que pensait MS, car ils ne peuvent tout simplement pas améliorer la sécurité de DOS pour les problèmes de compatibilité ascendante. Ils ont donc créé quelque chose de nouveau et wammo, le problème est résolu!

SQLGuyChuck
la source
4

Je suis moi aussi un administrateur de base de données et un scripteur de longue date, revenant aux fichiers de commandes DOS, V3.3! Passé à VB Script mais PS est très puissant. Jetez un coup d'oeil à - Désolé, je ne peux pas poster le lien car je suis un nouvel utilisateur. Obtenu cela du blog d'Otto Helweg. C'est un outil d'inventaire logiciel bon marché et gai.

  • 1- Extrait la liste des ordinateurs à interroger à partir d'une table de base de données
  • 2- Ajoute les données actuelles et l'heure au résultat
  • 3- Enregistre les résultats de l'audit dans une base de données

Exemple de script PowerShell:

# Open the database connection
$dbConn = new-object System.Data.SqlClient.SqlConnection "server=kcdb;database=Inventory;Integrated Security=sspi"
$dbConn.Open()
$sqlQuery = $dbConn.CreateCommand()

# Get all known computers
$sqlQuery.CommandText = "select * from Inventory..Computers"
$reader = $sqlQuery.ExecuteReader()
$computersToQuery = @()
while ($reader.Read()) {
   $computersToQuery += $reader["Computer"]
}

# Close the database connection
$dbConn.Close()

$softwareInventory = @{}
foreach ($computer in $computersToQuery) {
   $psinfoOutput = ./psinfo.exe -s Applications \\$computer

   $foundSoftwareInventory = 0
   $computerName = ""
   foreach ($item in $psinfoOutput) {
      if ($foundSoftwareInventory -eq 1) {
         # Force the results to a string
         # Remove any single quotes which interfere with T-SQL statements
         # Load the result into a hash whereby removing any duplicates
         [string]$softwareInventory[$computerName][$item.Replace("'","")] = ""
      }

      if ($item -like "System information for *") {
         $computerName = $item.Split("\")[2].TrimEnd(":")
      } elseif ($item -eq "Applications:") {
         $foundSoftwareInventory = 1
         $softwareInventory[$computerName] = @{}
      }
   }
}

$dbConn = new-object System.Data.SqlClient.SqlConnection "server=kcdb;database=Inventory;Integrated Security=sspi"
$dbConn.Open()
$sqlQuery = $dbConn.CreateCommand()

foreach ($computer in $softwareInventory.Keys) {
   foreach ($softwareItem in $softwareInventory[$computer].Keys) {
      "Loading-" + $computer + ":" + $softwareItem

      # Try an Update then an Insert 
      trap {
         $sqlQuery.CommandText = "update Inventory..SoftwareInventory set AuditDate = getdate() where  Computer = '" + $computer + "' and Software = '" + $softwareItem + "'"
         $result = $sqlQuery.ExecuteNonQuery()
         continue
      }

      $sqlQuery.CommandText = "insert into Inventory..SoftwareInventory (Computer,Software,AuditDate) values ('" + $computer + "','" + $softwareItem + "',getdate())"
      $result = $sqlQuery.ExecuteNonQuery()
   }
}

$dbConn.Close()

Dave J

Dave Jackson
la source
3

Mon équipe effectue très régulièrement les tâches suivantes avec PowerShell.

  • Répertoriez la mémoire disponible sur tous les nœuds de nos clusters Hyper-V.
  • Gérer un filer Netapp
  • Provisionner de nouveaux ordinateurs virtuels Hyper-V
  • Écrire et lire à partir de listes SharePoint par programme

Jour après jour, je reçois une invite PS tout le temps et je l’utilise pour toutes les tâches uniques pour lesquelles j’utilisais CMD.

Voici quelques exemples de code permettant de lire les listes Sharepoint. J'utilise les services Web de Sharepoint et la nouvelle cmdlet "New-WebServiceProxy" de PowerShell V2.0

$url = "http://server/sites/site/_vti_bin/lists.asmx"
$listWebService = new-webServiceProxy -uri $url -UseDefaultCredential
$listName = "MyList"
$viewGuid = $null
$query= $null
$viewFields = $null
$numRowsReturned = 20000
$queryOptions = $null
$result = $listWebService.GetListItems($listName,$ViewGuid,$query,$viewFields,$numRowsReturned,$queryOptions,$null)

Oisin Grehan a publié un excellent blog sur l’utilisation des services Web Sharepoint, qui m’a servi de base pour créer toutes mes fonctions. Il a même mis en place un superbe script new-webservice.ps1 que vous pouvez utiliser si vous utilisez toujours PowerShell V1.

En outre, voici la fonction de base que j'ai utilisée pour obtenir la mémoire disponible sur les nœuds de mon cluster.

Function Get-AvailableMemory {
param
(
[string[]]
$servers
)
BEGIN {
$query = "select AvailableBytes,__SERVER from Win32_PerfRawData_PerfOS_Memory"

$availableMemory = @{
                    Name="AvailableMemory";
                    Expression = {[math]::round($_.AvailableBytes/1gb,2)}
                    }
$serverName = @{  
                Name ="Server";
                Expression = {$_."__SERVER"}                                      
               }
}
PROCESS {
foreach ($server in $servers){
    get-wmiobject -query $query -computer $server |
    select-object $availableMemory, $serverName
    }
}

END {}    

}
Andy Schneider
la source
Avez-vous un exemple de code que vous souhaitez partager? Je suis particulièrement intéressé par la lecture et l'écriture de listes SharePoint.
Brian
2

J'ai essayé PowerShell pour un petit projet au travail - une migration quotidienne d'un sous-ensemble de ~ 600 utilisateurs et ~ 200 groupes de l' AD d' entreprise vers un ancien système UNIX utilisant des fichiers de type CSV . On m'a offert un script VBScript de 500 lignes (!) Qui a servi de point de départ à un groupe et à ses utilisateurs.

Il s'est avéré qu'un script PowerShell d'une vingtaine de lignes pouvait tout faire ...

En tant qu'utilisateur * NIX (côté serveur et client), j'ai été très agréablement surpris par PowerShell. Même si vous ne connaissez qu'un petit sous-ensemble de commandes, vous pouvez faire un travail vraiment puissant avec elle. J'ai juste besoin d' un accès à distance SSH (-like) ...

Peter Mortensen
la source
recherche psremoting
Sam
1

Comment puis-je ne pas l'utiliser? Toutes les applications de serveur Microsoft qui sortent / sont en cours de mise à niveau sont maintenant gérées à l'aide de Powershell. Une interface utilisateur / console de gestion plus ou moins gênante est ensuite fournie, construite au-dessus de ce noyau qui est souvent lent et qui, comme quelqu'un l’a souligné, manque de fonctionnalités disponibles ... Je ne peux donc pas dire que nous avons vraiment beaucoup de choix ^ ^

Oskar Duveborn
la source
Découvrez ce petit script powershell pour ngen vos assemblées et pour accélérer toutes vos consoles basées sur powershell: msexchangeteam.com/archive/2008/08/01/449426.aspx
Jesse Weigert le
1

Powershell n'est pas parfait, mais si vous l'avez utilisé, vous savez que c'est plutôt cool. Avoir accès à l'intégralité de la bibliothèque .net et aux cmdlets intégrées (et créer vos propres cmdlets à l'aide de PS en 2.0), c'est plutôt cool.

La seule chose qui me manque, c’est un bon IDE pour cela qui, j'en suis sûr, viendra de la SP un jour. À l’heure actuelle, j’utilise le powershell plus et le adminscripteditor d’Idera, qui permettent le débogage et sont plutôt cool.

J'ai pu me détacher assez bien de VB.

Mon plus grand projet à ce jour avec posh consiste à utiliser "powershellASP" pour créer une page Web de base exécutant des commandes powershell et extrayant des informations sur les hôtes VM et VM de plus d'une douzaine d'hôtes VMWare ESXi (gratuits) et les affichant dans des tableaux HTML. Je l'ai fait parce qu'avec le logiciel gratuit VMWare ESXi et aucun centre virtuel, il n'y avait pas d'autre moyen d'obtenir une vue d'ensemble en temps réel de toutes mes machines virtuelles de l'entreprise. PowershellASP est un analyseur tiers gratuit écrit pour IIS et non pris en charge par MS. Donc, il peut faire des choses limitées en ce moment et la documentation est assez rare.


la source
Il y a PowerGUI, et dans Powergui utiliser ScriptEditor.exe, je ne peux pas imaginer comment je peux vivre sans cela ...
Nicolas Dorier
Powershell 2 comprend un grand Powershell ISE (éditeur de script intégré). Le CTP 3 est disponible, RTM est maintenant disponible, version finale en octobre 2009.
Précédente
1

J'ai toute une série de scripts de gestion / d'inventaire qui recherchent des choses différentes dans AD et les interrogent sur WMI pour obtenir des statistiques vitales telles que les partages sur le serveur, l'espace disque, l'espace disque utilisé, etc.

Scripts généraux:

  1. Obtenir de l'espace disque libre / utilisé, de la RAM, etc.
  2. Interrogez WMI pour obtenir des informations sur le BIOS, le modèle de serveur, etc.
  3. Vérifiez la version AV et assurez-vous que certaines entrées de registre sont présentes.
  4. Audit des partages sur les serveurs Windows

Scripts utilisateur:

  1. Énumérez AD en saisissant tous les utilisateurs et les groupes auxquels ils appartiennent, puis écrivez dans Excel ou CSV
  2. Rechercher les utilisateurs actuellement connectés via TS et sur la console

J'en ai un qui énumère toutes les machines invitées VMWare sur mes serveurs ESX

J'ai un script qui saisit les fichiers après x jours et les supprime en toute sécurité.

En gros, je peux faire environ 200 lignes de VBScript et le faire dans PowerShell. Vous pouvez également faire des choses que vous ne pouvez pas faire ou bien faire dans VBScript - comme envoyer des courriels avec pièces jointes - que je fais régulièrement pour m'envoyer les résultats de mes scripts. Vous pouvez également écrire des entrées significatives et uniques dans le journal des événements avec des noms de service personnalisés et des ID d'événement.

C'est ce que je peux penser à mon esprit. Mon outil de prédilection est PowerShell, il facilite simplement la vie.

En gros, il est aussi utile pour un administrateur système que pour les scripts Bash pour un administrateur Unix.

Zypher
la source
0

Je cherchais poweshell pour remplacer les scripts batch de nos clients - programmes en cours d'exécution, scripts d'ouverture de session, etc.

Mais nous avons constaté qu’il fallait ajouter au moins 10 secondes au temps de connexion - c’est-à-dire avec tous les "ajustements" en place. Nous avons donc fini par rester avec ce que nous utilisions.

Baignoires
la source
Ce n’est pas la chose la plus rapide au monde, mais elle peut faire à peu près tout. Si tout ce que vous avez à faire est de mapper quelques lecteurs, les scripts de traitement par lots sont bien plus rapides.
sysadmin1138
0

N'étant pas un développeur .NET, l'utilisation de tous les goodies liés à .NET que PS vous permet d'utiliser est limitée. Cependant, étant un administrateur Exchange (entre autres), l'intégration de PowerShell pour Exchange 2007 est AWESOME. J'ai enfin un moteur de script fiable pour mon système de messagerie; jusqu'à présent, je peux m'envoyer des statistiques mensuelles sur les boîtes aux lettres de chacun, ajuster à qui différentes adresses de messagerie sont attribuées en fonction de l'heure, créer et attribuer automatiquement des autorisations sur les dossiers publics et équilibrer la charge des utilisateurs entre nos deux bases de messagerie. . L’autre atout du point de vue d’Ex07 est qu’après avoir fait quoi que ce soit dans l’interface graphique, il vous présente les commandes PowerShell appropriées à ce que vous venez de faire. Copiez-les et vous obtiendrez éventuellement un ensemble de scripts PS capables de rétablir votre environnement Exchange à partir de zéro.

RainyRat
la source
0

Automatisation de certaines tâches avec les vérifications de serveur sur lesquelles je travaille (collecte des informations de base auprès de WMI et collecte des erreurs et des avertissements dans les journaux des événements).

Sa gestion des journaux d'événements est géniale.

J'ai récemment écrit un script pour désactiver le menu contextuel de mise à jour automatique que Foxit Reader a activé par défaut sur un domaine sur lequel le script est exécuté. Il extrait une liste d'ordinateurs de AD, puis teste pour voir s'il est actif, puis change un 1 en 0.

Une chose que j'ai oubliée!

Vous avez quasiment accès aux bibliothèques .NET. C'est un peu pénible de faire des choses vraiment compliquées avec ça, mais si vous en avez le besoin, c'est pour vous.

nonades
la source
0

Nous l'utilisons pour un certain nombre de tâches administratives, étant principalement une boutique Microsoft. Certains scripts sont simples, comme le nettoyage de vieux fichiers ou la défragmentation de machines et l’enregistrement des résultats. Un script audite les ordinateurs en utilisant principalement WMI et enregistre les résultats dans une base de données. Il contient des éléments tels que le matériel (CPU, RAM, disques, etc.), les informations réseau, les utilisateurs locaux, les logiciels installés et les informations de profil. Il y en a un qui appelle un service Web pour envoyer un courrier électronique. Je pense qu'à l'avenir, il remplacera le reste des scripts VBScript qui sont encore utilisés. Nous ne l'utilisons pas encore pour les tâches Exchange ou SQL Server.

J'attends avec impatience la prochaine version, qui prendra en charge les tâches en arrière-plan, les transactions, une meilleure gestion des exceptions, un nouvel environnement ISE (Integrated Scripting Environment), un meilleur débogage, etc.

Bratch
la source
0

Les administrateurs Windows n'utilisent pas encore PowerShell. Ils en ont tous entendu parler, mais ils n'ont pas pris le temps de s'y familiariser.

J'ai décidé de regarder moi-même. Venant d’un environnement shell Unix, j’ai pensé que Windows devait enfin disposer d’un véritable environnement de programmation shell. Je pense que Microsoft a bien fait certaines choses avec PowerShell et qu’il ya des choses qui ne vont pas très bien.

L’utilisation d’objets en tant qu’intermédiaire entre les applets de commande dans PowerShell est un avantage. Cela confère à PowerShell le pouvoir nécessaire pour que les scripts textuels se fassent mal pour se rendre au travail.

Du côté négatif, ils n’exploitent pas beaucoup des commandes du shell Unix. Ainsi, la courbe d'apprentissage est inutilement raide et n'aide pas les gens à passer facilement d'Unix à PowerShell ou inversement. Le mieux est de définir des alias pour certaines des applets de commande PowerShell, telles que ls aliasing Get-ChildItem, tous les commutateurs de ligne de commande étant différents.

Juste mes deux cents...

utilisateur7286
la source
0

C’est plutôt une réponse des développeurs, mais c’est la réalité et nous allons commencer à le tester dans les prochains mois. Je commence à apprendre PowerShell afin d'écrire des scripts pour intégrer les tâches SQL Server dans notre environnement d' intégration continue . Les scripts d'intégration continue seront principalement gérés par NAnt et MSBuild via JetBrains TeamCity .

De plus, je souhaite passer à PowerShell en tant que mon shell de commande Windows principal à des fins générales, notamment pour les tâches d'administration de la base de données SQL Server.

Désolé, je n'ai pas encore d'échantillons de code à partager, car j'apprends encore! Je serai heureux d'en poster quand même, :)

Voici un exemple de code d'une seule ligne à laquelle je viens de répondre avec une autre question de votre part :) Mais hé, pour le wiki ...

Cela listera les correctifs installés:

Get-ChildItem -Path HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\HotFix
squillman
la source
Hourra pour Powershell, dommage qu'il ne soit pas installé par défaut sur un serveur 2003. L'emplacement du registre a bien aidé!
Nick Kavadias
0

Bien que ce ne soit pas le langage de script le plus facile à maîtriser (expérience solide avec des tuyaux supposés) et qu’il ait son propre moyen de multiplier les bizarreries (donnez-moi une simple chose ressemblant à sed !!), je trouve PowerShell assez puissant. Pas jusqu'au niveau de Bash ou d'autres shells Unix, mais quand même.

Je l'utilise pour superviser certaines exportations et importations de base de données avec des avertissements par courrier électronique en cas de problème, ainsi que pour effectuer des opérations de traitement par lots de routine.

C'est certainement déjà mon principal shell Windows, bien que ce ne soit pas vraiment le genre "écrire moins faire plus". PowerShell joue contre sa verbosité (et son héritage .NET).

Berzemus
la source
0

La version 1.0 de PowerShell était extrêmement limitée à bien des égards, mais la version 2.0 progresse bien. Comparé aux scripts batch, il est beaucoup plus puissant. Je ne l'utilise pas vraiment en tant que shell, mais uniquement pour les scripts, mon expérience est donc colorée en conséquence. Je n'aime pas vraiment la syntaxe ( -eqvs ==, -gtvs >, etc.), mais j'apprécie de pouvoir me connecter à .NET si j'ai besoin de faire quelque chose de bizarre. Je pense que par la version 3.0 ce sera génial. À l'heure actuelle, je le mettrais fermement dans la catégorie "fait le travail".

Je l'utilise principalement pour automatiser le déploiement de code. C’est un domaine dans lequel il brille lorsqu’il crée quelque chose en C #. Les opérations liées au shell, telles que la copie récursive de répertoires et d’autres choses que les scripteurs Bash tiennent pour acquis depuis des années, facilitent grandement les choses.

Peter Mortensen
la source