powershellwindows-installerteamviewer

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)