Outils pour utilisateurs

Outils du site


systemes_dexploitation:windows:all:powershell:introduction

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
Prochaine révision
Révision précédente
systemes_dexploitation:windows:all:powershell:introduction [2017/11/02 15:34] sgariepysystemes_dexploitation:windows:all:powershell:introduction [2022/12/14 14:42] (Version actuelle) – [Variables d'environnement] sgariepy
Ligne 1: Ligne 1:
 ====== PowerShell ====== ====== PowerShell ======
- 
-Autres sujets : 
- 
-  * [[systemes_dexploitation:windows:all:powershell:fichiers|Système de fichiers]] 
  
  
Ligne 37: Ligne 33:
  
   Write-Host $env:PATH   Write-Host $env:PATH
 +  Write-Host "App Version: $($env:APP_VERSION)"
  
 Pour la liste des variables d'environnement, on peut faire ''Get-ChildItem Env:''. Pour la liste des variables d'environnement, on peut faire ''Get-ChildItem Env:''.
Ligne 51: Ligne 48:
   PM> Get-Help Get-Service   PM> Get-Help Get-Service
  
 +Chercher des commandes avec ''Get-Command'' :
  
 +  PM> Get-Command Stop-Azure* -Module Azure
  
  
Ligne 96: Ligne 95:
 Write-Output "Found $($scriptFiles.Count) files." Write-Output "Found $($scriptFiles.Count) files."
 </code> </code>
 +
 ===== Caractère d'échappement ===== ===== Caractère d'échappement =====
  
Ligne 101: Ligne 101:
  
   "La valeur de la variable `$var est $var"   "La valeur de la variable `$var est $var"
- 
  
 Par exemple, pour une commande : Par exemple, pour une commande :
Ligne 108: Ligne 107:
  
  
 +===== RegEx =====
 +
 +  $anyGO = [regex]::Match($line, 'GO')
 +
 +===== Exemple =====
 +
 +<code>
 +$content = Get-Content ..\Projet\Properties\AssemblyInfo.cs
 +$content = Convert-String -InputObject $content
 +
 +#echo $content
 +
 +$found = $content -match 'Version'
 +
 +echo $found
 +
 +if ($found) {
 +    $spid = $matches[0]
 +}
 +
 +$found = $content -match 'Version\(".*"\)'
 +
 +#Write-Host $matches
 +
 +echo $found
 +
 +$sln | Select-String 'Version\(".*"\)' -AllMatches
 +
 +#  $x = 'Version("{0}")' -f "1.2.3.4"
 +# echo $x
 +</code>
 +
 +
 +
 +
 +====== Listes ======
 +
 +
 +  * Format-Table / Format-List
 +  * Filtrer avec where
 +  * foreach
 ====== Scripts ====== ====== Scripts ======
  
Ligne 196: Ligne 236:
  
 Pour avoir une comparaison sensible à la casse, il faut préfixer d'un ''c'' devant l'opérateur, par exemple ''-ceq'' au lieu de ''-eq''. Pour avoir une comparaison sensible à la casse, il faut préfixer d'un ''c'' devant l'opérateur, par exemple ''-ceq'' au lieu de ''-eq''.
- 
  
 Source : [[http://ss64.com/ps/syntax-compare.html|Comparison Operators]] Source : [[http://ss64.com/ps/syntax-compare.html|Comparison Operators]]
-===== Boucles ===== 
  
 +====== Système de Fichiers ======
  
 +===== Répertoires =====
  
 +Supprimer un répertoire étant certain qu'il faut le supprimer:
 +  Remove-Item -Recurse -Force repertoire
  
 +On peut ajouter ''-ErrorAction SilentlyContinue'' si on ne veut pas avoir d'erreur si le fichier/répertoire n'existe pas.
  
 +===== Variables utiles =====
  
-====== Gestion d'erreurs ======+  * ''$PSScriptRoot'' : Répertoire d'exécution du script.
  
 +====== Web ======
  
 +Exemple pour télécharger des fichiers:
  
 +  Invoke-WebRequest -Uri "https://awscli.amazonaws.com/AWSCLIV2.msi" -OutFile "AWSCLIV2.msi"
 +
 +Si une erreur comme ceci survient:
 +
 +  Invoke-WebRequest : The request was aborted: Could not create SSL/TLS secure channel.
 +
 +Exécuter cette commande:
 +
 +  [Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
 +
 +===== Boucles =====
 +
 +====== Gestion d'erreurs ======
  
 ===== Trap statement ===== ===== Trap statement =====
Ligne 285: Ligne 344:
  
 ====== Exemples ====== ====== Exemples ======
- 
  
   iwr https://domain.org/script.ps1 -UseBasicParsing | iex   iwr https://domain.org/script.ps1 -UseBasicParsing | iex
  
 +====== SMO ======
 +
 +La déclaration:
 +
 +<code>
 +[Reflection.Assembly]::LoadWithPartialName("Microsoft.SqlServer.Smo") | Out-Null
 +</code>
 +
 +Une instance de l'objet qui représente le serveur SQL:
 +
 +<code>
 +$srv = New-Object 'Microsoft.SqlServer.Management.SMO.Server' $sqlServerInstance
 +</code>
 +
 +Si on veut l'authentification en mode SQL:
 +
 +<code>
 +$srv.ConnectionContext.LoginSecure=$false;
 +$srv.ConnectionContext.set_Login($env:DB_USERNAME);
 +$srv.ConnectionContext.set_Password($env:DB_PASSWORD)
 +</code>
 +
 +La liste des bases de données sur ''$srv'' :
 +
 +<code>
 +$srv.Databases | Select name 
 +</code>
 +
 +====== Développement de Cmdlet ======
  
 +Créer un projet .NET Standard (net46) de type Class Library et installer le package nuget ''Microsoft.PowerShell.5.ReferenceAssemblies''.
  
 +  * [[https://msdn.microsoft.com/en-us/library/dd878294(v=vs.85).aspx|Writing a Windows PowerShell Cmdlet]]
  
 +En développement, un DLL est créé comme tout autre projet .NET.  On peut le charger dans un ISE pour l'essayer.
  
 +  PM> Import-Module –Name 'C:\myRandomDirectory\myModule.dll'
  
 +====== Sources ======
  
 +  * [[http://www.tomsitpro.com/articles/powershell-piping-filtering-objects,2-771.html|PowerShell Basics: Objects, Piping, Filtering And More]]
  
systemes_dexploitation/windows/all/powershell/introduction.1509633293.txt.gz · Dernière modification : 2022/02/02 00:42 (modification externe)