Powershell
De Linuxmemo.
(→les Objets (Outils intégrés)) |
(→les Objets (Outils intégrés)) |
||
Ligne 240 : | Ligne 240 : | ||
http://msdn.microsoft.com/fr-fr/library/gg145045.aspx | http://msdn.microsoft.com/fr-fr/library/gg145045.aspx | ||
*Tout les objets COM | *Tout les objets COM | ||
- | Vous devez spécifier le paramètre ComObject avec l'identificateur programmatique (ou ProgId) de la classe COM à utiliser. | + | Vous devez spécifier le paramètre ComObject avec l'identificateur programmatique (ou ProgId) de la classe COM à utiliser.</b> |
Vous pouvez créer les objets WSH en spécifiant ces ProgId : WScript.Shell, WScript.Network, Scripting.Dictionary et Scripting.FileSystemObject. Les commandes suivantes créent ces objets : | Vous pouvez créer les objets WSH en spécifiant ces ProgId : WScript.Shell, WScript.Network, Scripting.Dictionary et Scripting.FileSystemObject. Les commandes suivantes créent ces objets : | ||
New-Object -ComObject WScript.Shell | New-Object -ComObject WScript.Shell | ||
Ligne 246 : | Ligne 246 : | ||
New-Object -ComObject Scripting.Dictionary | New-Object -ComObject Scripting.Dictionary | ||
New-Object -ComObject Scripting.FileSystemObject | New-Object -ComObject Scripting.FileSystemObject | ||
+ | Lister tout les ProgId | ||
+ | dir REGISTRY::HKEY_CLASSES_ROOT\CLSID -include PROGID -recurse | foreach {$_.GetValue("")} | ||
$WshShell = New-Object -ComObject WScript.Shell | $WshShell = New-Object -ComObject WScript.Shell |
Version du 2 juillet 2013 à 13:10
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 http://technet.microsoft.com/fr-fr/library/dd347574.aspx
New-Object -TypeName System.Diagnostics.EventLog New-Object -TypeName System.Diagnostics.EventLog -ArgumentList Application $AppLog = New-Object -TypeName System.Diagnostics.EventLog -ArgumentList Application $AppLog | Get-Member -MemberType Method $AppLog.Clear() $AppLog
Méthodes statiques:
[espace de nom. <type .net>]::<Membre-statique> [System.DateTime]::Now
http://msdn.microsoft.com/fr-fr/library/gg145045.aspx
- Tout les objets COM
Vous devez spécifier le paramètre ComObject avec l'identificateur programmatique (ou ProgId) de la classe COM à utiliser.</b> Vous pouvez créer les objets WSH en spécifiant ces ProgId : WScript.Shell, WScript.Network, Scripting.Dictionary et Scripting.FileSystemObject. Les commandes suivantes créent ces objets :
New-Object -ComObject WScript.Shell New-Object -ComObject WScript.Network New-Object -ComObject Scripting.Dictionary New-Object -ComObject Scripting.FileSystemObject
Lister tout les ProgId
dir REGISTRY::HKEY_CLASSES_ROOT\CLSID -include PROGID -recurse | foreach {$_.GetValue("")}
$WshShell = New-Object -ComObject WScript.Shell $WshShell | Get-Member $lnk = $WshShell.CreateShortcut("$Home\Desktop\PSHome.lnk")
- 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