Powershell pass variable to ArgumentList

I have some trouble passing a variable to an ArgumentList. I want to install Teamviewer via MSI with powershell:

Start-Process 'msiexec.exe' -ArgumentList $tvparams

i want to deploy the machine on a Teamviewer-Site and pass the variable $serialnumber as the alias:

$serialnumber = (get-ciminstance -classname win32_bios -property serialnumber).serialnumber


$tvparams = '/i','ASSIGNMENTOPTIONS="--alias  $serialnumber"'

The onboarding of the machine works but instead of the actual serialnumber as an alias the machine pops up as "$serialnumber" on the Teamviewer-Site as if it is a String instead of a variable.

Im fiddling with the quotes for too long so im asking now. I feel like there must be a simple solution

>Solution :

the machine pops up as "$serialnumber" on the Teamviewer-Site as if it is a String instead of a variable.

That’s because you’re using ' single-quotes – variable expansion only works in " double-quoted strings.

You can get around it by switching to double-quotes and escaping the literal double-quotes:

$tvparams = '/i',"ASSIGNMENTOPTIONS=""--alias  $serialnumber"""

Or by using the -f string format operator:

$tvparams = '/i',$('ASSIGNMENTOPTIONS="--alias  {0}"' -f $serialnumber)

Leave a Reply