PowerShell - Mes aide-mémoires

Cette article sera mis à jour régulièrement donc penser à y repasser régulièrement

Script PowerShell pour nettoyer le cache SCCM et 1E Nomad

Quand on a des clients SCCM et 1E Nomad sur nos postes professionnelles et que l'on a besoin de place, le site Garytown a partagé ici, des scripts PowerShell bien utile.

Fonction - Installer.NET Framework 3.5

Il peut nous arriver d'avoir besoin d'installer le .NET Framework 3.5, on peut rajouter ce module qui va bien nous aider, il permet d'utiliser les sources externes ou local. J'ai trouver ce script bien conçu: ici. N'oubliez pas de remercier son auteur.

Relancer son script avec les droits administrateurs

Source: https://ss64.com/ps/syntax-elevate.html
Ceci permet de vérifier si le script a été lance avec un niveau administrateur, si ce n'est pas le cas, cela lance le même script via Start-Process avec l'argument "RunAs" et il va refermer le script.

If (-NOT ([Security.Principal.WindowsPrincipal] [Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole]::Administrator))
{
  # Relaunch as an elevated process:
  Start-Process powershell.exe "-File",('"{0}"' -f $MyInvocation.MyCommand.Path) -Verb RunAs
  exit
}

Variable declarer le dossier racine de son script


If ($psISE)
{
    $currentScriptDirectory = Split-Path -Parent -Path $psISE.CurrentFile.FullPath
}
If (!$currentScriptDirectory)
{
    If ($MyInvocation.MyCommand.CommandType -eq "ExternalScript")
    {
        $currentScriptDirectory = Split-Path -Parent -Path $MyInvocation.MyCommand.Definition
    }
    Else
    {
        $currentScriptDirectory = Split-Path -Parent -Path ([Environment]::GetCommandLineArgs()[0])
    }
}

Lister l'ensemble des variables d'environment

Si l'on veux voir l'ensemble des variables d'environnement que l'on peut utiliser dans nos scripts.

Get-Childitem -Path Env:* | Sort-Object Name

Récupérer la version de PowerShell

Lors que je commence un fichier de log, j'aime bien rajouter la version de mon PowerShell.

[string]$PS1_Version = Get-Host | Select-Object Version | ForEach-Object {$_.Version.ToString()}

Commande Test-Path

J'utilise souvent cette commande car elle permet de vérifier le chemin et de récupérer un retour $true et $false.
Cependant, il y a un bug qui va vous renvoyer un $true, si vous testez une variable qui contient une ligne avec un espace dedans sans aller.
Pour éviter cette erreur, il est préférable de rajouter trim(), à la suite de sa variable.
Voici un exemple, on peut remplacer un chemin à la place du $null pour voir si cela marche ou pas.

$TestPath = $null

if ( $(Try { Test-Path $TestPath.trim() } Catch { $false }) ) {
   write-host "Path OK"
 }
Else {
   write-host "Path not found"
 }

Récupérer la ligne de commande d'un process


$process = 'Deezer.exe'
Get-CimInstance Win32_Process -Filter "name = '$process'" | select CommandLine 

Commentaires

Posts les plus consultés de ce blog

MRemoteNG - Voir les mots de passe dans l'application

Powershell - Utiliser les requêtes WMI

PowerShell - Utiliser NSIS (Nullsoft Scriptable Install System) pour simplifier l'usage des scripts PS1