Próbuję wdrożyć maszyny wirtualne Azure za pośrednictwem przepływu pracy, aby można było to zrobić równolegle. Kod działa dobrze poza przepływem pracy. Ale otrzymuję ten błąd, gdy próbuję to zrobić poprzez przepływ pracy.Jak przekonwertować PSVirtualMachineObjects?
Importuję parametry maszyny wirtualnej za pośrednictwem pliku csv. Czy istnieją dodatkowe uwagi dotyczące wdrażania maszyn wirtualnych Azure za pośrednictwem przepływu pracy?
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
}
}
i otrzymuję ten błąd
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]
Czy próbowałeś aktualizować moduły powershell? – 4c74356b41
Tak. Nie pomaga. Używam Powershell v5.1 –
Testuję w moim laboratorium. Mam taki sam rezultat z tobą. Może mógłbyś użyć [przykład] (https://blogs.inframon.com/2016/09/deploy-in-parallel-multiple-azure-virtual-machines-powershell-workflow-script/), aby utworzyć maszynę wirtualną równolegle. –