Windows 10 IoT LTSB とかに付いてくる書き込みフィルター、いわゆる書き込み保護のコマンドについて。
統合書き込みフィルター処理 (UWF) 機能 | Microsoft Docs
https://docs.microsoft.com/ja-jp/windows-hardware/customize/enterprise/unified-write-filter
uwfmgr.exe | Microsoft Docs
https://docs.microsoft.com/ja-jp/windows-hardware/customize/enterprise/uwfmgrexe
uwfmgr get-config
の表示が長ったらしく、フィルタの有効か無効かだけをコマンドプロンプトから知る方法。
なんと、uwfmgr get-config | find "状態"
とかってやると、なんとパイプを通る時に文字化けするという謎仕様。
PowerShellを使って文字コードを変えようにも、そもそもパイプ通る時に「標準出力が文字化け」してる感じなので、「Out-File -Encoding default」とかでも無理でどうしようもない。
解決方法は以下。
PowerShellから、WMIオブジェクトのプロパティを見ればいいらしい。
@echo off
::管理者権限のチェック
openfiles >nul 2>&1
if errorlevel 1 (
echo "管理者権限で実行してください。"
pause
exit
)
::WMIオブジェクトの「UWF_Filter」のプロパティを確認する
powershell $COMPUTER = \"localhost\";^
$NAMESPACE = \"root\standardcimv2\embedded\";^
$objUWFInstance = Get-WmiObject -Namespace $NAMESPACE -Class UWF_Filter;^
if($objUWFInstance.CurrentEnabled) { ^
$CurrentStatus = \"有効\";^
} else { ^
$CurrentStatus = \"無効\";^
} ^
if($objUWFInstance.NextEnabled) { ^
$NextStatus = \"有効\";^
} else { ^
$NextStatus = \"無効\";^
} ^
echo \"ライトプロテクト状態\";^
echo \" 現在 : $CurrentStatus\";^
echo \" 次回起動時: $NextStatus\";
::表示残すため一時停止
pause
##参考サイト
VBSにてUWFの有効状態を確認できない
https://social.technet.microsoft.com/Forums/ie/ja-JP/d4ac515a-c547-4a69-97da-3bbd8042c214/vbsuwf?forum=win10itprogeneralJP