Hyper-Vの役割がインストールされたスタンドアロン(クラスタ化されていませんが、ドメイン内にあります)のWindows Server 2016があります。 私は毎日VMをクローンする必要があるので、C#とPowerShellを使っていくつかの小さな「もの」を書いています。 VHDのドメインへのHyper-V VMのクローニングと追加
並列コピー
public static void Main(string[] args) { var sourceFile = args[0]; var distanationDir = args[1]; int numOfCopies = Int32.Parse(args[2]); //var sourceFile = [email protected]"C:\temp\123.VHD"; //var distanationDir = [email protected]"C:\temp\vhds\"; //int numOfCopies = 15; StartJob(sourceFile, distanationDir, numOfCopies, random); } private static void StartJob(string sourcefile, string distanationdir, int numOfCopies, Random random) { int count = 0; Parallel.For(0, numOfCopies, i => { Console.WriteLine("i = {0}, thread = {1}", i, Thread.CurrentThread.ManagedThreadId); try { string atrib = Path.GetExtension(sourcefile); string guid = Guid.NewGuid().ToString("N"); var copyNew = Path.GetFileNameWithoutExtension(sourcefile) + guid + atrib; File.Copy(sourcefile, Path.Combine(distanationdir + '\\', copyNew)); Console.WriteLine(@"Started{copyNew}"); } catch (IOException copyError) { Console.WriteLine(copyError.Message); } } }
第2のステップは、既存のVHDXでVMを作成し、このPowerShellスクリプトでVMを作成することです。
$from = 81 $howmany = 30 $files = Get-ChildItem -Path "E:\Hyper-v" -Filter *.vhdx if ($files) { Write-Host "variable is not null" try { $vmIndex = $from for ($i = 0; $i -lt $howmany; $i++) { Write-Host "Start " New-Vm -Name "AUT-TA$vmIndex" -Path "E:\Hyper-v\Virtual Machines" -MemoryStartupBytes 4294967296 -VHDPath $files[$i].FullName -SwitchName "Broadcom NetXtreme Gigabit Ethernet #4 - Virtual Switch" Write-Host "Vm created " + "AUT-TA$vmIndex" $vmIndex++ Write-Host "End" } exit } catch { [System.Exception]"caught a system exception" } } else { Write-Host "No such files" exit }
最終私がドメインに参加する必要があるが、私はこのホスト上の各VMの実行していて、ドメインに追加されますいくつかのスクリプトを必要としています。
ご質問はありますか? –
いくつかはこのように思う$ domain = "myDomain" $ password = "myPassword!" | ConvertTo-SecureString -asPlainText -Force $ username = "$ domain \ myUserAccount" $ credential =新規オブジェクトSystem.Management.Automation.PSCredential($ username、$ password) Add-Computer -DomainName $ domain -Credential $ credential 。しかし、サーバーhyper-vを実行して、すべてのVMをドメインに追加することも考えてください。 –