I have created script now but i get only one error for alternative guest name can you help now
$srv = Import-csv -Path servers.csv -Header VMname,Clustername,Datastore,ESX -UseCulture
foreach ($entry in $srv)
{
$Server = $entry.VMname
$Cluster = $entry.Clustername
$DSname = "SDN_INTRA_VOL6"
$NetworkAdapter = $entry.NIC
#$Network = $entry.portgroup
$ESXhost = $entry.ESX
# Collect .vmx paths of registered VMs on the datastore
$registered = @{}
$Datastore = Get-Datastore -Name $DSname
Get-VM -Datastore $Datastore | %{$_.Extensiondata.LayoutEx.File | where {$_.Name -like "*.vmx"} | %{$registered.Add($_.Name,$true)}}
# Set up Search for .VMX Files in Datastore
New-PSDrive -Name TgtDS -Location $Datastore -PSProvider VimDatastore -Root '\' | Out-Null
$unregistered = @(Get-ChildItem -Path TgtDS: -Recurse | `
where {$_.FolderPath -notmatch ".snapshot" -and $_.Name -like "XYZ.vmx" -and !$registered.ContainsKey($_.Name)})
Remove-PSDrive -Name TgtDS
#Register all .vmx Files as VMs on the datastore
foreach($VMXFile in $unregistered) {
$vm = New-VM -AlternateGuestName "$ServerDR" -VMFilePath $VMXFIle.DatastoreFullPath -VMHost $ESXHost
#$NIC = Get-NetworkAdapter -VM $vm
cmd.exe /c findstr /i $vm network.csv >new.csv
$nw = import-csv -path new.csv -Header VMname,Name,portgroup -UseCulture
foreach($network in $nw)
{
Get-VM -VM $network.VMname |Get-NetworkAdapter |Where {$_.Name -eq $network.Name } | Set-NetworkAdapter -NetworkName $network.portgroup
}
}
}
errorr is
New-VM : Parameter set cannot be resolved using the specified named parameters.
DR-Register.ps1:21 char:7
+ $vm = New-VM -AlternateGuestName "$Server" -VMFilePath $VMXFIle.Datas ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidArgument: (:) [New-VM], ParameterBindingException
+ FullyQualifiedErrorId : AmbiguousParameterSet,VMware.VimAutomation.ViCore.Cmdlets.Commands.NewVM