1
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

ローカルHyper-V接続のための専用ユーザーを作り、ログオン時に自動でVMConnectを起動させるスクリプト

Last updated at Posted at 2024-05-02

経緯

・さっくりとローカルVM接続だけの専用ユーザーを作りたい
・ただしRDPは使いたくない(VMConnectのメリットは後述します)
・のちのち共有PCモードやキオスクPCモードなどでもできるかを試したい

設計

・スクリプト1:Hyper-V管理者権限を持つユーザーを作成
・スクリプト2:VMconnectを実行
・スクリプト3:タスクスケジューラを作成し、ユーザーログオン時にPS1を実行
・すべてのユーザーが対象

スクリプト1

CreateHyperVAdmin.ps1
$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.ps1
vmconnect localhost VM1

スクリプト3

CreateTask_for_VMConnect.ps1
$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が自動実行されます。

image.png

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が必要となります。

1
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?