PowerShell - Fonction - Changer les attributs d'un volume

Comment appliquer des attributes sur un volume ?

Récemment, j'ai travaillé sur un projet qui m'a demandé de faire des modifications sur un volume disque. "Qu'est-ce qu'un volume disque ?" Les partitions et les lecteurs logiques de disques de base sont appelés volumes de base. Vous pouvez créer des volumes de base uniquement sur les disques de base.
Dans le monde merveilleux, de PowerShell, nous avons un module storage fournis par Microsoft qui propos plusieurs alternatives ce que l'on peut trouver dans l'application DISKPART.

Qu'est-ce que DISKPART?

DISKPART peut s'avérer un outil utile où le gestionnaire de disque ne réalise pas certaines opérations et dans notre cas les fonctions storages. De nombreuses commandes s'offrent à vous pour gérer vos disques. Ici nous n'aborderons pas plus les fonctionnalités de l'outils.
Ici nous utiliserons la commande suivante:
CommandeDescription
AttributesAffiche, définit ou efface les attributs d’un disque ou d’un volume

Fonction: Set-VolumeAttributes

Voici une fonction rapide que j'ai créée pour modifier ces attributs, elle va créer un premier fichier qui sera lu par l'executable diskpart via "/s" et avec l'utilisation de start-process, on récupérera dans le retour de l'application DISKPART dans le fichier "Change_Vol_Attributes.log" qui se trouvera dans le dossier temporaire. Il ne faut pas oublier que cette fonction doit être lancer avec des droits administrateurs.

Example:


ou

function Set-VolumeAttributes
{
    param(
    [Parameter(Mandatory=$true)]
    [string]$Volume,
    [Parameter(Mandatory=$true)]
    [ValidateSet('Set','Clear')]
    [string]$Action,
    [Parameter(Mandatory=$true)]
    [ValidateSet('HIDDEN','READONLY','NODEFAULTDRIVELETTER','SHADOWCOPY')]
    [string[]]$Attributes
    )
    
    $Script = ( Join-Path -Path $env:TEMP -ChildPath 'Script.txt' )
    $Log = ( Join-Path -Path $env:TEMP -ChildPath 'Change_Vol_Attributes.log' )
    New-Item -Path $Script -ItemType file -Force | out-null

    Add-Content -Path $Script "Select Volume $Volume"
    $Attributes | ForEach-Object {
    Add-Content -Path $Script "Attributes Volume $Action $_ "
    }
    Add-Content -Path $Script 'exit'
    Start-Process "diskpart.exe" -ArgumentList "/s $Script " -WindowStyle Hidden -RedirectStandardOutput $Log -PassThru -Wait | Out-Null
    Remove-Item -Path $Script -Force
}

Commentaires

Posts les plus consultés de ce blog

Powershell - Supprimer Teams sur l'ensemble des profils utilisateurs

Powershell - Comment tester les ports TCP ?

MRemoteNG - Voir les mots de passe dans l'application