Поделиться через


UWF_Volume

Этот класс управляет томом, защищенным унифицированным фильтром записи (UWF).

Синтаксис

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[]);

};

Участники

В следующих таблицах перечислены методы и свойства, принадлежащие этому классу.

Методы

Метод Description
UWF_Volume.AddExclusion Добавляет файл или папку в список исключений файлов для тома, защищенного byUWF.
UWF_Volume.CommitFile Фиксирует изменения из наложения на физический том для указанного файла в томе, защищенном унифицированным фильтром записи (UWF).
UWF_Volume.CommitFileDeletion Удаляет защищенный файл из тома и фиксирует удаление физического тома.
UWF_Volume.FindExclusion Определяет, находится ли определенный файл или папка в списке исключений для тома, защищенного byUWF.
UWF_Volume.GetExclusions Извлекает список всех исключений файлов для тома, защищенного byUWF.
UWF_Volume.Protect Защищает том после следующего перезапуска системы, если после перезагрузки UWF включен.
UWF_Volume.RemoveAllExclusions Удаляет все файлы и папки из списка исключений файлов для тома, защищенного UWF.
UWF_Volume.RemoveExclusion Удаляет определенный файл или папку из списка исключений файлов для тома, защищенного byUWF.
UWF_Volume.SetBindByDriveLetter Задает свойство BindByDriveLetter, указывающее, привязан ли том UWF к физическому тому по букве диска или по имени тома.
UWF_Volume.Unprotect Отключает защиту UWF тома после следующего перезапуска системы.

Свойства

Свойство Тип данных Квалификаторы Description
BindByDriveLetter Логический [чтение, запись] Указывает тип привязки, используемой томом.
- Значение true для привязки тома с помощью DriveLetter(свободной привязки)-
False
для привязки тома с помощью VolumeName (жесткой привязки).
CommitPending Логический [чтение] Зарезервировано для использования Корпорацией Майкрософт.
CurrentSession Логический [ключ, чтение] Указывает, для какого сеанса объект содержит параметры.
- Значение True, если параметры для текущего сеанса
- False,
если параметры предназначены для следующего сеанса, следующего за перезапуском.
DriveLetter строка [ключ, чтение] Буква диска тома. Если в томе нет буквы диска, это значение равно NULL.
Protected Логический [чтение, запись] Если CurrentSession имеет значение true, указывает, защищен ли том в настоящее время UWF.
Если CurrentSession имеет значение false, указывает, защищен ли том в следующем сеансе после перезапуска устройства.
Имя тома строка [ключ, чтение] Уникальный идентификатор тома в текущей системе. Имя тома совпадает со свойством DeviceID класса Win32_Volume тома.

Замечания

Для изменения свойств или вызова методов, изменяющих параметры конфигурации, необходимо использовать учетную запись администратора.

Включение или отключение защиты UWF

В следующем примере показано, как защитить или отменить защиту тома с помощью UWF с помощью поставщика инструментария управления Windows (WMI) в скрипте PowerShell.

PowerShellscript создает функцию Set-ProtectVolume, которая включает или отключает защиту UWF для тома. Затем скрипт демонстрирует, как использовать функцию.

$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

Управление исключениями файлов и папок UWF

В следующем примере показано, как управлять исключениями файлов и папок UWF с помощью поставщика WMI в скрипте PowerShell. Скрипт PowerShell создает четыре функции, а затем демонстрирует их использование.

Первая функция Get-FileExclusions отображает список исключений файлов UWF, которые существуют на томе. Отображаются исключения для текущего сеанса и следующего сеанса, следующего за перезапуском.

Вторая функция Add-FileExclusion добавляет файл или папку в список исключений UWF для заданного тома. Исключение добавляется для следующего сеанса, следующего за перезапуском.

Третья функция Remove-FileExclusion удаляет файл или папку из списка исключений UWF для заданного тома. Исключение удаляется для следующего сеанса, следующего за перезапуском.

Четвертая функция Clear-FileExclusions удаляет все исключения файлов и папок UWF из заданного тома. Исключения удаляются для следующего сеанса, следующего за перезапуском.

$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:"

Требования

Выпуск для Windows Поддерживается
Windows Домашняя No
Windows Pro No
Windows Корпоративная Да
Windows для образовательных учреждений Да
Windows IoT Корпоративная Да