PowerShell 7.6: new features, install, and upgrade



Splitter son terminal en plusieurs panneaux, gérer des sessions persistantes, le tout avec les mêmes raccourcis que tmux... mais sous un bon gros Windows des familles, nativement, en Rust et sans avoir besoin de se galérer avec WSL !
C'est exactement ce que fait psmux , un multiplexeur de terminal conçu pour PowerShell et cmd.exe qui utilise directement l'API ConPTY de Windows 10/11. Du coup, pas de couche d'émulation Unix, pas de Cygwin, pas de MSYS2... ça tourne direct sur votre bécane.
Pour ceux qui débarquent, un multiplexeur de terminal ça permet de découper votre console en plusieurs zones (des "panes" que j’appellerai "panneau" parce que merde c'est + français), de jongler entre plusieurs sessions, et surtout de retrouver votre boulot exactement là où vous l'avez laissé même après une déconnexion. Sous Linux, tout le monde utilise tmux pour ça mais sous Windows, jusqu'ici c'était soit WSL (installer tout un sous-système Linux juste pour splitter un terminal, c'est un peu overkill quand même !), soit des splits basiques via Windows Terminal qui ne gèraient ni les sessions persistantes ni le détachement. Snif...
psmux en action sous PowerShell
L'installation est rapide. Un petit winget install psmux et hop, c'est réglé. Ça passe aussi par Cargo, Scoop ou Chocolatey pour les puristes. Ensuite, vous tapez psmux dans PowerShell 7 et vous retrouvez vos marques : Ctrl+B pour le prefix, les mêmes commandes split-window, new-session, attach... L'outil implémente 76 commandes tmux avec plus de 126 variables de formatage. Et y'a même un mode copie Vim avec 53 raccourcis clavier.
Bref, si vous avez une mémoire musculaire ultra développée pour tmux, vous êtes chez vous !
Et le truc cool, c'est que psmux lit directement vos fichiers .tmux.conf existants. Du coup, vos raccourcis custom et pas mal de thèmes (Catppuccin, Dracula, Nord...) fonctionneront directement, même si les configs tmux les plus complexes avec des scripts bash ou TPM peuvent nécessiter des ajustements. Et y'a aussi
Tmux Plugin Panel
pour vous accompagner dans l'ajout de plugins et de thèmes.
Alors je vous connais les raloux sous OuinOuin, vous allez me dire "Windows Terminal fait déjà des splits avec Alt+Shift+D"... sauf que non, c'est pas pareil. Windows Terminal découpe votre fenêtre visuellement mais ne gère ni les sessions persistantes, ni le scripting, ni le détachement. Avec psmux, vous lancez une session le lundi, vous fermez votre terminal, vous revenez le mardi et tout est encore là : vos panneaux, vos processus, votre historique. C'est ça la vraie différence avec un simple split visuel.
D'ailleurs, si vous utilisez Claude Code ou d'autres agents IA en ligne de commande , psmux intègre un support pour les agent teams qui permet à chaque agent de spawner dans son propre panneau automatiquement.
Côté support souris, c'est complet : clic pour sélectionner un panneau, drag pour redimensionner les bordures, molette pour remonter dans l'historique du buffer. Tout est activé par défaut, pas besoin de rajouter set -g mouse on comme sous tmux. L'outil tourne sous Windows 10 et 11, et le projet est sous licence MIT.
Après c'est encore jeune et y'a quelques galères connues notamment le support des caractères CJK et UTF-8 multi-octets qui peut se planter comme une merde sur des textes longs. Et split-window -c ne préserve pas toujours le répertoire courant (oubliez pas de vérifier votre pwd après un split). Par contre, le dev répond en quelques heures, et des PR externes sont mergées régulièrement... donc c'est bon signe !
Bref, c'est propre, c'est natif, et ça lit vos .tmux.conf ! Que demande le peuple barbu emprisonné sous Windows, finalement ? Eh bien pas grand chose de plus pour être heureux.

.png)

.png)
.png)
-v3.2.png)


.png)
.png)


Sous Windows 11/10, les fichiers et dossiers stockés sur un disque NTFS possèdent des autorisations (ACL) qui définissent précisément quels utilisateurs peuvent lire, modifier ou supprimer leur contenu.
Si ces permissions peuvent être configurées via l’interface graphique, PowerShell permet d’aller beaucoup plus loin :
afficher, modifier et automatiser la gestion des droits d’accès à grande échelle.
Grâce aux cmdlets Get-Acl et Set-Acl, vous pouvez :
Cette approche est particulièrement utile pour les administrateurs ou utilisateurs avancés souhaitant :
Pour comprendre en détail la différence entre les autorisations NTFS et les permissions de partage, consultez le guide complet : Autorisations et permissions NTFS : gérer les droits d’accès et le partage de dossiers sous Windows 11/10
Pour afficher la liste complète des autorisations appliquées à un dossier ou fichier :
Get-Acl "C:\Dossier"
Cette commande affiche les ACL (Access Control List) associées à l’élément.
Pour un affichage plus lisible :
Get-Acl "C:\Dossier" | Format-List
Exemple de sortie :
Path : Microsoft.PowerShell.Core\FileSystem::C:\Users\maill
Owner : NT-AUTORITÄT\SYSTEM
Group : NT-AUTORITÄT\SYSTEM
Access : NT-AUTORITÄT\SYSTEM Allow FullControl
VORDEFINIERT\Administratoren Allow FullControl
hp-MAC\maill Allow FullControl
S-1-15-3-65536-599108337-2355189375-1353122160-3480128286-3345335107-485756383-4087318168-230526575 Allow
ExecuteFile, Synchronize
Audit :
Sddl : O:SYG:SYD:P(A;OICI;FA;;;SY)(A;OICI;FA;;;BA)(A;OICI;FA;;;S-1-5-21-2373467495-3460344319-1749951908-1001)(A;;0x1
00020;;;S-1-15-3-65536-599108337-2355189375-1353122160-3480128286-3345335107-485756383-4087318168-230526575)

Pour accorder une permission spécifique à un utilisateur ou groupe, utilisez Set-Acl avec une nouvelle règle d’accès.
Exemple : donner le Contrôle total à l’utilisateur Paul sur le dossier C:\Partage
$acl = Get-Acl "C:\Partage"
$rule = New-Object System.Security.AccessControl.FileSystemAccessRule("Paul","FullControl","Allow")
$acl.AddAccessRule($rule)
Set-Acl "C:\Partage" $acl
Explications :
Vous pouvez remplacer "FullControl" par : "Read", "Write", "Modify", "ReadAndExecute" selon les besoins.
Pour supprimer une règle d’accès existante :
$acl = Get-Acl "C:\Partage"
$rule = New-Object System.Security.AccessControl.FileSystemAccessRule("Paul","FullControl","Allow")
$acl.RemoveAccessRule($rule)
Set-Acl "C:\Partage" $acl
La suppression nécessite d’utiliser exactement les mêmes paramètres que la règle initiale (même utilisateur, droit et type “Allow” ou “Deny”).
Pour appliquer les nouvelles autorisations à tous les sous-dossiers et fichiers :
$acl = Get-Acl "C:\Partage"
$rule = New-Object System.Security.AccessControl.FileSystemAccessRule("Paul","Modify","ContainerInherit,ObjectInherit","None","Allow")
$acl.SetAccessRule($rule)
Get-ChildItem "C:\Partage" -Recurse | Set-Acl -AclObject $acl
Explications :
Get-ChildItem -Recurse → parcourt récursivement toute l’arborescence.ContainerInherit,ObjectInherit → applique la règle aux sous-dossiers et fichiers.Pour revenir à la configuration par défaut (héritée du dossier parent) :
icacls "C:\Partage" /reset /T
Cette commande supprime toutes les règles explicites et rétablit les permissions héritées.
Elle est utile pour corriger des erreurs “Accès refusé” ou des droits corrompus.
Pour appliquer le changement de propriétaire à tout un dossier et ses sous-dossiers :
$path = "C:\Dossier"
$owner = [System.Security.Principal.NTAccount]"Administrateurs"
Get-ChildItem -Path $path -Recurse -Force | ForEach-Object {
$acl = Get-Acl $_.FullName
$acl.SetOwner($owner)
Set-Acl $_.FullName $acl
}
Cette commande parcourt récursivement tous les fichiers et sous-dossiers.
Elle peut être longue sur un volume contenant de nombreux éléments.
Pour le guide complet sur le changement de propriétaire via l’interface graphique ou la ligne de commande :
Changer le propriétaire d’un dossier sous Windows 11/10
Pour afficher le propriétaire d’un dossier ou fichier :
(Get-Acl "C:\Dossier").Owner
→ Renvoie le nom du compte ou groupe actuellement propriétaire du dossier.
$users = @("Paul", "Jean", "ServiceRH")
$path = "C:\Dossiers\RH"
foreach ($user in $users) {
$acl = Get-Acl $path
$rule = New-Object System.Security.AccessControl.FileSystemAccessRule($user,"Modify","ContainerInherit,ObjectInherit","None","Allow")
$acl.SetAccessRule($rule)
Set-Acl $path $acl
}
Ce script attribue automatiquement les permissions “Modifier” à plusieurs utilisateurs pour un même dossier.
| Cmdlet / Commande | Fonction principale | Syntaxe de base | Exemple d’utilisation |
|---|---|---|---|
| Get-Acl | Affiche la liste des autorisations (ACL) appliquées à un fichier ou dossier. | Get-Acl "C:\Dossier" | Affiche les permissions et le propriétaire du dossier. |
| Set-Acl | Applique ou met à jour des autorisations sur un fichier ou dossier. | Set-Acl "C:\Dossier" $acl | Met à jour les ACL selon les règles définies dans $acl. |
| New-Object System.Security.AccessControl.FileSystemAccessRule | Crée une nouvelle règle d’autorisation NTFS (utilisateur, droit, type). | $rule = New-Object System.Security.AccessControl.FileSystemAccessRule("Paul","Modify","Allow") | Crée une règle donnant à Paul le droit de modifier le dossier. |
| AddAccessRule() | Ajoute une nouvelle autorisation à une ACL existante. | $acl.AddAccessRule($rule) | Ajoute la règle $rule aux ACL existantes du dossier. |
| RemoveAccessRule() | Supprime une autorisation spécifique. | $acl.RemoveAccessRule($rule) | Supprime la règle $rule précédemment définie. |
| SetOwner() | Définit un nouveau propriétaire sur un dossier ou fichier. | $acl.SetOwner([System.Security.Principal.NTAccount]"Administrateurs") | Change le propriétaire pour le groupe Administrateurs. |
| Get-ChildItem -Recurse + Set-Acl | Applique des permissions à tous les sous-dossiers et fichiers. | `Get-ChildItem « C:\Dossier » -Recurse | Set-Acl -AclObject $acl` |
| **Get-Acl | Format-List** | Affiche les ACL dans un format lisible. | `Get-Acl « C:\Dossier » |
| icacls (CMD) (complément) | Réinitialise ou sauvegarde les ACL en ligne de commande. | icacls "C:\Dossier" /reset /T | Réinitialise toutes les permissions NTFS du dossier. |
| takeown (CMD) (complément) | Reprend la propriété d’un dossier ou fichier. | takeown /f "C:\Dossier" /r /d y | Attribue la propriété au compte administrateur courant. |
Get-Acl, Set-Acl, etc.) sont plus flexibles et scriptables que les commandes classiques (icacls, takeown).icacls "C:\Dossier" /save C:\backup_acl.txt /TSet-Acl.$acl ou dans les permissions héritées peut supprimer des droits critiques.
icacls "C:\Dossier" /save C:\Backup_ACL.txt /TTest-Path pour vérifier les chemins avant exécution.L’article Gérer les permissions NTFS avec PowerShell sur Windows 11/10 est apparu en premier sur malekal.com.