Powershell

De Linuxmemo.

(Différences entre les versions)
(les Objets (Outils intégrés))
(les Objets (Outils intégrés))
Ligne 229 : Ligne 229 :
  fsutil,etc...
  fsutil,etc...
*Tout les objet .net ou COM
*Tout les objet .net ou COM
 +
Création d'objets .NET et COM (New-Object)
 +
 +
Méthodes statiques:
  [espace de nom. <type .net>]::<Membre-statique>
  [espace de nom. <type .net>]::<Membre-statique>
  [System.DateTime]::Now
  [System.DateTime]::Now

Version du 2 juillet 2013 à 09:21

Sommaire

Avoir de l'aide

  • sur une commande
Get-Help commande
Get-Help commande -examples
Get-Help commande -detailed
Get-Help commande -full
ou 
help commande
  • liste des commandes
Get-Command
Get-Command -verb Get
Get-Command -noun Service
Get-Command -commandType alias
Get-Command Get-*
Get-Command *-Service
Get-Verb

  • lister tout les propriétés et méthodes d'un objet
$maVariable | Get-Member
Get-ItemProperty
appel méthode
$maVariable.ToUpper()
  • lister les Provider
Get-PsProvider
  • Listage des classes WMI
Get-WmiObject –List 
$i=0;Get-WmiObject -list | foreach{$i=$i+1} ; Write-Host "Il y a $i membre(s)"
  • Connaitre sa version de PowerShell
$host.version
$PSVersionTable

Script (exécution, mode de sécurité)

  • fichier ayant pour extension .PS1
  • exécution

depuis une invite de commande

 powershell c:\monscript.ps1

double clic, il faut modifier les paramètres de sécurité implémentés dans PowerShell car par défaut il est impossible de lancer un script sans passer par l’interpréteur PowerShell.

Get-ExecutionPolicy

PowerShell propose 4 modes de sécurité différents:

Restricted - No scripts can be run. Windows PowerShell can be used only in interactive mode.
AllSigned - Only scripts signed by a trusted publisher can be run.
RemoteSigned - Downloaded scripts must be signed by a trusted publisher before they can be run.
Unrestricted - No restrictions; all Windows PowerShell scripts can be run.

changer de mode et d’autoriser l’exécution de script locaux

Set-ExecutionPolicy RemoteSigned

Dénomination verbe-substantif

http://msdn.microsoft.com/en-us/library/windows/desktop/ms714428%28v=vs.85%29.aspx

Syntaxe

Formatage d'affichage des propriétés

Affichage des propriétés sous forme de liste

Get-ChildItem | Format-List

ou toutes les propriétés
Get-ChildItem | Format-List *

ou juste les propriétés name et lenght
Get-ChildItem | Format-List -Property name, length

ou une seul propriété
(Get-ChildItem nomfichier).CreationTime

Affichage des propriétés sous forme de Table

Get-ChildItem | Format-Table -autosize

Affichage de la seul propriété par défaut au format large table

Get-ChildItem | Format-Wide

Affichage personnalisé des propriétés

Get-ChildItem | Format-Custom

Appel des méthodes

$a = 12
$a.GetType()
Int32

Filtres

  • wc = Measure-Object
Get-Command | Measure-Object
  • grep = Select-String
  • Where-Object
Get-service | Where-Object {$_.status -eq 'Stopped'}

Guillemets

double ""

substitution de variable

$a = 'bonjour'
$b = 'monde'
Write-Host "$a $b"
bonjour monde
simple

protection de chaine

Caractère d'échappement

AltGr + 7 donne le backtick "`"

`n = Saut de ligne `r = retour chariot ...

Valeur de propriétés

$(objet.propriété)

$a = Get-ChilItem c:\config.sys
Write-Host "Taille du fichier $($a.Name) : $($a.Length) octets"
Taille du fichier config.sys : 10 octets

Les profiles

  • Type Utilisateurs

%UserProfile%\My Documents\WindowsPowerShell\profile.ps1

%UserProfile%\My Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1

  • Type Machine (pour tout les utilisateurs)

%windir%\system32\WindowsPowerShell\v1.0\profile.ps1

%windir%\system32\WindowsPowerShell\v1.0\ Microsoft.PowerShell_profile.ps1

Vocabulaire

"item"

fichier, répertoire, clé de la base de registre.

"fournisseur ou Provider po PsProvider"

Ce sont les objets sur lesquels la commande agis: Alias, Env, C, D, E,...,Z , Function, HKLM, KHCU, Variable, Cert.
Exemple:

Get-ChildItem C:
Get-ChildItem Alias:
Get-ChildItem Env:
Get-ChildItem Function:
Get-ChildItem HKLM:
Get-ChildItem Variable:

Les modules

Microsoft Script Center: http://technet.microsoft.com/en-us/scriptcenter/bb410849.aspx ou http://gallery.technet.microsoft.com/ScriptCenter/

Les modules sont soit des fichier .psd1 ou .psm1, soit des binaires (.dll), soit des modules dynamique en ram.

Si vous êtes seul à executer les commandes, il est préferable de positionner les modules dans votre profile Powershell;

soit
%USERPROFILE%\Documents\WindowsPowerShell\Modules\MonModule
ou
%DocumentsUser%\WindowsPowerShell\Modules\MonModule

Si vous executez des commandes depuis des taches planifiées ou si les commandes peuvent être executé par tout le monde , il est préferable d’installer dans le répertoire

%SystemRoot%,
soit
%WINDIR%\System32\WindowsPowerShell\v1.0\Modules\MonModule

Il est important que le nom du répertoire « MonModule » soit identique aux noms des fichiers avec l extension *.PSD1 & *.PSM1.

  • liste les modules chargés
Get-Module
ou
Get-PSSnapin
  • liste les modules diponible mais non encore chargés
Get-Module –ListAvailable
  • Charger un module
Import-module module
  • Decharger un module
Remove-Module module

ServerManager -

Restrictions

  • connaitre son niveau d'execution
get-executionpolicy
Restricted

Pour executer des scripts signés et non signés en local, il suffit de valider la commande

Set-ExecutionPolicy RemoteSigned
ou
Set-ExecutionPolicy –ExecutionPolicy RemoteSigned –Scope Process

dans powershell attention lancer powershell en tant qu'admin pour ce faire.

Un shell a distance

  • PowerShell Doit être installé sur la machine local et sur la machine distante.
  • Les 2 machines doivent être configurés pour une gestion a distance.
Enable-PSRemoting
ou
Winrm
Enter-PSSession -computer Server01 -port 5985 -credential domain01\user01
Alias: etsn
  • déactivation du shell a distance
Disable-PSRemoting
  • commandes utiles
Get-Process, Start-Process, Stop-Process, Wait-Process, Debug-Process
Get-Service
Get-EventLog
Restart-Computer
Test-Connection
Clear-EventLog
Get-EventLog
Get-Hotfix
Get-Process
Get-Service
Set-Service
Get-WinEvent
Get-WmiObject, Get-WmiObject -List, Get-WmiObject -List | Where-Object { $_.name -match 'disk'}, Get-WmiObject win32_computersystem

les Objets (Outils intégrés)

  • cmdlets (mini-exe réalisant des fonctions préséfinies
Out-GridView,
  • utilitaires:
fsutil,etc...
  • Tout les objet .net ou COM

Création d'objets .NET et COM (New-Object)

Méthodes statiques:

[espace de nom. <type .net>]::<Membre-statique>
[System.DateTime]::Now

http://msdn.microsoft.com/fr-fr/library/gg145045.aspx

  • Tout les objet fs
Get-ChildItem c:\
  • Tout les objet AD
Get-ADObject  

Télécharger RSAT "Remote Server Admin Tools" nouveau AdminPack pour win2008srv.
http://www.microsoft.com/fr-fr/download/details.aspx?id=7887

  • Tout les objet WMI
Get-WMIObject Win32_NetworkAdapterConfiguration

http://msdn.microsoft.com/fr-fr/library/windows/desktop/aa394572%28v=vs.85%29.aspx

  • Tout les objet du registre
Get-ChildItem -Path 'HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\HotFix
  • Getting Credentials From The Command Line
PS> $key = "HKLM:\SOFTWARE\Microsoft\PowerShell\1\ShellIds"
PS> Set-ItemProperty $key ConsolePrompting True
PS> Get-Credential

Astuces

F7 -- Pour avoir l'historique des commandes

Recettes

  • Registre
PS >Set-Location HKCU:\Software\Microsoft\Windows\CurrentVersion\Run
PS >Get-ItemProperty .

To set:

PS >(Get-ItemProperty .).MyProgram
c:\temp\MyProgram.exe
PS >Set-ItemProperty . MyProgram d:\Lee\tools\MyProgram.exe
PS >(Get-ItemProperty .).MyProgram
d:\Lee\tools\MyProgram.exe

To remove:

PS >Remove-ItemProperty . MyProgram
PS >(Get-ItemProperty .).MyProgram

To creating new:

PS >New-ItemProperty . -Name MyProgram -Value c:\temp\MyProgram.exe

To copying:

Copy-Item -Path 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion' -Destination hkcu:

ACL

PS >Get-Acl HKLM:\Software
  • Lecteurs
$obj = New-Object -com Wscript.Network 
$obj.MapNetworkDrive("x:", "\\serveur\partage")
  • Services
Get-Service
Get-Service OC*
Get-Service | Where-Object {$_.status -eq "running"}
Restart-Service "nom service"
Set-Service "nom service" -StartupType Automatic
Stop-Service "nom service"
Start-Service "nom service"
  • Sécurité

Ressources

http://technet.microsoft.com/en-us/scriptcenter/bb410849.aspx

Outils personnels