Partager via


UWF_Volume

Cette classe gère un volume protégé par le filtre d’écriture unifié (UWF).

Syntaxe

class UWF_Volume {
    [key, Read] boolean CurrentSession;
    [key, Read] string DriveLetter;
    [key, Read] string VolumeName;
    [Read, Write] boolean BindByDriveLetter;
    [Read] boolean CommitPending;
    [Read, Write] boolean Protected;

    UInt32 CommitFile([in] string FileFullPath);
    UInt32 CommitFileDeletion(string FileName);
    UInt32 Protect();
    UInt32 Unprotect();
    UInt32 SetBindByDriveLetter(boolean bBindByVolumeName);
    UInt32 AddExclusion(string FileName);
    UInt32 RemoveExclusion(string FileName);
    UInt32 RemoveAllExclusions();
    UInt32 FindExclusion([in] string FileName, [out] bFound);
    UInt32 GetExclusions([out, EmbeddedInstance("UWF_ExcludedFile")] string ExcludedFiles[]);

};

Membres

Les tableaux suivants répertorient les méthodes et propriétés qui appartiennent à cette classe.

Méthodes

méthode Description
UWF_Volume.AddExclusion Ajoute un fichier ou un dossier à la liste d’exclusions de fichiers pour un volume protégé parUWF.
UWF_Volume.CommitFile Valide les modifications de la superposition vers le volume physique d’un fichier spécifié sur un volume protégé par le filtre d’écriture unifié (UWF).
UWF_Volume.CommitFileDeletion Supprime un fichier protégé du volume et valide la suppression sur le volume physique.
UWF_Volume.FindExclusion Détermine si un fichier ou un dossier spécifique figure dans la liste d’exclusion d’un volume protégé parUWF.
UWF_Volume.GetExclusions Récupère une liste de toutes les exclusions de fichiers pour un volume protégé parUWF.
UWF_Volume.Protect Protège le volume après le redémarrage du système suivant, si UWF est activé après le redémarrage.
UWF_Volume.RemoveAllExclusions Supprime tous les fichiers et dossiers de la liste d’exclusions de fichiers pour un volume protégé par UWF.
UWF_Volume.RemoveExclusion Supprime un fichier ou un dossier spécifique de la liste d’exclusions de fichiers pour un volume protégé parUWF.
UWF_Volume.SetBindByDriveLetter Définit la propriété BindByDriveLetter , qui indique si le volume UWF est lié au volume physique par lettre de lecteur ou par nom de volume.
UWF_Volume.Unprotect Désactive la protection UWF du volume après le redémarrage du système suivant.

Propriétés

Propriété Type de données Qualificateurs Description
BindByDriveLetter Boolean [lecture, écriture] Indique le type de liaison utilisé par le volume.
- True pour lier le volume par DriveLetter(liaison libre)
- False pour lier le volume par VolumeName (liaison serrée).
CommitPending Boolean [Lecture] Réservé à l’utilisation de Microsoft.
CurrentSession Boolean [clé, lecture] Indique la session pour laquelle l’objet contient les paramètres.
- True si les paramètres sont pour la session
- active False si les paramètres concernent la session suivante qui suit un redémarrage.
DriveLetter string [clé, lecture] La lettre de lecteur du volume. Si le volume n’a pas de lettre de lecteur, cette valeur est NULL.
Protected Boolean [lecture, écriture] Si CurrentSession est true, indique si le volume est actuellement protégé par UWF.
Si CurrentSession est false, indique si le volume est protégé dans la session suivante après le redémarrage de l’appareil.
VolumeName string [clé, lecture] Identificateur unique du volume sur le système actuel. VolumeName est identique à la propriété DeviceID de la classe Win32_Volume pour le volume.

Notes

Vous devez utiliser un compte d’administrateur pour modifier les propriétés ou appeler des méthodes qui modifient les paramètres de configuration.

Activer ou désactiver la protection UWF

L’exemple suivant montre comment protéger ou annuler la protection d’un volume avec UWF à l’aide du fournisseur WMI (Windows Management Instrumentation) dans un script PowerShell.

PowerShellscript crée une fonction, Set-ProtectVolume, qui active ou désactive la protection UWF pour un volume. Le script montre ensuite comment utiliser la fonction.

$COMPUTER = "localhost"
$NAMESPACE = "root\standardcimv2\embedded"

# Define common parameters

$CommonParams = @{"namespace"=$NAMESPACE; "computer"=$COMPUTER}

# Create a function to protect or unprotect a volume based on the drive letter of the volume

function Set-ProtectVolume($driveLetter, [bool] $enabled) {

# Each volume has two entries in UWF_Volume, one for the current session and one for the next session after a restart
# You can only change the protection status of a drive for the next session

    $nextConfig = Get-WMIObject -class UWF_Volume @CommonParams |
        where {
            $_.DriveLetter -eq "$driveLetter" -and $_.CurrentSession -eq $false
        };

# If a volume entry is found for the drive letter, enable or disable protection based on the $enabled parameter

    if ($nextConfig) {

        Write-Host "Setting drive protection on $driveLetter to $enabled"

        if ($Enabled -eq $true) {
            $nextConfig.Protect() | Out-Null;
        } else {
            $nextConfig.Unprotect() | Out-Null;
        }
    }

# If the drive letter does not match a volume, create a new UWF_volume instance

    else {
    Write-Host "Error: Could not find $driveLetter. Protection is not enabled."
    }
}

# The following sample commands demonstrate how to use the Set-ProtectVolume function
# to protect and unprotect volumes

Set-ProtectVolume "C:" $true
Set-ProtectVolume "D:" $true

Set-ProtectVolume "C:" $false

Gérer les exclusions de fichiers et de dossiers UWF

L’exemple suivant montre comment gérer les exclusions de fichiers et de dossiers UWF à l’aide du fournisseur WMI dans un script PowerShell. Le script PowerShell crée quatre fonctions, puis montre comment les utiliser.

La première fonction, Get-FileExclusions, affiche une liste d’exclusions de fichiers UWF qui existent sur un volume. Les exclusions pour la session active et la session suivante qui suivent un redémarrage sont affichées.

La deuxième fonction, Add-FileExclusion, ajoute un fichier ou un dossier à la liste d’exclusion UWF pour un volume donné. L’exclusion est ajoutée pour la session suivante qui suit un redémarrage.

La troisième fonction, Remove-FileExclusion, supprime un fichier ou un dossier de la liste d’exclusion UWF pour un volume donné. L’exclusion est supprimée pour la session suivante qui suit un redémarrage.

La quatrième fonction, Clear-FileExclusions, supprime toutes les exclusions de fichiers et de dossiers UWF d’un volume donné. Les exclusions sont supprimées pour la session suivante qui suit un redémarrage.

$COMPUTER = "localhost"
$NAMESPACE = "root\standardcimv2\embedded"

# Define common parameters

$CommonParams = @{"namespace"=$NAMESPACE; "computer"=$COMPUTER}

function Get-FileExclusions($driveLetter) {

# This function lists the UWF file exclusions for a volume, both
# for the current session as well as the next session after a restart 

# $driveLetter is the drive letter of the volume

# Get the UWF_Volume configuration for the current session

    $currentConfig = Get-WMIObject -class UWF_Volume @CommonParams |
        where {
            $_.DriveLetter -eq "$driveLetter" -and $_.CurrentSession -eq $true
        };

# Get the UWF_Volume configuration for the next session after a restart

    $nextConfig = Get-WMIObject -class UWF_Volume @CommonParams |
        where {
            $_.DriveLetter -eq "$driveLetter" -and $_.CurrentSession -eq $false
        };

# Display file exclusions for the current session

    if ($currentConfig) {

        Write-Host "The following files and folders are currently excluded from UWF filtering for $driveLetter";

        $currentExcludedList = $currentConfig.GetExclusions()

        if ($currentExcludedList) {
            foreach ($fileExclusion in $currentExcludedList.ExcludedFiles)  {
                Write-Host "  " $fileExclusion.FileName
            }
        } else {
            Write-Host "  None"
        }
    } else {
        Write-Error "Could not find drive $driveLetter";
}

# Display file exclusions for the next session after a restart

    if ($nextConfig) {

        Write-Host ""
        Write-Host "The following files and folders will be excluded from UWF filtering for $driveLetter after the next restart:";

        $nextExcludedList = $nextConfig.GetExclusions()

        if ($nextExcludedList) {
            foreach ($fileExclusion in $nextExcludedList.ExcludedFiles)  {
                Write-Host "  " $fileExclusion.FileName
            }
        } else {
            Write-Host "  None"
        }

        Write-Host ""
    }
}

function Add-FileExclusion($driveLetter, $exclusion) {

# This function adds a new UWF file exclusion to a volume
# The new file exclusion takes effect the next time the device is restarted and UWF is enabled

# $driveLetter is the drive letter of the volume
# $exclusion is the path and filename of the file or folder exclusion

# Get the configuration for the next session for the volume

    $nextConfig = Get-WMIObject -class UWF_Volume @CommonParams |
        where {
            $_.DriveLetter -eq "$driveLetter" -and $_.CurrentSession -eq $false
        };

# Add the exclusion

    if ($nextConfig) {
        $nextConfig.AddExclusion($exclusion) | Out-Null;
        Write-Host "Added exclusion $exclusion for $driveLetter";
    } else {
        Write-Error "Could not find drive $driveLetter";
    }
}

function Remove-FileExclusion($driveLetter, $exclusion) {

# This function removes a UWF file exclusion from a volume
# The file exclusion is removed the next time the device is restarted

# $driveLetter is the drive letter of the volume
# $exclusion is the path and filename of the file or folder exclusion

# Get the configuration for the next session for the volume

    $nextConfig = Get-WMIObject -class UWF_Volume @CommonParams |
        where {
            $_.DriveLetter -eq "$driveLetter" -and $_.CurrentSession -eq $false
        };

# Try to remove the exclusion

    if ($nextConfig) {
        try {
            $nextConfig.RemoveExclusion($exclusion) | Out-Null;
            Write-Host "Removed exclusion $exclusion for $driveLetter";
        } catch {
            Write-Host "Could not remove exclusion $exclusion on drive $driveLetter"
        }
    } else {
        Write-Error "Could not find drive $driveLetter";
    }
}

function Clear-FileExclusions($driveLetter) {

# This function removes all UWF file exclusions on a volume
# The file exclusions are removed the next time the device is restarted

# $driveLetter is the drive letter of the volume

# Get the configuration for the next session for the volume

    $nextConfig = Get-WMIObject -class UWF_Volume @CommonParams |
        where {
            $_.DriveLetter -eq "$driveLetter" -and $_.CurrentSession -eq $false
        };

# Remove all file and folder exclusions

    if ($nextConfig) {
        $nextConfig.RemoveAllExclusions() | Out-Null;
        Write-Host "Cleared all exclusions for $driveLetter";
    } else {
        Write-Error "Could not clear exclusions for drive $driveLetter";
    }
}

# Some examples of using the functions

Clear-FileExclusions "C:"

Add-FileExclusion "C:" "\Users\Public\Public Documents"
Add-FileExclusion "C:" "\myfolder\myfile.txt"

Get-FileExclusions "C:"

Remove-FileExclusion "C:" "\myfolder\myfile.txt"

Get-FileExclusions "C:"

Spécifications

Édition Windows Pris en charge
Windows Édition familiale Non
Windows Pro Non
Windows Entreprise Oui
Windows Éducation Oui
Windows IoT Entreprise Oui