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 [2020/11/24 17:04] – [PowerShell] 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]] 
-  * [[systemes_dexploitation:windows:all:powershell:fichiers#web|Web]] 
  
 ====== Introduction ====== ====== Introduction ======
Ligne 36: 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 97: 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 102: 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 :
  
   Copy-Item -Recurse C:\Projets\Application` 101\Site` Web\* -ToSession $session -Destination C:\inetpub\Application` 101   Copy-Item -Recurse C:\Projets\Application` 101\Site` Web\* -ToSession $session -Destination C:\inetpub\Application` 101
 +
 +
 +===== 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>
 +
 +
  
  
Ligne 203: 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 292: 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 ====== ====== Développement de Cmdlet ======
  
 Créer un projet .NET Standard (net46) de type Class Library et installer le package nuget ''Microsoft.PowerShell.5.ReferenceAssemblies''. 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]]   * [[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. 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'   PM> Import-Module –Name 'C:\myRandomDirectory\myModule.dll'
-  +
 ====== Sources ====== ====== Sources ======
-  * [[http://www.tomsitpro.com/articles/powershell-piping-filtering-objects,2-771.html|PowerShell Basics: Objects, Piping, Filtering And More]] 
- 
- 
  
 +  * [[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.1606233886.txt.gz · Dernière modification : 2022/02/02 00:42 (modification externe)