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"