Le pipe en PowerShell, archi et environnement
Source: Livre "Exchange Serveur 2013 - examen 70-341", Editions ENI (fev 2014) - ch 4, p120-128
Architecture et environnement PowerShell - p 120 à 128
Orienté objet (Get récup une liste d'objets, avec leur prop et méthodes), les objets sont typés (avec pipe => chaque sortie de cmdlet est utilisée comme entrée du cmdlet suivant si le type de données est compatible).
Par ex: Get-DistributionGroup "ENI Trainers" | Get-DistributionGroupMember | Set-MailBox -ProhibitSendQota 1MB
PowerShell récup un groupe liste des users(du groupe préc) limite d'envoi à 1MB sur bal des users (préc, => toutes bal du groupe ENI Trainers.
Bib powershell à www.codeplex.com
PowerShell peut lancer des commandes classiques (ipconfig, netsh...), dialoguer avec .bat .vbs ou autres, et utilise nativement les assemblies .NET et objets COM.
Tab, historique avec F7.
PowerShell ISE (= Integrated Scripting Environnement) pour scripts plus complexes, car offre fonctions IntelliSense (CTRL+Espace menu contextuels de complétion en cours d'écriture), snipets avec CRTL+J, un panneau qui montre toutes commandes, fonctions de debugage (F9), de pas à pas (F10, F11 et SHIFT+F11)
EMS (Exchange Management Console)
EMS est le résultat de l'exe de C:\Windows\System32\WindowsPowerShell\1.0\powershell.exe -noexit-command ". 'C:\Program Files\Microsoft\Exchange Server\v15\bin\RemoteExchange.ps1' ; Connect-ExchangeServer -auto-ClientApplication:ManagementShell "
- soit les 3 opérations: charger env PowerShell, charger bib RemoteExchange.ps1 + se connecter à orga exchange (Connect-ExchangeServer)
Voir les (944) commandes Exchange 2013 (inclus commandes des modules MicroSoft.PowerShell.Management et MicroSoft.PowerShell.Utility): Get-ExCommand
Voir les (770) " : Get-Command -Module <fqdn-du-srv>
2 284 dispo dans envmnt : Get-Command
Get-MailBox | liste des bal |
Set-MailUser -Identify pnom -ExternalEmailAddress email@eni.fr | conf email externe d'un user |
Get-MailBox | Format-List | liste users avec param principaux |
Get-MailBox -Database DB01 | New-MoveRequest -TargetDatabase DB02 | déplace tous users de db DB01 vers DB02 |
Get-DistributionGroup | Where Name -like "*ENI*" | SetDistributionGroup -Managedby "ENI\email" | assigne un responsable à un ensemble de listes de distrib |
Get-Message | Where From -like "*brahim*" | Remove-Message | supr tous les messages envoyés par Brahim dans les files d'attente |
Commandes de base PowerShell
Update-Help maj aide. Ex: Get-Help Get-Command -Examples ou Get-Help Get-Command -Parameter commandType
Get-Service renvoie la liste des services avec leur état. En ajoutant un Get-Member (ie Get-Service | Get-Member
) on liste les méthodes (membres des objets retournés par Get-Service).
Avec la cmdlet Format-List on va pouvoir sel les propriétés et leurs état pour le service Schedule: Get-Service Schedule | Format-List -Property *
Autres format de sortie: Get-Service | Format-List
et/ou Get-Service | Format-Custom
et/ou Get-Service | Format-Table
et/ou Get-Service | Format-Wide
et/ou Get-Service | format-table name, Servicetype, Canshutdown
Si la 1ere commande retourne du texte, pour rechercher une chaine de caractère précise: ipconfig | findstr "Adresse"
(ou ipconfig | findstr "IPv4"
car ipconfig | findstr "IPV"
ne retourne rien)
Enregistrement session shell: Start-Transcript
... Stop-Transcript
gestion des alias
aff détail de l'alias ps (Get-Process) Get-Alias ps
Liste les alias qui executent la cmdlet Set-Location: Get-Alias | where-object
{$_.definition -eq "set-location"}
crée alias pour Get-Help (n'affiche rien en retour): Set-Alias gh Get-Help
Supprime alias (n'affiche rien, sauf si erreur): Remove-Item alias:gh
Variables et boucles
$result = ipconfig puis affichage avec $result
Startfonc.ps1 contient:
for ($i=0 ; $i -lt $result.length; $i++ ) |
C:\Users\Secretariat.EVT\Desktop\Startfonc.ps1 -> affiche le ipconfig |
Startfonc2.ps1 contient:
$i=1 |
-> affiche le ipconfig |
se déplacer dans les ressources tierces
Récup info bios: Get-WmiObject win32_bios
Récup infos os du srv Exchange 2013 à distance: Get-WmiObject -Class Win32_OperatingSystem -ComputerName 172.16.1.21
Liste les env de navigation dispo: Get-PSDrive
cd HKLM
puis pour naviguer ds base registre: cd SYSTEM\CurrentControlSet\Control