variable validate receive print parameter mandatory definir variables powershell parameters

variables - validate - powershell set variable



¿Cómo usar una variable de PowerShell como parámetro de comando? (4)

Lo intentaría con:

$mycmd = "MyCommand -$($newVar):$true" & $mycmd

resultado

No se puede trabajar porque el operador de ampersand solo ejecuta comandos individuales sin prameters o bloques de script.

Intento utilizar una variable como parámetro de comando pero no puedo entenderlo. Digamos que MyCommand aceptará dos parámetros: option1 y option2 y aceptan valores booleanos. ¿Cómo usaría $ newVar para sustituir la opción 1 o 2? Por ejemplo:

$newVar = "option1" MyCommand -$newVar:$true

Sigo obteniendo algo a lo largo de las líneas de ''No se puede encontrar un parámetro posicional que acepte el argumento'' -Sistema.String option1 '' .

Más específicamente:
Aquí, el archivo CSV es un resultado de una política diferente. El ciclo pasa por cada propiedad en el archivo y establece ese valor en mi política asdf ; entonces -$_.name:$_.value debe sustituir como -AllowBluetooth:true .

Import-Csv $file | foreach-object { $_.psobject.properties | where-object { # for testing I''m limiting this to ''AllowBluetooth'' option if($_.name -eq "AllowBluetooth"){ Set-ActiveSyncMailboxPolicy -Identity "asdf" -$_.name:$_.value }} }


Normalmente, para usar una variable para rellenar los parámetros de cmdlet, debe usar una variable de tabla hash, y splat, usando @

$newVar = @{option1 = $true} mycommand @newVar

Ejemplo agregado:

$AS_policy1 = @{ Identity = "asdf" AllowBluetooth = $true } Set-ActiveSyncMailboxPolicy @AS_policy1


Tuve el mismo problema y descubrí cómo resolverlo. La solución es usar invoke-Expression: invoke-Expression $ mycmd Esto usa $ mycmd-string, reemplaza variables y lo ejecuta como cmdlet con parámetros dados


Vea si esto funciona para usted:

iex "MyCommand -$($newVar):$true"