#$cred = Get-Credential # または #(事前に Get-Credential | Export-Clixml $HOME\vm01-cred.xml でXMLを作成) #$cred = Import-Clixml $HOME\vm01-cred.xml # または $username = ".\Administrator" $password = "P@ssw0rd!" $securePassword = ConvertTo-SecureString $password -AsPlainText -Force $cred = [PSCredential]::new($username, $securePassword) $vmName = "vm01" # 設定パラメーター $NewVMName = "winsv01" $ComputerName = $NewVMName $AdminPasswd = "nEwP@sw0D9" $IPAddr = "192.168.0.109" $SubnetPrefix = 24 $GWAddr = "192.168.0.1" $DnsAddr = @("192.168.0.202", "192.168.0.201") $EnableRDP = $true $vm = Get-VM -Name $vmName -ErrorAction Stop Write-Host "VM $($vmName) の設定を開始します..." if (($vm.State -eq "Running") -and ($vm.HeartBeat -Like "Ok*")) { Invoke-Command -VMName $vm.Name -Credential $cred ` -ScriptBlock { # --- ScriptBlock --- param($NAME, $PASSWD, $IP, $PREFIX, $GTW, $DNS, $RDP) Write-Host "Administrator のパスワードを変更します。" net user Administrator $PASSWD Write-Host "コンピューター名を変更します。" Rename-Computer -NewName $NAME -Force Write-Host "ネットワークを設定します。" $nic = Get-NetAdapter | Where {$_.Status -eq "Up"} | Select -First 1 # Remove Current IPv4 and GTW Get-NetIPAddress -InterfaceIndex $nic.ifIndex -AddressFamily IPv4 | Remove-NetIPAddress -Confirm:$false Get-NetRoute -InterfaceIndex $nic.ifIndex -AddressFamily IPv4 -DestinationPrefix "0.0.0.0/0" | Remove-NetRoute -Confirm:$false # New IPv4 and GW New-NetIPAddress -InterfaceIndex $nic.ifIndex -IPAddress $IP -PrefixLength $PREFIX -DefaultGateway $GTW Set-DnsClientServerAddress -InterfaceIndex $nic.ifIndex -ServerAddresses $DNS # Enable RDP if ($RDP) { Write-Host "リモートデスクトップを有効化します。" Set-ItemProperty -Path "HKLM:\System\CurrentControlSet\Control\Terminal Server" -Name "fDenyTSConnections" -Value 0 Enable-NetFirewallRule -Name "RemoteDesktop-UserMode-In-TCP" Enable-NetFirewallRule -Name "RemoteDesktop-UserMode-In-UDP" } # Restart Computer Write-Host "再起動します。" Restart-Computer -Force # --- ScriptBlock --- } ` -ArgumentList $ComputerName, $AdminPasswd, $IPAddr, $SubnetPrefix, $GWAddr, $DnsAddr, $EnableRDP while ($vm.HeartBeat -Like "Ok*") { Start-Sleep 1 } while ($vm.HeartBeat -notLike "Ok*") { Start-Sleep 1 } Write-Host "VM の名前を変更します。'$($vm.Name)' > '$($NewVMName)'" Rename-VM -VM $vm -NewName $NewVMName Write-Host "完了しました。"     if ($EnableRDP){         mstsc /v $IPAddr     } else {         vmconnect localhost $vm.Name     } } else { Write-Host "VM $($vmName) がオフであるため、設定をスキップしました。VM を開始してから再実行してください。" }