windows10pro、windows11proPowerShellPowerShellでisoファイルをマウントしてドライブレターを変更するスクリプトを作成したいのです。PS1ファイルのコード内に、管理者権限で実行されていなければ管理者権限でPS1ファイルを実行し直すというコードを記述して、ドライブレターを変更するスクリプトを記述しました【参考】管理者権限に昇格https://www.cats-insteadof-pc.net/wpdb/index.php/2021/12/31/runas/【参考】ドライブ・レターの変更https://impsbl.hatenablog.jp/entry/MountISOandChangeDriveLetter【作成したコード】# 管理者権限で実行されていなければ、スクリプトを管理者権限で実行し直すIf (-not ([Security.Principal.WindowsPrincipal] [Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole] 'Administrator')){ Start-Process -FilePath PowerShell.exe -ArgumentList "-NoLogo -ExecutionPolicy Bypass -File $($MyInvocation.MyCommand.Path)" -Verb RunAs Exit}# isoファイルをマウントする$myISO = "C:\TEMP\hoge.iso"Mount-DiskImage $myISO#ドライブ・レターをXに変更する。$vol = Get-DiskImage $myISO | Get-Volume$old_drv = $vol.DriveLetter + ':'$new_drv = 'X:'Get-WmiObject -Class Win32_Volume | Where-Object {$_.DriveLetter -eq $old_drv} | Set-WmiInstance -Arguments @{DriveLetter=$new_drv}【不具合の状況】Windows10ではWindowsのユーザーアカウント制御(UAC)の確認ダイアログが開き「はい」を押すと動作しました。Windows11ではUACの確認ダイアログが開かずPowerShellの黒いウインドウが開いて閉じて目的のスクリプトは動作しませんでした。UACの設定はどちらのOSも「アプリがコンピューターに変更を加えようとする場合のみ通知する(規定)」ですWindows11で動作するにはどのようにすればよいかよろしくお願いします
- Child Tree -