Ich versuche, Azure-VMs über einen Workflow bereitzustellen, sodass sie parallel ausgeführt werden können. Der Code funktioniert außerhalb eines Workflows. Aber diesen Fehler erhalten, wenn Sie versuchen, es durch einen Workflow zu tun.Wie konvertiert man PSVirtualMachineObjects?
Ich importiere die VM-Parameter durch eine CSV-Datei. Gibt es zusätzliche Überlegungen zum Bereitstellen von Azure-VMs über einen Workflow?
Workflow Deploy-VMs {
$cred1= New-Object System.Management.Automation.PSCredential "User",$(ConvertTo-SecureString "Password" -asplaintext -force)
$b=Import-Csv Y:\NLG\vms1.csv -Verbose|? type -eq 'VM'
foreach ($c in $b) {
AzureRM.Resources\Login-AzureRmAccount -Credential $cred1 -SubscriptionId subscription id
$nic = New-AzureRmNetworkInterface -Name $c.Name -ResourceGroupName nlg -Location $c.Location -SubnetId $c.SubnetID
$cred= New-Object System.Management.Automation.PSCredential "nladmin",$(ConvertTo-SecureString $c.Password -asplaintext -force)
$vmConfig = New-AzureRmVMConfig -VMName $c.Name -VMSize "Standard_D1"
$vmConfig = Set-AzureRmVMOperatingSystem -VM $vmConfig -Windows -ComputerName $c.Name -Credential $cred
$vmConfig = Set-AzureRmVMSourceImage -VM $vmConfig -PublisherName "MicrosoftWindowsServer" -Offer "WindowsServer" -Skus "2012-R2-Datacenter-smalldisk" -Version "latest"
$vmConfig = Add-AzureRmVMNetworkInterface -VM $vmConfig -Id $nic.Id
$vmConfig = Set-AzureRmVMOSDisk -VM $vmConfig -Name $c.Name -CreateOption FromImage
New-AzureRmVM -ResourceGroupName $c.RG -Location $c.Location -VM $vmConfig
}
}
und diesen Fehler für die unvereinbar Cmdlets
Cannot bind parameter 'VM'. Cannot convert value "Microsoft.Azure.Commands.Compute.Models.PSVirtualMachine" to type "Microsoft.Azure.Commands.Compute.Models.PSVirtualMachine". Error: "Cannot convert the "Microsoft.Azure.Commands.Compute.Models.PSVirtualMachine" value of type "Deserialized.Microsoft.Azure.Commands.Compute.Models.PSVirtualMachine" to type "Microsoft.Azure.Commands.Compute.Models.PSVirtualMachine"." + CategoryInfo : InvalidArgument: (:) [Set-AzureRmVMOperatingSystem], ParameterBindingException + FullyQualifiedErrorId : CannotConvertArgumentNoMessage,Microsoft.Azure.Commands.Compute.SetAzureVMOperatingSystemCommand + PSComputerName : [localhost]
Haben Sie versucht, Powershell-Module zu aktualisieren? – 4c74356b41
Ja. Hilft nicht. Ich verwende Powershell v5.1 –
Ich teste in meinem Labor. Ich bekomme das gleiche Ergebnis mit dir. Vielleicht könnten Sie das [Beispiel] (https://blogs.inframon.com/2016/09/deploy-in-parelzel-multiple-azure-virtual-machines-powershell-workflow-script/) verwenden, um VM parallel zu erstellen. –