Windows 11 デバイスマネージャーのハードウェア再スキャンをコマンドから実行してみましょう

最近 PC の調子が悪く、スリープ後に Wi-Fi が動作しなくなったりします。

色々調べるとどうもデバイスが読み込まれていない場合やエラーとなっているケースがほとんどで、今までは Ctrl + X でデバイス マネージャーを起動して対処していました。

こんな感じに選択したうえでボタンを押す必要があり、なかなか手間がかかっていたのです。

そこで、手数を減らすべく、 PowerShell での実行を考えました。

実行だけであれば、以下のコマンドレットを打つだけでこの機能を利用できるのですが、管理者権限の PowerShell を起動してから打ち込む必要もあり、バッチ化を行えないかとみてみました。

pnputil /scan-devices

Windows 11 では、 PowerShell のバッチ拡張子である ps1 は標準で紐づけされていないため、このコマンドをファイル化するだけでは対応ができません。

そこで、コマンドプロンプトのバッチファイルと連携し、同対応を自動化してみました。

ちょっと面倒なのですが、以下の内容を bat ファイルとして保存し、実行すると自動化ができるようになります。

bat ファイル

@echo off

PowerShell.exe -NoProfile -Command "& {Start-Process PowerShell.exe -ArgumentList '-NoProfile -ExecutionPolicy Bypass -File ""%~dpn0.ps1""' -Verb RunAs }"

PAUSE

ps1 ファイル

pnputil /scan-devices

pause

この 2 つのファイルを同じ名前の拡張子違いとして保存します。

こうすることでコマンドプロンプトから UAC で管理者権限での起動を経て PowerShell コマンドレットを実行することができました。

bat ファイルでは PowerShell をプロファイルなしで起動し、さらにプロセスを起動するコマンドレットを用いて管理者権限、プロファイルなし、実行ポリシーのバイパスパラメータを入れて同名の ps1 ファイルを起動する。という内容ですね。

管理権限での起動はこのようにする必要があるので、ちょっと面倒ですね。

あまりいないと思いますが、同じような問題に遭遇した場合はこのようなバッチを作っておくと楽ができるので是非お試しください。

音楽:MADAMA BUTTERFLY