azure-powershell icon indicating copy to clipboard operation
azure-powershell copied to clipboard

using new-azvm with userdata parameter throws an error

Open dfoxvt opened this issue 1 year ago • 3 comments

Description

when using the new-azvm command with the -UserData thats base64 encoded always shows "New-AzVM : Parameter set cannot be resolved using the specified named parameters." Expected it runs with userdata

Issue script & Debug output

New-AzVM -ResourceGroupName $rgname -Location $loc -VM $vmConfig -UserData $cloudinit
New-AzVM : Parameter set cannot be resolved using the specified named parameters.
At line:1 char:1
+ New-AzVM -ResourceGroupName $rgname -Location $loc -VM $vmConfig -Use ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidArgument: (:) [New-AzVM], ParameterBindingException
    + FullyQualifiedErrorId : AmbiguousParameterSet,Microsoft.Azure.Commands.Compute.NewAzureVMCommand

Environment data

Name                           Value
----                           -----
PSVersion                      5.1.22621.2506
PSEdition                      Desktop
PSCompatibleVersions           {1.0, 2.0, 3.0, 4.0...}
BuildVersion                   10.0.22621.2506
CLRVersion                     4.0.30319.42000
WSManStackVersion              3.0
PSRemotingProtocolVersion      2.3
SerializationVersion           1.1.0.1

Module versions

ModuleType Version    Name                                ExportedCommands
---------- -------    ----                                ----------------
Script     2.12.1     Az.Accounts                         {Add-AzEnvironment, Clear-AzConfig, Clear-AzContext, Clear-AzDefault...}
Script     5.7.0      Az.Compute                          {Add-AzImageDataDisk, Add-AzVhd, Add-AzVMAdditionalUnattendContent, Add-AzVMDataDisk...}
Script     5.6.0      Az.Network                          {Add-AzApplicationGatewayAuthenticationCertificate, Add-AzApplicationGatewayBackendAddressPool, Ad...

Error output

HistoryId: 26


Message        : Parameter set cannot be resolved using the specified named parameters.
StackTrace     :    at System.Management.Automation.CmdletParameterBinderController.ThrowAmbiguousParameterSetException(UInt32 parameterSetFlags,
                 MergedCommandParameterMetadata bindableParameters)
                    at System.Management.Automation.CmdletParameterBinderController.ValidateParameterSets(Boolean prePipelineInput, Boolean setDefault)
                    at System.Management.Automation.CmdletParameterBinderController.BindCommandLineParametersNoValidation(Collection`1 arguments)
                    at System.Management.Automation.CmdletParameterBinderController.BindCommandLineParameters(Collection`1 arguments)
                    at System.Management.Automation.CommandProcessor.BindCommandLineParameters()
                    at System.Management.Automation.CommandProcessor.Prepare(IDictionary psDefaultParameterValues)
                    at System.Management.Automation.CommandProcessorBase.DoPrepare(IDictionary psDefaultParameterValues)
                    at System.Management.Automation.Internal.PipelineProcessor.Start(Boolean incomingStream)
                    at System.Management.Automation.Internal.PipelineProcessor.SynchronousExecuteEnumerate(Object input)
                 --- End of stack trace from previous location where exception was thrown ---
                    at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
                    at System.Management.Automation.Internal.PipelineProcessor.SynchronousExecuteEnumerate(Object input)
                    at System.Management.Automation.PipelineOps.InvokePipeline(Object input, Boolean ignoreInput, CommandParameterInternal[][] pipeElements,
                 CommandBaseAst[] pipeElementAsts, CommandRedirection[][] commandRedirections, FunctionContext funcContext)
                    at System.Management.Automation.Interpreter.ActionCallInstruction`6.Run(InterpretedFrame frame)
                    at System.Management.Automation.Interpreter.EnterTryCatchFinallyInstruction.Run(InterpretedFrame frame)
Exception      : System.Management.Automation.ParameterBindingException
InvocationInfo : {New-AzVM}
Line           : New-AzVM -ResourceGroupName $rgname -Location $loc -VM $vmConfig -UserData $cloudinit
Position       : At line:1 char:1
                 + New-AzVM -ResourceGroupName $rgname -Location $loc -VM $vmConfig -Use ...
                 + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
HistoryId      : 26

dfoxvt avatar Feb 08 '24 17:02 dfoxvt

Thanks for the feedback! We are routing this to the appropriate team for follow-up. cc @Drewm3, @TravisCragg-MSFT, @nikhilpatel909, @sandeepraichura, @hilaryw29, @GabstaMSFT.

Thanks for the feedback! We are routing this to the appropriate team for follow-up. cc @Drewm3, @TravisCragg-MSFT, @nikhilpatel909, @sandeepraichura, @hilaryw29, @GabstaMSFT.

@TravisCragg-MSFT Would you mind taking a look at this? Thanks!

hilaryw29 avatar Feb 13 '24 01:02 hilaryw29

@dfoxvt Try passing the userdata in the VM config, not in New-AzVM. - https://learn.microsoft.com/en-us/powershell/module/az.compute/new-azvmconfig?view=azps-12.0.0

TravisCragg-MSFT avatar May 30 '24 19:05 TravisCragg-MSFT

As Travis said, and the New-AzVM docs show, the UserData parameter cannot be passed in with the VMConfig parameter. You either set it on the VMConfig object with New-AzVMConfig, or set it in New-AzVM without the config object.

Sandido avatar Jul 18 '24 20:07 Sandido