Powershell

Excel : séparer les feuilles dans des fichiers

Autoriser l'exécution des scripts :

set-executionpolicy remotesigned

Lancer un script Powershell à partir d'un Batch

Powershell.exe -executionpolicy remotesigned -File NOMDUSCRIPT.ps1

Lancer un script Powershell à partir d'un chemin UNC

Attention, c'est très sale :

Powershell.exe -NoProfile -ExecutionPolicy bypass -File "\\IP_DU_SERVEUR\OU\EST\LE\script.ps1"

Source : https://superuser.com/questions/106360/how-to-enable-execution-of-powershell-scripts

Tester la présence d'un dossier

$dossier = "%userprofile%\path\le\chien" if (Test-Path -Path $dossier) { "Le dossier $dossier !" } else { "Création du dossier $dossier" mkdir $dossier }

Télécharger un fichier

$url = http://url_du_fichier Invoke-WebRequest -Uri $url -OutFile C:\Ou\va\le\fichier\fichier.prout

Créer un raccourci

$WshShell = New-Object -ComObject WScript.Shell $Shortcut = $WshShell.CreateShortcut("$env:PUBLIC\Desktop\Machin.lnk") $Shortcut.TargetPath = "C:\ou\est\le\fichier\Machin.exe" $Shortcut.Save()

Créer plusieurs comptes / activer

# On met les comptes dans un tableau $comptes = @("utilisateur","toto","Administrateur") ForEach ($compte in $comptes) { $op = Get-LocalUser | Where-Object {$_.Name -eq $compte} if ( -not $op) { "Création du compte $compte..." $password = Read-Host "Saisir le mot de passe du compte $compte (rien si pas de mot de passe)" -AsSecureString New-LocalUser -Name $compte -Password $password -AccountNeverExpires -UserMayNotChangePassword Add-LocalGroupMember -Group "Administrateurs" -Member $compte } else { "Le compte $compte existe déjà" if ((Get-LocalUser $compte).Enabled) { "Le compte $compte est déjà activé" } else { "Activation du compte $compte..." Enable-LocalUser -Name $compte "Le compte $compte est activé" } } } Set-LocalUser -Name 'Toto' -FullName "Jean-Michel Toto"

Désactiver et activer des trucs

# Désactiver UAC New-ItemProperty -Path HKLM:Software\Microsoft\Windows\CurrentVersion\policies\system -Name EnableLUA -PropertyType DWord -Value 0 -Force # Désactiver pare-feu sur tous les profils Set-NetFirewallProfile -Profile * -Enabled False # Désactivation smart-screen Set-ItemProperty -Path "HKLM:\Software\Microsoft\Windows\CurrentVersion\Explorer" -Name "SmartScreenEnabled" -Type String -Value "Off" Set-ItemProperty -Path "HKCU:\Software\Microsoft\Windows\CurrentVersion\AppHost" -Name "EnableWebContentEvaluation" -Type DWord -Value # Désactivation OOBE Set-ItemProperty -Path "HKLM:\Software\Microsoft\Windows\CurrentVersion\OOBE" -Name "DisablePrivacyExperience" -Type DWORD -Value 1 -Force Set-ItemProperty -Path "HKLM:\Software\Microsoft\Windows\CurrentVersion\OOBE" -Name "PrivacyConstentStatus" -Type DWORD -Value 1 -Force Set-ItemProperty -Path "HKLM:\Software\Microsoft\Windows\CurrentVersion\OOBE" -Name "SkipMachineOOBE" -Type DWORD -Value 1 -Force # Activation client SMBv1 Enable-WindowsOptionalFeature -Online -FeatureName "SMB1Protocol-Client" -All # Installation de .NET3.5 Enable-WindowsOptionalFeature -Online -FeatureName "NetFx3"

Intégrer un poste à un domaine

Add-Computer -DomainName DOMAINE.LOCAL -Credential DOMAINE\administrateur -Restart -Force

Récupérer le GUID des volumes

GWMI -namespace root\cimv2 -class win32_volume | FL -property DriveLetter, DeviceID

Exporter les utilisateurs d'un AD

Get-ADUser -Filter * -Proerties * -SearchBase "OU=NOMDELOU,DC=DOMAINE,DC=TLD" | select displayname,UserPrincipalName | export-csv -path C:\informatique\users.csv

Changer la casse d'une variable

# En majuscule CHAINE.ToUpper() # En minuscule CHAINE.ToLower()

Remplacer un caractère ou un espace

C'est pas beau.

# Un espace $string = $string -replace " ","" # Un apostrophe $string = $string -replace "'",""

Groupes AD

Lister les groupes d'une OU

Get-AdGroup -filter * -searchbase "OU=Groupes,OU=CLIENT,DC=DOMAINE,DC=LOCAL" | sort name | select name

Lister les utilisateurs d'un groupe

Get-ADGroupMember -Identity "Communication" | Format-Table Name, DistinguishedName

Vérifier les droits NTFS d'un dossier

Non récursif.

Get-NTFSAccess 'D:\DATA\partages\dossier' Path: D:\DATA\partages\dossier (Inheritance enabled) Account Access Rights Applies to Type IsInherited InheritedFrom ------- ------------- ---------- ---- ----------- ------------- BUILTIN\Administrateurs FullControl ThisFolderOnly Allow False BUILTIN\Administrateurs FullControl ThisFolderSubfoldersAn... Allow True D: AUTORITE NT\Système FullControl ThisFolderSubfoldersAn... Allow True D: CREATEUR PROPRIETAIRE GenericAll SubfoldersAndFilesOnly Allow True D: BUILTIN\Utilisateurs ReadAndExec... ThisFolderSubfoldersAn... Allow True D: BUILTIN\Utilisateurs CreateDirec... ThisFolderAndSubfolders Allow True D: BUILTIN\Utilisateurs CreateFiles ThisFolderAndSubfolders Allow True D: