Outils CLUB MOSS – FRANCE: Powershell

Les scripts en PowerShell, pour MOSS c’est un gros avantage ainsi que pour les IT Pro.

Windows PowerShell est un nouvel environnement de ligne de commande Windows spécialement conçu pour les administrateurs système (ancien nom de code MONAD). Il comprend une invite interactive et un environnement de script qui peuvent être utilisés indépendamment l’un de l’autre ou ensemble.

Contrairement à la plupart des environnements, qui acceptent et retournent du texte, Windows PowerShell est basé sur le Common Language Runtime (CLR) .NET et le .NET Framework, et accepte et retourne des objets .NET. Cette modification fondamentale de l’environnement apporte des outils et méthodes entièrement nouveaux pour la gestion et la configuration de Windows.

Windows PowerShell introduit le concept « d’applet de commande », un outil de ligne de commande simple, à fonction unique, intégré dans l’environnement. L’utilisation de chaque applet de commande séparément est faisable, mais leur puissance se révèle lorsque vous combinez ces outils simples pour effectuer des tâches complexes. Windows PowerShell inclut plus de cent applets de commande principales. Il est possible d’écrire ses propres applets de commande et les partager avec d’autres utilisateurs.

Comme de nombreux environnements, Windows PowerShell donne accès au système de fichiers de l’ordinateur. En outre, les fournisseurs de Windows PowerShell  permet d’accéder à d’autres magasins de données, tels que le Registre et les magasins de certificats de signatures numériques, aussi facilement que vous accédez au système de fichiers.

Un Guide de mise en route est proposé à l’installation de PowerShell 1.0, avec une introduction à Windows PowerShell : le langage, les applets de commande, les fournisseurs et l’utilisation d’objets.

 

Voici les avancées les plus importantes actuelles :

      1. PowerShell est orienté objet

      2. PowerShell donne accès aux objets .Net

      3. PowerShell apporte une richesse de commandes exceptionnelle

      4. PowerShell offre une cohérence des commandes et des paramètres associés

      5. PowerShell offre une aide sur les commandes digne de ce nom

      6. PowerShell est facile à apprendre

      7. PowerShell peut être sécurisé

      8. PowerShell va inclure dans sa version 2 une console de management (voir le site de MICROSOSFT Graphical PowerShell – this is an “early alpha” version of Graphical PowerShell).

Une applet de commande est une commande à fonctionnalité unique qui manipule des objets dans Windows PowerShell. Elles sont identifiables au format de leur nom : un verbe et un substantif anglais, séparés par un tiret (-), comme Get-Help, Get-Process et Start-Service. Dans les environnements traditionnels, les commandes sont des programmes exécutables allant du très simple (comme attrib.exe) au très complexe (comme netsh.exe).

 

Windows PowerShell comprend les fonctionnalités suivantes :

• Plus de 130 outils de ligne de commande (appelés « cmdlets ») permettant d’effectuer des tâches d’administration système courantes, comme la gestion de services, de processus, de journaux d’événements, de certificats et du Registre et d’utiliser Windows Management Instrumentation (WMI).
• Outils de ligne de commande conçus pour être rapidement maîtrisés et facilement utilisés grâce à des conventions d’affectation de nom standard et des paramètres communs, et outils simples pour le tri, le filtrage et la mise en forme des données et des objets.
• Prise en charge des langages de script et des outils de ligne de commande existants et de plusieurs versions de Windows, notamment Windows XP, Windows Server 2003, Windows Vista™ et Windows Server « Longhorn » (nom de code).
• Fonctionnalités qui permettent aux utilisateurs d’explorer des banques de données, le Registre et des magasins de certificats, par exemple, comme s’il s’agissait de systèmes de fichiers.
• Utilitaires standard pour gérer les données Windows dans différents magasins et formats, notamment Active Directory Service Interfaces (ADSI), Windows Management Instrumentation (WMI), objets Component Object Model (COM), ActiveX Data Objects (ADO), HTML et XML.
• Analyse des expressions élaborées et manipulation des objets .NET Framework sur la ligne de commande, y compris le traitement en pipeline des objets, qui permet aux informaticiens de travailler plus efficacement.
• Interface évolutive qui permet aux éditeurs de logiciels et aux développeurs en entreprise de créer des cmdlets personnalisés afin de répondre à des besoins d’application et d’administration de système spécifiques.

Installation du PowerShell 1.0

Pour bien débuter avec le PowerShell il faut installer les composants suivants :  

  • PowerShell se suffit à lui-même si vous êtes sous Windows Vista.
  • Le Service Pack 2 si vous êtes sous Windows XP
  • Le Service Pack 1 si vous êtes Windows Server 2003 (334 Mo)
  • Framework .net 2.0 (22 Mo)
  • Microsoft PowerShell (1,7 Mo)
  • Voir la KB Numéro d’article : 926139 http://support.microsoft.com/kb/926139 
  • PowerShell s’installe sur Microsoft Windows Server 2003 R2, Microsoft Windows Server 2003 avec Service Pack 2, de Microsoft Windows Server 2003 avec Service Pack 1
  • Le Microsoft .NET Framework 2.0 (2.0.50727) est nécessaire.
Windows PowerShell 1.0 est pris en charge sur systèmes 32 bits et des systèmes 64 bits. Les systèmes 64 bits peuvent est x 64 basé ou Itanium-based.

—————————————————————————————————————–

Comment télécharger Windows PowerShell

Pour télécharger une version anglaise de Windows PowerShell 1.0, sélectionnez le package d’installation pour la version de Windows concernée.

Windows PowerShell 1.0 pour Windows XP avec versions x 86

Download the Windows PowerShell 1.0 WindowsXP-x86 English package now. (http://go.microsoft.com/fwlink/?LinkID=75788&clcid=0x09)

Windows PowerShell 1.0 pour Windows XP avec versions x 64

Download the Windows PowerShell 1.0 WindowsXP-x64 English package now. (http://go.microsoft.com/fwlink/?LinkID=75789&clcid=0x09)

Windows PowerShell 1.0 pour Windows Server 2003 avec versions x 86

Download the Windows PowerShell 1.0 WindowsServer2003-x86 English package now. (http://go.microsoft.com/fwlink/?LinkID=75790&clcid=0x09)

Windows PowerShell 1.0 pour Windows Server 2003 avec versions x 64

Download the Windows PowerShell 1.0 WindowsServer2003-x64 English package now. (http://go.microsoft.com/fwlink/?LinkID=75791&clcid=0x09)

Windows PowerShell 1.0 pour Windows Server 2003, versions Itanium

Download the Windows PowerShell 1.0 WindowsServer2003-ia64 English package now.

Module d’installation localisé Windows PowerShell 1.0 pour Windows XP (KB926140)

http://www.microsoft.com/downloads/details.aspx?displaylang=fr&FamilyID=30125A46-B97C-4704-AA10-605E809D5933

Si vous utilisez une version de Windows traduite en allemand, espagnol, français, italien, japonais, coréen, portugais, russe, chinois simplifié ou chinois traditionnel, utilisez le lien Télécharger de cette page pour installer le module d’installation localisé de Windows PowerShell 1.0. Pour plus d’informations, consultez l’article 926140 de la Base de connaissances (KB).

Module d’installation localisé Windows PowerShell 1.0 pour Windows Server 2003 (KB926140)

http://www.microsoft.com/downloads/details.aspx?familyid=C61FB27B-E71C-4ECF-9D2C-9B299B149490&displaylang=fr

Module d’interface multilingue.

Si vous utilisez une version MUI (interface multilingue) de Windows qui permet d’afficher l’interface Windows dans plusieurs langues, installez la version anglaise de Windows PowerShell 1.0, puis le Module d’interface multilingue Windows PowerShell 1.0. Le Module d’interface multilingue n’inclut pas le programme Windows PowerShell. Pour plus d’informations, consultez l’article 926141 de la Base de connaissances (KB).

Avant d’installer Windows PowerShell 1.0, vous devez désinstaller toutes les autres versions de Windows PowerShell 1.0. Il n’est pas nécessaire de redémarrer l’ordinateur après l’installation de Windows PowerShell 1.0, à moins que des fichiers d’autres versions de Windows PowerShell 1.0 n’aient été utilisés par un autre programme au cours de l’installation.

—————————————————————————————————————-

Pour l’installation de la version 2.0 du PowerShell ce sera l’objet d’un autre article.

—————————————————————————————————————-

Comment désinstaller Windows PowerShell

Vous ne pouvez pas installer Windows PowerShell 1.0 s’il est déjà installé. Pour déterminer si Windows PowerShell 1.0 est installé, vous recherchez the Install Entrée de registre dans le sous-clé suivant de Registre :

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Powershell\1\Install

Si la valeur the Install entrée est 1, Windows PowerShell 1.0 est installé. Si the Install entrée n’est pas présente, Windows PowerShell 1.0 n’est pas installé.

Comment désinstaller Windows PowerShell dans Windows Server 2003

Dans Windows Server 2003, procédez comme suit pour désinstaller Windows PowerShell 1.0 :

1. Cliquez sur Démarrer,cliquez sur Exécuter, tapez appwiz.cpl, Et vous puis cliquez sur OK.

2. Sélectionnez la case à cocher Afficher les mises à jour.

3. Dans la liste Currently installed programs and updates, recherchez l’entrée pour le correctif qui a installé Windows PowerShell 1.0. L’entrée de correctif ressemblera à une des entrées suivantes selon le package d’installation utilisé :

  • Correctif pour Windows Server 2003 (KB926139)
  • Correctif pour Windows Server 2003 (KB926140)
  • Correctif pour Windows Server 2003 (KB926141)

4. Cliquez sur l’entrée Windows PowerShell de correctif et puis cliquez sur Supprimer.

5. Suivez les instructions pour supprimer le correctif pour Windows PowerShell(TM) 1.0.

—————————————————————————————————————–

En ce qui concerne les commandes, alias… voir le site  en français (d’Arnaud Petitjean et de Robin Lemesle) :

http://powershell-scripting.com/index.php?option=com_content&task=view&id=12&Itemid=32

PowerShell-Scripting.com – Résumé de leur livre

Un livre sur Windows PowerShell pour découvrir pourquoi et comment PowerShell est aujourd’hui au cœur de la stratégie Microsoft pour l’administration de ses nouveaux produits : Windows Server 2008, Exchange 2007, Configuration Manager 2007, Operation Manager 2007, etc.De la technologie .NET aux objets COM en passant par WMI et ADSI, découvrez au travers de nombreux cas concrets d’utilisation en entreprise comment Windows PowerShell peut vous aider à devenir plus performant dans vos tâches quotidiennes d’administration système. Ecrit par les créateurs du site Powershell-Scripting.com, ce livre s’adresse à la fois aux IT pros souhaitant optimiser leurs tâches d’administration système, mais aussi à un public intermédiaire soucieux d’acquérir de nouvelles compétences.

Aperçu de la table des matières :

A la découverte de PowerShell – Les fondamentaux – Maîtrise du Shell – Gestion des erreurs et débogage – La sécurité – Manipulation des objets du Framework .NET – Objets COM – Manipulation d’objets annuaire avec ADSI – WMI – Études de cas…

Vous pouvez dors et déjà le précommander sur AMAZON où il est vendu 37 €.

Je viens de le lire, il est excellent, avec de nombreux exemples et une partie sécurité passionnante.

 

Guide élémentaire de Windows PowerShell™

Il est inclus dans le package d’installation du PowerShell 1.0 est vous offre plus de 120 pages de renseignement. Sont inclus 4 documents (voir ci-dessous).

image

Les avantages

du PowerShell sont multiples, en 1er cela permet d’évoluer, d’avoir un langage qui va être commun pour toutes les plate-formes de MICROSOFT. Souvent quand un administrateur commence à faire du script, on se demande s’il veut devenir dév. !

Lire l’excellent article sur ce sujet écrit par :  Don Jones est le gourou principal des scripts chez SAPIEN Technologies et formateur pour Scriptingtraining Com. Vous pouvez le joindre par le biais de son site Web à l’adresse suivante : ScriptingAnswers.com.

source – http://technet.microsoft.com/fr-fr/magazine/cc137791.aspx

L’aide est remarquable ! Ainsi que l’aide-mémoire du langage après installation.

image

 

"Le langage Windows PowerShell™ se devait d’être simple et intuitif afin que les administrateurs puissent le maîtriser sans suivre de trop longues formations. Il se devait également d’être relativement souple afin de s’adapter à l’ensemble des fonctionnalités puissantes que Windows PowerShell lui-même propose aux utilisateurs.

Windows PowerShell étant basé sur Microsoft® .NET Framework, sa syntaxe de script devait être aisément adaptable à .NET. Lors de la création d’un langage de script pour Windows PowerShell, les concepteurs ont choisi une syntaxe qui correspond essentiellement à un langage C# très simplifié (prononcé C-Sharp, l’un des langages fournis avec .NET Framework) . Pourquoi ne pas s’inspirer d’une syntaxe de type VBScript ? Le langage de script Windows PowerShell n’est en fait pas tellement différent de VBScript, mais en s’approchant davantage de la syntaxe C#, PowerShell propose une sorte de base initiale pour l’apprentissage de la programmation .NET Framework. Si vous décidez un jour de passer à Visual Studio® et de commencer à écrire des applications C#, la majeure partie de votre syntaxe de script Windows PowerShell pourra vous servir en ce sens.

Dans ce contexte, les constructions sont l’une des choses les plus importantes dans le langage de script Windows PowerShell (ou dans tout autre langage de script). Il s’agit d’éléments de langage spéciaux permettant à Windows PowerShell d’effectuer des comparaisons logiques pour entreprendre diverses actions en fonctions des résultats ou pour permettre de répéter indéfiniment une ou plusieurs instructions."

http://technet.microsoft.com/fr-fr/magazine/cc162520.aspx

En conclusion,

voici un outil d’administration simple qui se sert de constructions pour effectuer sa tâche. Qu’il soit écrit de manière interactive dans Windows PowerShell ou enregistré dans un fichier PS1 afin de pouvoir le réutiliser aisément, cet outil facile à gérer vous permet de vérifier l’état d’un service sur divers ordinateurs et vous démontre à quel point les constructions s’avèrent utiles dans l’automatisation des tâches d’administration.

Contrairement aux commandes d’interface de ligne de commande traditionnelles, les applets de commande Windows PowerShell sont conçues pour traiter des objets, informations structurées allant au-delà de simples chaînes de caractères apparaissant à l’écran. La sortie d’une commande contient toujours des informations supplémentaires utilisables si besoin est.

image

—————————————————————————————————————–

Voici des informations sur la nouvelle version du Windows PowerShell 2.0 CTP – La CTP2

(Community Technology Preview) de PowerShell V2 est disponible sur le site internet de Microsoft. Download details: Windows PowerShell 2.0 CTP

Conçu comme le successeur de Windows PowerShell 1.0, Windows PowerShell V2 marque également une évolution majeur en comparaison avec la première Release de la CTP 1.0. Les nouveautés, sont surtout des améliorations concernant le remoting, la gestion des points d’arrêt, et des événements via l’ajout de nouvelles "commandelettes" (Get-Event, Pop-Runspace, Get-Random, ,etc.).
D’autres améliorations :
– La déclaration des attributs pour les cmdletscripts.
– L’apparition d’une nouvelle commandelette « Invoke-Command » Pour exécuter des commandes à distance (en remplacement de Invoke-expression liée aux paramètres Runspace et ComputerName.
– Le remplacement de New-PSBreakPoint par Set-PSBreakPoint.
– Le remplacement de certaines variables ($Culture -> $PSCulture, $UICulture -> $PSUICulture, $Cmdlet -> $PSCmdlet).
– L’ajout de nouvelles commendelette comme par exemple Get-Event.
– Etc.
Pour plus d’information sur les nouveautés, téléchargez la CTP2 ainsi que les Release Notes ICI

Remarque :

Elle est émise par par Robin Lemesle : "Contrairement à certaines informations publiées sur internet, PowerShell V2 ne permettra pas l’exécution à distance de commandes PowerShell sur un server Windows 2008 "Core". En effet, la version core ne dispose pas du Framework .NET indispensable au fonctionnement de PowerShell, et ce pour des raisons de sécurité. Néanmoins l’administration à distance d’un serveur "Core" reste toujours possible avec PowerShell via WMI.

Attention :

Microsoft a bien informé que Windows PowerShell V2 CTP2 n’est pas destiné à l’intégration dans les environnements de production. La version CTP pour Community Technology Preview signifie que Windows PowerShell V2 est encore en phase bêta".  Voir le site en anglais : http://www.microsoft.com/technet/scriptcenter/topics/winpsh/pshell2.mspx

Téléchargement en anglais de :

This software is a pre-release version and should not be deployed in a production environment.

http://www.microsoft.com/downloads/details.aspx?FamilyId=7C8051C2-9BFC-4C81-859D-0864979FA403&displaylang=en

————————————————————————————————————–

Des outils arrivent :

Le SDK :

http://msdn.microsoft.com/en-us/library/aa830112.aspx

The Admin Script Editor (ASE) Home Page :

ASE est un "scripteur professionnel" comme aucun autre. Conçu exclusivement pour des administrateurs de Windows. ASE offre un éventail de dispositifs pros. et des outils !

Essential PowerShell Tools

http://www.powershell.com/plus/

This a downloads page for PowerGUI

An extensible graphical administrative console and IDE for managing systems based on Windows PowerShell. See the PowerGUI homepage for more information about the product.

http://powergui.org/downloads.jspa

 

Petit exemple Lister les adresses IP d’un ordinateur :

#Lister les adresses IP d’un ordinateur
Get-WmiObject Win32_NetworkAdapterConfiguration -Filter IPEnabled=TRUE -ComputerName . | Select-Object -Property IPAddress
#Lister les données de configuration IP
Get-WmiObject Win32_NetworkAdapterConfiguration -Filter IPEnabled=TRUE -ComputerName .
#Test Ping sur des ordinateurs
"127.0.0.1","fabm-srv-01","fabm-dc-01" | ForEach {Get-WmiObject Win32_PingStatus -Filter ("Address=’" + $_ + "’") -ComputerName .} | Select -Property Address,ResponseTime,StatusCode
1..10 | ForEach {Get-WmiObject Win32_PingStatus -Filter ("Address=’192.168.102." + $_ + "’") -ComputerName .} | Select -Property Address,ResponseTime,StatusCode
#Récupération de propriétés de cartes réseau
Get-WmiObject -Class Win32_NetworkAdapter -ComputerName .
#Configurer les paramètres réseau
Get-WmiObject -Class Win32_NetworkAdapterconfiguration  |get-member  |out-host -paging
cls

image

Windows PowerShell
Copyright (C) 2006 Microsoft Corporation. Tous droits réservés.

Name                         MemberType   Definition
—-                         ———-   ———-
DisableIPSec                 Method       System.Management.ManagementBaseObject DisableIPSec()
EnableDHCP                   Method       System.Management.ManagementBaseObject EnableDHCP()
EnableIPSec                  Method       System.Management.ManagementBaseObject EnableIPSec(System.String[] IPSecPe…
EnableStatic                 Method       System.Management.ManagementBaseObject EnableStatic(System.String[] IPAddr…
ReleaseDHCPLease             Method       System.Management.ManagementBaseObject ReleaseDHCPLease()
RenewDHCPLease               Method       System.Management.ManagementBaseObject RenewDHCPLease()
SetDNSDomain                 Method       System.Management.ManagementBaseObject SetDNSDomain(System.String DNSDomain)
SetDNSServerSearchOrder      Method       System.Management.ManagementBaseObject SetDNSServerSearchOrder(System.Stri…
SetDynamicDNSRegistration    Method       System.Management.ManagementBaseObject SetDynamicDNSRegistration(System.Bo…
SetGateways                  Method       System.Management.ManagementBaseObject SetGateways(System.String[] Default…
SetIPConnectionMetric        Method       System.Management.ManagementBaseObject SetIPConnectionMetric(System.UInt32…
SetIPXFrameTypeNetworkPairs  Method       System.Management.ManagementBaseObject SetIPXFrameTypeNetworkPairs(System….
SetTcpipNetbios              Method       System.Management.ManagementBaseObject SetTcpipNetbios(System.UInt32 Tcpip…
SetWINSServer                Method       System.Management.ManagementBaseObject SetWINSServer(System.String WINSPri…
ArpAlwaysSourceRoute         Property     System.Boolean ArpAlwaysSourceRoute {get;set;}
ArpUseEtherSNAP              Property     System.Boolean ArpUseEtherSNAP {get;set;}
Caption                      Property     System.String Caption {get;set;}
DatabasePath                 Property     System.String DatabasePath {get;set;}
DeadGWDetectEnabled          Property     System.Boolean DeadGWDetectEnabled {get;set;}
DefaultIPGateway             Property     System.String[] DefaultIPGateway {get;set;}
DefaultTOS                   Property     System.Byte DefaultTOS {get;set;}
DefaultTTL                   Property     System.Byte DefaultTTL {get;set;}
Description                  Property     System.String Description {get;set;}
DHCPEnabled                  Property     System.Boolean DHCPEnabled {get;set;}
DHCPLeaseExpires             Property     System.String DHCPLeaseExpires {get;set;}
DHCPLeaseObtained            Property     System.String DHCPLeaseObtained {get;set;}
DHCPServer                   Property     System.String DHCPServer {get;set;}
DNSDomain                    Property     System.String DNSDomain {get;set;}
DNSDomainSuffixSearchOrder   Property     System.String[] DNSDomainSuffixSearchOrder {get;set;}
DNSEnabledForWINSResolution  Property     System.Boolean DNSEnabledForWINSResolution {get;set;}
DNSHostName                  Property     System.String DNSHostName {get;set;}
DNSServerSearchOrder         Property     System.String[] DNSServerSearchOrder {get;set;}
DomainDNSRegistrationEnabled Property     System.Boolean DomainDNSRegistrationEnabled {get;set;}
ForwardBufferMemory          Property     System.UInt32 ForwardBufferMemory {get;set;}
FullDNSRegistrationEnabled   Property     System.Boolean FullDNSRegistrationEnabled {get;set;}
GatewayCostMetric            Property     System.UInt16[] GatewayCostMetric {get;set;}
IGMPLevel                    Property     System.Byte IGMPLevel {get;set;}
Index                        Property     System.UInt32 Index {get;set;}
IPAddress                    Property     System.String[] IPAddress {get;set;}
IPConnectionMetric           Property     System.UInt32 IPConnectionMetric {get;set;}
IPEnabled                    Property     System.Boolean IPEnabled {get;set;}
IPFilterSecurityEnabled      Property     System.Boolean IPFilterSecurityEnabled {get;set;}
IPPortSecurityEnabled        Property     System.Boolean IPPortSecurityEnabled {get;set;}
<ESPACE> page suivante ; <ENTRÉE> ligne suivante ; Q quitter
IPSecPermitIPProtocols       Property     System.String[] IPSecPermitIPProtocols {get;set;}
<ESPACE> page suivante ; <ENTRÉE> ligne suivante ; Q quitter
IPSecPermitTCPPorts          Property     System.String[] IPSecPermitTCPPorts {get;set;}
<ESPACE> page suivante ; <ENTRÉE> ligne suivante ; Q quitter
PS C:\Documents and Settings\Giraudy>

image

P. Erol GIRAUDY
Président du Club MOSS 2007 et MUG (MVP MOSS).
http://clubmoss2007.org
http://www.microsoft.com/france/mstechdays/

Outils CLUB MOSS – FRANCE: Powershell

Publicités

8 Commentaires

Classé dans Non classé

8 réponses à “Outils CLUB MOSS – FRANCE: Powershell

  1. Pierre Erol

    Get-EventLog -logname Application -newest 10 | format-list
    Récupérer les 10 derniers événements d\’un journal

    http://powershell-scripting.com/index.php?option=com_content&task=view&id=187&Itemid=71
    Voici un script créé par korryoo qui permet de fouiller dans les journaux des événements pour savoir si des erreurs de disque sont apparues. Si tel est le cas, alors ce script envoie un mail pour vous prévenir. Enjoy 🙂
    $erreur=Get-EventLog -logname System | Where-Object {$_.EventID -eq 7 -and $_.Source -eq "Disk"}if ($erreur -ne $null)  {   $nom=hostname   $expediteur = "

    toto@test.com

    Cet e-mail est protégé contre les robots collecteurs de mails, votre navigateur doit accepter le Javascript pour le voir

    "   $destinataire = "

    toto@test.com

    Cet e-mail est protégé contre les robots collecteurs de mails, votre navigateur doit accepter le Javascript pour le voir

    "   $serveur = "smtp.free.fr"   $objet = "Disque dur défectueux " + [System.DateTime]::Now   $texte = "Bonjour, le pc $nom à des erreurs sur son disque dur. Merci de passer le message au Service informatique concerné."   $message = new-object System.Net.Mail.MailMessage $expediteur, $destinataire, $objet, $texte   $client = new-object System.Net.Mail.SmtpClient $serveur   $client.Credentials = [System.Net.CredentialCache]::DefaultNetworkCredentials   $client.Send($message)}
     
    ——
     
    Get-EventLog -listLister les différents journaux du système
     
    —-
    Créer un utilisateur
    #cn=Users car OU Builtin, sinon spécifier ou=monOU$objOU=[ADSI]"LDAP://localhost:389/cn=Users,dc=powershell-scripting,dc=com"$objUser = $objOU.Create("user", "cn=Arnaud Petitjean")# sAMAccountName est le seul attribut obligatoire # à spécifier pour créer un compte$objUser.put("sAMAccountName", "petitjeana")# à spécifier pour bénéficier d\’une ouverture de session Kerberisée$objUser.put("userprincipalName", "

    petitjeana@powershell-scripting.com

    Cet e-mail est protégé contre les robots collecteurs de mails, votre navigateur doit accepter le Javascript pour le voir

    ")# prénom$objUser.put("givenName", "Arnaud")# nom$objUser.put("sn", "PETITJEAN")# Numéro de téléphone$objUser.put("telephoneNumber", "0556584744")# Description$objUser.put("description", "Administrateur PowerShell")# Nom affiché : nom qui sera visible dans l\’annuaire Exchange$objUser.put("displayName", "Arnaud Petitjean PowerShell-Scripting Corporation")# Chemin du profil (si profil errant)$objUser.put("profilePath", "\\\\monserveur\\profils\\petitjean")# Script d\’ouverture de session$objUser.put("scriptPath", "logonScript.vbs")# Chemin de la homedirectory$objUser.put("homeDirectory", "\\\\monserveur\\users\\petitjean")# Lettre de la homedirectory$objUser.put("homeDrive", "H:")$objUser.SetInfo()
     
    ————–
     
     

  2. Pierre Erol

    #Lister les adresses IP d\’un ordinateurGet-WmiObject Win32_NetworkAdapterConfiguration -Filter IPEnabled=TRUE -ComputerName . | Select-Object -Property IPAddress #Lister les données de configuration IPGet-WmiObject Win32_NetworkAdapterConfiguration -Filter IPEnabled=TRUE -ComputerName .#Test Ping sur des ordinateurs"127.0.0.1","fabm-srv-01","fabm-dc-01" | ForEach {Get-WmiObject Win32_PingStatus -Filter ("Address=\’" + $_ + "\’") -ComputerName .} | Select -Property Address,ResponseTime,StatusCode1..10 | ForEach {Get-WmiObject Win32_PingStatus -Filter ("Address=\’192.168.102." + $_ + "\’") -ComputerName .} | Select -Property Address,ResponseTime,StatusCode#Récupération de propriétés de cartes réseauGet-WmiObject -Class Win32_NetworkAdapter -ComputerName .#Configurer les paramètres réseauGet-WmiObject -Class Win32_NetworkAdapterconfiguration  |get-member  |out-host -pagingcls

     

  3. Pierre Erol

    #***********************************************************#**Utilisation de Windows PowerShell pour l\’administration**#***********************************************************             #**********************************#Collecte d\’informations sur les ordinateurs#********************************************Get-help get-wmiobject#les classes WMI disponibleget-wmiobject -list |Out-host -paging#Lister les informations sur le BIOS de la machine localeGet-WmiObject Win32_BIOS #Lister toutes les propriétésGet-WmiObject Win32_BIOS | Select -Property [a-z]*#Le faire à distanceGet-WmiObject Win32_BIOS -ComputerName .Get-WmiObject Win32_BIOS -ComputerName fabm-srv-01#Le faire avec une liste de machines"fabm-SRV-01","fabm-dc-01" | ForEach {Get-WmiObject Win32_BIOS -ComputerName  $_ }#Formater la reponse"fabm-SRV-01","fabm-dc-01" | ForEach -Process {Get-WmiObject Win32_BIOS -ComputerName $_ } | format-table#Encore mieux !!"fabm-SRV-01","fabm-dc-01" | ForEach -Process {Get-WmiObject Win32_BIOS -ComputerName $_ } | format-table -wrap#Listage des informations sur le processeur Win32_Processor##Listage des correctifs logiciels installés Win32_QuickFixEngineering##Listage des informations de version d\’un système d\’exploitation Win32_OperatingSystem ##Obtention de l\’espace disque disponible : classe WMI Win32_LogicalDisk. Get-WmiObject Win32_LogicalDisk -filter "DriveType=3"#Information sur les disques distantGet-WmiObject Win32_LogicalDisk -Filter "DriveType=3" -ComputerName fabm-srv-01#Espace libre totalGet-WmiObject Win32_LogicalDisk -Filter "DriveType=3" -ComputerName fabm-srv-01 | Measure-Object -Property FreeSpace,Size -Sum#Améliorer l\’affichageGet-WmiObject Win32_LogicalDisk -Filter "DriveType=3" -ComputerName fabm-srv-01 | Measure-Object -Property FreeSpace,Size -Sum | Select-Object -Property Property,Sum#Obtention de l\’utilisateur connecté à un ordinateurGet-WmiObject Win32_ComputerSystem -Property UserName -ComputerName .#Afficher l\’état des services sur une machine distanteGet-WmiObject Win32_Service -ComputerName fabm-srv-01 | Select-Object -Property Status,Name,DisplayName | Out-Host -Paging#  utiliser Format-Table avec les paramètres AutoSize et Wrap Get-WmiObject Win32_Service -ComputerName fabm-srv-01 | Format-Table -Property Status,Name,DisplayName -AutoSize –Wrap#Journaux d’événementsGet-eventlog –list#Afficher le contenu du journal systemGet-eventlog system#Filtrer sur la source des événementsGet-eventlog "Directory Service" |  where {$_.source -eq "NTDS KCC" } | Out-Host -Pagingcls#Utilisation d\’installations logicielles classe Win32_Product#Lister les applications Windows InstallerGet-WmiObject Win32_Product -ComputerName .#filtrer sur .Net frameworkGet-WmiObject Win32_Product -ComputerName . | Where -FilterScript {$_.Name -eq "Microsoft .NET Framework 2.0"} | Select-Object -Property [a-z]*#Lister toutes les applications pouvant être désinstalléesNew-PSDrive -Name Uninstall -PSProvider Registry -Root HKLM:\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall#Nombre d\’applications(Get-ChildItem -Path Uninstall:).Length#Lister les applicationsGet-ChildItem -Path Uninstall: | ForEach { $_.GetValue("DisplayName") }#Filtrer sur un résultatGet-ChildItem -Path Uninstall:  | Where { $_.GetValue("DisplayName") -eq "Windows Media Encoder 9 Series"}#Installation /réinstallation d\’applications(Get-WMIObject -ComputerName . -List | Where {$_.Name -eq "Win32_Product"}).Install("\\\\AppSrv\\dsp\\NewPackage.msi")#Suppression d\’applications#(Get-WmiObject Win32_Product -Filter "Name=\’Mon-application\’").Uninstall#Changement d\’état de l\’ordinateur : verrouillage, fermeture de session, arrêt en cours et redémarrage             #(Get-WmiObject Win32_OperatingSystem -ComputerName .).Win32Shutdowncls

  4. Pierre Erol

    #***********************************************************#**Utilisation de Windows PowerShell pour l\’administration**#***********************************************************             #Gestion de services#*******************             Get-Help *-Service #Lister les servicesGet-Service |Out-Host -Paging#Filtrer par nom, même en utilisant un astérisque en tant que caractère générique Get-Service -Name se*# Filtrer par nom spécifique, à l\’aide de caractères génériques ou à l\’aide d\’une liste de noms d\’affichage : Get-Service -DisplayName se*#Filtrer les services par statusget-service | where {$_.Status -eq "Running"}#Arrêt, démarrage, interruption et redémarrage de servicesget-service spoolerStop-Service -Name spoolerStart-Service -Name spooler#Redémarrer plusieurs services, vous pouvez obtenir une liste de services, les filtrer, puis exécuter le redémarrage : Get-Service | Where {$_.CanStop} | Restart-Service –whatif#En utilisant wmi(Get-WmiObject -computer . Win32_Service -Filter "Name=\’Spooler\’").stopservice()(Get-WmiObject -computer . Win32_Service -Filter "Name=\’Spooler\’").startservice() | Select -Property Returnvalue#Je vais pouvoir le faire à distance#Utiliser des fonctions pour le faire à distance

  5. Pierre Erol

    #***********************************************************#**Utilisation de Windows PowerShell pour l\’administration**#***********************************************************             #Gestion des processus locaux#*****************************             #Listage des processus (Get-Process)Get-Process cls# Consultation de la structure d\’objetsGps | get-member | Out-Host -Pagingcls#Spécifiez le ou les noms de processusGet-Process -Name ex*,power*cls#Filtrer les processusGet-Process | where {$_.handlecount -gt 500}cls#Arrêt de processus (Stop-Process)#Stop-Process -Name Idle #Forcer une demande de confirmation avec le paramètre Confirm.Stop-Process -Name t*,e* -Confirm #La manipulation de processus complexes est possible en utilisant certaines des applets de commande de filtrage d\’objets#Get-Process | Where {$_.Responding -eq $false} | Stop-Process cls#Arrêt de toutes les autres sessions Windows PowerShellGet-Process -Name powershell$PIDGet-Process -Name powershell | Where {$_.Id -ne $PID}Get-Process -Name powershell | Where {$_.Id -ne $PID} | Stop-Process -PassThruGet-Process -Name powershellcls

  6. Pierre Erol

    Des liens
     
    Il n\’y a pas de support "natif" de PowerShell pour WSS/MOSS et à ma connaissance, pas de méthode scriptable "native" pour afficher les serveurs, services etc…Par contre rien n\’empêche, avec un peu de recherche, d\’utiliser les classes installée par WSS/MOSS via Power en chargeant les assemblies au préalable via les commandes:[System.Reflection.Assembly]::LoadWithPartialName("Microsoft.SharePoint")[System.Reflection.Assembly]::LoadWithPartialName("Microsoft.SharePoint.AdministrationOperation")Une introduction par une compatriote: http://www.u2u.info/Blogs/karine/Lists/Posts/Post.aspx?List=d35935e0%2D8c0e%2D4176%2Da7e8%2D2ee90b3c8e5a&ID=9Plus avancé: http://blogs.flexnetconsult.co.uk/colinbyrne/PermaLink,guid,1665700b-e0de-4b8a-bb1c-014d6fbcf2db.aspxEt ça continue… http://darrinbishop.com/blog/archive/2007/04/08/54.aspxMarc

  7. Pierre Erol

    OK, c’est vendredi, on a le temps pour une petite démo alors… (Mais avec un minimum de pipelining, afin d\’améliorer la lisibilité)Pour commencer:[System.Reflection.Assembly]::LoadWithPartialName("Microsoft.SharePoint")$Farm = [Microsoft.SharePoint.Administration.SPfarm]::LocalEnsuite, on récupère les serveurs et afficher leur nom et role:$FarmServers = $Farm.Servers$FarmServers | fl -property DisplayName, RoleNote : Invalid = ne jouant pas un tole SP mais déclarer dans la farm , ex : SQM, serveur de messagerie…Ensuite, récupérer les services sur un serveur donné :$Server = $FarmServers.Item("SERVEURMOSS01")$Server.ServiceInstances | fl -property TypeNameNote: typename renverra également SQL, messagerie etc…Bon WE !Marc

  8. Pierre Erol

    Un besoin très classique pour tout responsable de ferme SharePoint 2007 est la gestion des corbeilles.
    Un article explique le fonctionnement de cette corbeille sur asp-php :

    La corbeille de SharePoint 2007
    Ainsi en découvrant PowerShell, il semble évident que ce moteur peut effectuer en quelques lignes le nettoyage de la corbeille d’une collection de sites.
    Voila donc le script en question en adaptant un exemple en ligne (qui est non fonctionnel en l’état) :

    # Function:          Clear-All-RecycleBin # Description:       Clear all Recycle Bin for a site collection # Parameters:           SiteCollectionURL : URL for Site Collection function Clear-All-RecycleBin([string]$SiteCollectionURL) {     [System.Reflection.Assembly]::LoadWithPartialName("Microsoft.SharePoint") > $null     $site = new-object Microsoft.SharePoint.SPSite($SiteCollectionURL)
        $SitecollectionRecycleBin = $site.RecycleBin     for ($x = $SitecollectionRecycleBin.Count ; $x -gt 0 ; $x–)     {         $Item = $SitecollectionRecycleBin.Item($x-1)         $SitecollectionRecycleBin.Delete($Item.ID)     } }
    Clear-All-RecycleBin http://AdresseDeLaSiteCollection/

Laisser un commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l'aide de votre compte WordPress.com. Déconnexion / Changer )

Image Twitter

Vous commentez à l'aide de votre compte Twitter. Déconnexion / Changer )

Photo Facebook

Vous commentez à l'aide de votre compte Facebook. Déconnexion / Changer )

Photo Google+

Vous commentez à l'aide de votre compte Google+. Déconnexion / Changer )

Connexion à %s