logo rss

Mes Notes PowerShell

Je mets ici mes notes PowerShell diverses et variées.

E-mail

  • Une fonction pour envoyer des mails
Function Mail
 {
        param ([string]$sujet)

        $encoding = [System.Text.Encoding]::UTF8
        Send-MailMessage -To destination@shebangthedolphins.net -Subject $sujet -From source@shebangthedolphins.net -smtpserver smtp.shebangthedolphins.net -Body $sujet -Encoding $encoding
 }

Mail "Subject"

Fichiers

  • Rediriger la sortie standard vers un fichier :
Get-WmiObject -Class Win32_service | Select-Object Name,DisplayName,startmode | Out-File -FilePath C:\services.txt
  • Supprimer un caractère d'une liste de fichiers, exemple ici où l'on souhaite supprimer le caractère o d'un ensemble de fichiers mp4 :
Get-ChildItem -filter *mp4 | Rename-Item -NewName {$_.Name -replace "o"}
  • Comparer le contenu de deux fichiers csv :
Compare-Object (Get-Content .\kb01.csv | Sort-Object | Sort-Object -unique) (Get-Content .\kb02.csv | Sort-Object | Sort-Object -unique)
  • Faire une comparaison de deux fichiers avec leurs hash :
 $(Get-FileHash C:\01.zip | Select-Object -Property Hash).Hash -eq $(Get-FileHash C:\02.zip | Select-Object -Property Hash).Hash

Divers

  • Exécuter un script non signé :
PowerShell.exe -ExecutionPolicy Bypass -File Script.ps1
  • Définir la date et l'heure du système :
Set-Date -date "12/7/2017 4:00 PM"
  • Show date with prepredefined format :
Get-Date -Format "dd/MM/yyyy"
  • Exporter la liste des KBs installés vers un fichier csv :
Get-HotFix | Select-Object hotfixid | Sort-Object hotfixid  | Export-Csv -path c:\$(get-date -Format "yyyy.MM.dd")_kb.csv -NoTypeInformation
  • Savoir si un KB contenant «KB156» a déjà été installé :
Get-HotFix | Select-Object hotfixid | Sort-Object hotfixid  | Where-Object { $_ -match ".*KB156.*" }
  • Modifier la date de modification d'un fichier :
$a = Get-Item '.\Download\myfile.txt'
$a.LastWriteTime = "10/03/2016 8:00 AM"
  • Extraire des drivers Dell depuis leur format exe :
foreach ($app in $(Get-ChildItem | ? { $_.Name -match "exe" })) { Start-Process -FilePath ".\$($app.Name)" -ArgumentList "/s /e=.\_$($app.Name)" -Wait }

Tableaux

  • Déclarer un tableau :
$myUsers = @("Stan Marsh","Kyle Broflovski","Eric Cartman","Kenny McCormick")
    • Ou :
$myUsers = New-Object System.Collections.ArrayList
[void]$myUsers.AddRange( ("Stan Marsh","Kyle Broflovski","Eric Cartman","Kenny McCormick") )

Réseau

  • Récupérer les adresses ip de toutes les interfaces :
Get-NetIPAddress
  • Paramétrer l'adresse ip d'une interface :
New-NetIPAddress -InterfaceAlias "Ethernet" -ipaddress "192.168.1.111" -PrefixLength 24 -DefaultGateway "192.168.1.254"
  • Supprimer l'adresse ip d'une interface :
Remove-NetIPAddress -IPAddress 192.168.1.111 -Confirm:$false
  • Changer l'adresse MAC pour les interfaces ayant le statut connectées :
Get-NetAdapter | Where-Object { $_.status -eq 'up' } | set-netadapter -MacAddress '001122334455' -Confirm:$flase
  • Changer le profil de connexion d'une interface :
Get-NetConnectionProfile
Set-NetConnectionProfile -InterfaceIndex 10 -NetworkCategory Private

Programmes

  • Afficher la liste des programmes installés, avec leurs noms, éditeur et numéros de version associés :
Get-WmiObject Win32_product | Select-Object -Property Name,Vendor,Version | Sort-Object -Property name
  • Exporter la liste des programmes vers un fichier csv :
Get-WmiObject Win32_product | Select-Object -Property Name,Vendor,Version | Sort-Object -Property name | Export-Csv -Path C:\prog_list.csv

Services et Processus

Services

  • Lister les services :
Get-WmiObject -Class Win32_Service | Select-Object Name,DisplayName,StartMode
  • Lister les services avec leur type de démarrage mais avec la commande Get-Service :
Get-Service | Select-Object Name,DisplayName,StartType

Processus

  • Lister les processus avec les noms d'utilisateurs associés :
Get-Process -IncludeUserName | Select-Object UserName,SessionId
  • Lister les utilisateurs actuellement connectés :
Get-Process -IncludeUserName | Select-Object Username,processname | Where-Object { $_.ProcessName -eq "explorer" }  | ForEach-Object {"{1}" -f $_.UserName.ToString().Split('\')}
  • Lister les utilisateurs actuellement connectés avec le nom machine :
Get-Process -IncludeUserName | Select-Object Username,processname | Where-Object { $_.ProcessName -eq "explorer" } | %{"{0}\{1}" -f $_.UserName.ToString().Split('\')[0],$_.UserName.ToString().Split('\')[1]}
Creative Commons License
This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.

Contact :

adresse mail de contact