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[]);
};
成员
下表列出了属于此类的方法和属性。
方法
方法 | 说明 |
---|---|
UWF_Volume.AddExclusion | 将文件或文件夹添加到受 UWF 保护的卷的文件排除列表中。 |
UWF_Volume.CommitFile | 针对受统一写入筛选器 (UWF) 保护的卷上的指定文件,将更改从覆盖层提交到其物理卷。 |
UWF_Volume.CommitFileDeletion | 从卷中删除受保护的文件,并将删除提交到物理卷。 |
UWF_Volume.FindExclusion | 确定特定的文件或文件夹是否在受 UWF 保护的卷的排除列表中。 |
UWF_Volume.GetExclusions | 检索受 UWF 保护的卷的所有文件排除项的列表。 |
UWF_Volume.Protect | 如果在下次系统重启后启用了 UWF,则保护卷。 |
UWF_Volume.RemoveAllExclusions | 从受 UWF 保护的卷的文件排除列表中删除所有文件和文件夹。 |
UWF_Volume.RemoveExclusion | 从受 UWF 保护的卷的文件排除项列表中删除特定文件或文件夹。 |
UWF_Volume.SetBindByDriveLetter | 设置 BindByDriveLetter 属性,该属性指示 UWF 卷是否通过驱动器号或卷名绑定到物理卷。 |
UWF_Volume.Unprotect | 下次系统重启后禁用对卷的 UWF 保护。 |
属性
属性 | 数据类型 | 限定符 | 说明 |
---|---|---|---|
BindByDriveLetter | Boolean | [read, write] | 指示卷使用的绑定类型。 - 如果为 True,则通过 DriveLetter 绑定卷(松散绑定)- False 通过 VolumeName 绑定卷(紧密绑定)。 |
CommitPending | Boolean | [read] | 保留供 Microsoft 使用。 |
CurrentSession | Boolean | [key, read] | 指示对象包含其设置的会话。 - 如果设置适用于当前会话 - ,则为 True 如果设置位于重启后的下一个会话,则为 False。 |
DriveLetter | string | [key, read] | 卷的驱动器号。 如果卷没有驱动器号,则此值为 NULL。 |
受保护 | Boolean | [read, write] | 如果 CurrentSession 为 true,则指示卷当前是否受 UWF 保护。 如果 CurrentSession 为 false,则指示设备重启后是否在下一个会话中保护卷。 |
VolumeName | 字符串 | [key, read] | 当前系统上卷的唯一标识符。 VolumeName 与卷的 Win32_Volume 类的 DeviceID 属性相同。 |
注解
必须使用管理员帐户来更改任何属性或调用更改配置设置的任何方法。
打开或关闭 UWF 保护
下面的示例演示如何通过在 PowerShell 脚本中使用 Windows Management Instrumentation (WMI) 提供程序来通过 UWF 保护卷或取消对卷的保护。
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 文件和文件夹排除项
以下示例演示如何在 PowerShell 脚本中通过使用 WMI 提供程序来管理 UWF 文件和文件夹排除项。 该 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 家庭版 | 否 |
Windows 专业版 | 否 |
Windows 企业版 | 是 |
Windows 教育版 | 是 |
Windows IoT 企业版 | 是 |