経緯
・さっくりとローカルVM接続だけの専用ユーザーを作りたい
・ただしRDPは使いたくない(VMConnectのメリットは後述します)
・のちのち共有PCモードやキオスクPCモードなどでもできるかを試したい
設計
・スクリプト1:Hyper-V管理者権限を持つユーザーを作成
・スクリプト2:VMconnectを実行
・スクリプト3:タスクスケジューラを作成し、ユーザーログオン時にPS1を実行
・すべてのユーザーが対象
スクリプト1
$username = Read-Host "新しいHyper-V管理者ユーザーのユーザー名を入力してください"
$password = Read-Host "新しいHyper-V管理者ユーザーのパスワードを入力してください" -AsSecureString
New-LocalUser -Name $username -Password $password -PasswordNeverExpires:$true
Write-Host "ユーザーアカウント '$username' が正常に作成されました。"
$confirm = Read-Host "'$username' を Hyper-V Administrators グループに追加しますか? (Y/N)"
if ($confirm -eq "Y" -or $confirm -eq "y") {
Add-LocalGroupMember -Group "Hyper-V Administrators" -Member $username
Write-Host "ユーザー '$username' が Hyper-V Administrators グループに追加されました。"
} else {
Write-Host "ユーザー '$username' は Hyper-V Administrators グループに追加されませんでした。"
}
$rdpUsers = Get-LocalGroupMember "Hyper-V Administrators" | Select-Object -ExpandProperty Name
$rdpUsers = $rdpUsers -replace '.*\\'
$rdpUsersInfo = $rdpUsers | ForEach-Object { [PSCustomObject]@{ Username = $_ } }
Write-Host "Hyper-V管理者のリスト:"
$rdpUsersInfo | Format-Table -Property Username
Pause
スクリプト2
C:\Program Files\Scripts\vmconnect.ps1
などに保存します。スクリプトにコンパイルしたのは後々の開発バッファのためです。
vmconnect localhost VM1
スクリプト3
$action = New-ScheduledTaskAction -Execute "PowerShell.exe" -Argument "-ExecutionPolicy Bypass -File `"`C:\Program Files\Scripts\vmconnect.ps1`""
$trigger = New-ScheduledTaskTrigger -AtLogOn
$principal = New-ScheduledTaskPrincipal -GroupId "Hyper-V Administrators" -RunLevel Highest
$settings = New-ScheduledTaskSettingsSet -AllowStartIfOnBatteries -DontStopIfGoingOnBatteries
Register-ScheduledTask -TaskName "ConnectVMOnLogon" -Action $action -Trigger $trigger -Principal $principal -Settings $settings -Description "標準ユーザーがログオンしたらVMConnect.exeを管理者権限で実行します。"
結果
これでHyper-V管理権限のあるユーザーがPCにログオンすると、VMConnectが自動実行されます。
Why VMConnect over RDP? ホワイジャパニーズ?
・こちらのページにRDPとVMConnectの違いが書かれていました。(10年前の記録を残して頂いているのはありがたいですね。)http://ayufishing.blog.fc2.com/blog-entry-14.html
・ネットワーク帯域を消費しないことや、最新バージョンだとウインドウサイズ変更で解像度がダイナミックに変更されるなどがあります。
・まずは使ってみることをお勧め致します。ユーザーエクスペリエンスはRDPより高いことが分かります。
・ちなみにVMConnectはHyper-Vコンソールのサブセットのため、Home版ではHyper-Vが使えませんので、Pro版以上のOSが必要となります。