次の方法で共有


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

};

Members

次の表に、このクラスに属するメソッドとプロパティを示します。

メソッド

メソッド 説明
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.保護解除 次回のシステム再起動後にボリュームの UWF 保護を無効にします。

プロパティ

プロパティ データ型 修飾子 説明
BindByDriveLetter ブール値 [読み取り、書き込み] ボリュームで使用されるバインドの種類を示します
- ボリュームDriveLetter(loose binding)
- False でバインドし、 ボリュームを VolumeName (タイト バインディング) でバインドする場合は True。
CommitPending ブール値 [read] Microsoft で使用するために予約されています。
CurrentSession ブール値 [キー、読み取り] オブジェクトに対する設定が含まれるセッションを示
- True の 場合、現在のセッションの設定は
- False 再起動後の次のセッションの設定である場合。
DriveLetter 文字列 [キー、読み取り] ボリュームのドライブ文字。 ボリュームにドライブ文字がない場合、この値は NULL です
Protected ブール値 [読み取り、書き込み] CurrentSessiontrue の場合、ボリュームが現在 UWF.
によって保護されているかどうかを示しますCurrentSessionfalse の場合は、デバイスの再起動後に次のセッションでボリュームが保護されているかどうかを示します。
VolumeName 文字列 [キー、読み取り] 現在のシステム上のボリュームの一意識別子。 VolumeName は、ボリュームの Win32_Volume クラスの DeviceID プロパティと同じです。

注釈

管理者アカウントを使用してプロパティを変更するか、構成設定を変更するメソッドを呼び出す必要があります。

UWF 保護のオンとオフを切り替える

次の例では、PowerShell スクリプトで Windows Management Instrumentation (WMI) プロバイダーを使用して、UWF でボリュームを保護または保護解除する方法を示します。

PowerShellscript は、ボリュームの UWF 保護をオンまたはオフにする 関数 Set-ProtectVolume を作成します。 その後、スクリプトは 関数の使用方法を示します。

$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 ファイルとフォルダーの除外を管理する

次の例では、PowerShell スクリプトで WMI プロバイダーを使用して UWF ファイルとフォルダーの除外を管理する方法を示します。 PowerShell スクリプトは、4 つの関数を作成し、その使用方法を示します。

最初の関数 Get-FileExclusions には、ボリュームに存在する UWF ファイルの除外の一覧が表示されます。 現在のセッションと再起動後の次のセッションの両方の除外が表示されます。

2 つ目 の関数 Add-FileExclusion は、特定のボリュームの UWF 除外リストにファイルまたはフォルダーを追加します。 除外は、再起動後の次のセッションに追加されます。

3 番目の関数 Remove-FileExclusion は、特定のボリュームの UWF 除外リストからファイルまたはフォルダーを削除します。 再起動後の次のセッションの除外は削除されます。

4 番目の関数 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 ホーム なし
Windows Pro なし
Windows Enterprise はい
Windows Education はい
Windows IoT Enterprise