Link to home
Start Free TrialLog in
Avatar of seanab
seanab

asked on

Powershell Script to Create Virtual Machines in VMM keeps creating a new hardware profiles and templates.

I've created the following script to ask pass a few parameters and the will create VM's the script works great the first time but if you run it a 2nd time it encounters errors because it tries to use the same Hardware Profile and Template name that was already created the first time the script ran.

How can I get around this.  The code is below:

# ------------------------------------------------------------------------------
# Create Virtual Machine From SEA-VSCVMM - EDIT:  9/19/13 
# ------------------------------------------------------------------------------
# Script generated on Thursday, September 19, 2013 10:40:55 PM by Virtual Machine Manager
# 
# For additional help on cmdlet usage, type get-help <cmdlet name>
# ------------------------------------------------------------------------------
#What should the VM be called

$Name = Read-Host "Enter the Virtual Machine name (Press [Enter] to choose 
Srv01)"
if ($Name -eq ""){$Name="Srv01"} ; if ($Name -eq $NULL){$Name="Srv01"}

#What should the Computer Name Be?
$CPUName = Read-Host "Enter the Computer Name (Default is None)"
if ($CPUName -eq ""){$CPUName="*"} ; if ($CPUName -eq $NULL){$CPUName="*"}

#Describe This VM (Details are imporant here visible in VMM)
$CPUDescription = Read-Host "Enter a description for this virtual machine"
if ($CPUDescription -eq ""){$CPUDescription="*"} ; if ($CPUDescription -eq $NULL){$CPUDescription="*"} 



New-SCVirtualScsiAdapter -VMMServer sea-vscvmm -JobGroup f4d8236c-30d5-4566-b21a-ae7d041790d7 -AdapterID 7 -ShareVirtualScsiAdapter $false -ScsiControllerType DefaultTypeNoType 


New-SCVirtualDVDDrive -VMMServer sea-vscvmm -JobGroup f4d8236c-30d5-4566-b21a-ae7d041790d7 -Bus 1 -LUN 0 

$VMNetwork = Get-SCVMNetwork -VMMServer sea-vscvmm -Name "InsynQ 2.0" -ID "4159271d-8ace-4ad1-8d74-54b2d196a0f7"
$PortClassification = Get-SCPortClassification -VMMServer sea-vscvmm | where {$_.Name -eq "Data Network"}

New-SCVirtualNetworkAdapter -VMMServer sea-vscvmm -JobGroup f4d8236c-30d5-4566-b21a-ae7d041790d7 -MACAddress "00-00-00-00-00-00" -MACAddressType Static -Synthetic -EnableVMNetworkOptimization $false -IPv4AddressType Dynamic -IPv6AddressType Dynamic -VMNetwork $VMNetwork -PortClassification $PortClassification 


Set-SCVirtualCOMPort -NoAttach -VMMServer sea-vscvmm -GuestPort 1 -JobGroup f4d8236c-30d5-4566-b21a-ae7d041790d7 


Set-SCVirtualCOMPort -NoAttach -VMMServer sea-vscvmm -GuestPort 2 -JobGroup f4d8236c-30d5-4566-b21a-ae7d041790d7 


Set-SCVirtualFloppyDrive -RunAsynchronously -VMMServer sea-vscvmm -NoMedia -JobGroup f4d8236c-30d5-4566-b21a-ae7d041790d7 

$CPUType = Get-SCCPUType -VMMServer sea-vscvmm | where {$_.Name -eq "3.60 GHz Xeon (2 MB L2 cache)"}

$CapabilityProfile = Get-SCCapabilityProfile -VMMServer sea-vscvmm | where {$_.Name -eq "Hyper-V"}

#Nulled out Call to Create new HW Profile for TESTING
#New-SCHardwareProfile -VMMServer sea-vscvmm -CPUType $CPUType -Name "Profile7e612a6a-4844-45df-aa99-f989b26ee292" -Description "Profile used to create a VM/Template" -CPUCount 6 -MemoryMB 1024 -DynamicMemoryEnabled $true -DynamicMemoryMinimumMB 512 -DynamicMemoryMaximumMB 15360 -DynamicMemoryBufferPercentage 20 -MemoryWeight 5000 -VirtualVideoAdapterEnabled $false -CPUExpectedUtilizationPercent 20 -DiskIops 0 -CPUMaximumPercent 100 -CPUReserve 0 -NumaIsolationRequired $false -NetworkUtilizationMbps 0 -CPURelativeWeight 100 -HighlyAvailable $true -HAVMPriority 2000 -DRProtectionRequired $false -NumLock $false -BootOrder "CD", "IdeHardDrive", "PxeBoot", "Floppy" -CPULimitFunctionality $false -CPULimitForMigration $false -CapabilityProfile $CapabilityProfile -JobGroup f4d8236c-30d5-4566-b21a-ae7d041790d7 


$Template = Get-SCVMTemplate -VMMServer sea-vscvmm -ID "a9806749-14bd-468c-868d-23d1b47eade0" | where {$_.Name -eq "Windows Datacenter 2012"}
$HardwareProfile = Get-SCHardwareProfile -VMMServer sea-vscvmm | where {$_.Name -eq "Cloud Runner - VC setup"}

$OperatingSystem = Get-SCOperatingSystem -VMMServer sea-vscvmm -ID "ff0fe0a6-7166-44d3-8a0c-379195e2f9bb" | where {$_.Name -eq "64-bit edition of Windows Server 2012 Datacenter"}

New-SCVMTemplate -Name "IQ VMM Template" -Template $Template -HardwareProfile $HardwareProfile -JobGroup f4d8236c-30d5-4566-b21a-ae7d041790d7 -ComputerName $CPUName -TimeZone 4  -FullName "" -OrganizationName "" -AnswerFile $null -OperatingSystem $OperatingSystem 



$template = Get-SCVMTemplate -All | where { $_.Name -eq "IQ VMM Template" }
$virtualMachineConfiguration = New-SCVMConfiguration -VMTemplate $template -Name $Name
Write-Output $virtualMachineConfiguration
$vmHost = Get-SCVMHost -ID "108744e5-d740-48ea-9a12-98cb0bc6a2f9"
Set-SCVMConfiguration -VMConfiguration $virtualMachineConfiguration -VMHost $vmHost
Update-SCVMConfiguration -VMConfiguration $virtualMachineConfiguration
Set-SCVMConfiguration -VMConfiguration $virtualMachineConfiguration -ComputerName "$CPUName"


Update-SCVMConfiguration -VMConfiguration $virtualMachineConfiguration
New-SCVirtualMachine -Name $Name -VMConfiguration $virtualMachineConfiguration -Description "$CPUDescription" -BlockDynamicOptimization $false -JobGroup "f4d8236c-30d5-4566-b21a-ae7d041790d7" -ReturnImmediately -DelayStartSeconds "0"

Open in new window

ASKER CERTIFIED SOLUTION
Avatar of seanab
seanab

Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial