2017-08-11 6 views
5

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]

+0

Haben Sie versucht, Powershell-Module zu aktualisieren? – 4c74356b41

+0

Ja. Hilft nicht. Ich verwende Powershell v5.1 –

+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. –

Antwort

1

gelöst Inline-Skript.

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 -Parallel ($c in $b) { 
     AzureRM.Resources\Login-AzureRmAccount -Credential $cred1 -SubscriptionId c2d7e81b-ed6a-4de9-a4cd-36e679ec4259 
     $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) 
     InlineScript { 
      $vmConfig = New-AzureRmVMConfig -VMName $using:c.Name -VMSize "Standard_D1" 
      $vmConfig = Set-AzureRmVMOperatingSystem -VM $vmConfig -Windows -ComputerName $using:c.Name -Credential $using:cred 
      $vmConfig = Set-AzureRmVMSourceImage -VM $vmConfig -PublisherName "MicrosoftWindowsServer" -Offer "WindowsServer" -Skus "2012-R2-Datacenter-smalldisk" -Version "latest" 
      $vmConfig = Add-AzureRmVMNetworkInterface -VM $vmConfig -Id $using:nic.Id 
      $vmConfig = Set-AzureRmVMOSDisk -VM $vmConfig -Name $using:c.Name -CreateOption FromImage 
      New-AzureRmVM -ResourceGroupName $using:c.RG -Location $using:c.Location -VM $vmConfig 
     } 
    } 
} 
Verwandte Themen