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.
Ici nous utiliserons la commande suivante:
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:
Commande | Description |
---|---|
Attributes | Affiche, 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.
ou
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
Enregistrer un commentaire