operador de chamada do powershell com múltiplos argumentos?

2

Estou tentando usar o operador de chamada do powershell para executar essencialmente o seguinte comando:

"C: \ Arquivos de Programas (x86) \ PuTTY \ plink.exe" "-v -agent -m C: \ Scripts \ idrac_powerup_commands.txt root @ [nomedoservidor]"

Código atual

$runputtyscript = @()
$runputtyscript += "-v"
$runputtyscript += "-agent"
$runputtyscript += "-m C:\Scripts\idrac_powerup_commands.txt"

& 'C:\Program Files (x86)\PuTTY\plink.exe' $allArgs root@servername

Problema

Isso é executado, mas o script não executa o arquivo com os comandos da mesma forma que o executa se a sequência original foi executada a partir da linha de comando. Ela me mostra o console de administração (portanto, ele foi autenticado com a chave pública, etc.) mas ele simplesmente não executou o script que eu pedi para ser executado.

Coisas que eu tentei

  • Mover o componente de nome de arquivo de -m para seu próprio argumento
  • Colocando aspas ao redor do componente de nome de arquivo -m

Pergunta

Talvez uma maneira mais sucinta de perguntar : Qual é a maneira correta de usar argumentos que tenham seus próprios argumentos (por exemplo, "-m [nome do arquivo] -v -a" com o operador de chamada (& ;) no powershell?

    
por SeanKilleen 07.02.2013 / 23:21

2 respostas

2

Você pode estar correndo para o caso em que sua variável não está sendo manipulada pelo binário do Win32. Você pode facilitar isso por meio de aspas duplas:

'C:\Program Files (x86)\PuTTY\plink.exe' "$allArgs" root@servername

Eu tive o mesmo problema com o netsh um tempo atrás.

    
por 07.02.2013 / 23:32
0

Por algum motivo, escrevê-lo da seguinte maneira faz com que ele funcione perfeitamente a partir de um prompt do powershell e de um prompt de comando chamando o powershell.exe C: \ Path \ To \ Script.ps1

& 'C:\Program Files (x86)\PuTTY\plink.exe' -v -agent -m C:\Scripts\idrac_powerup_commands.txt root@servername | Write-Host

Vá para a figura.

    
por 08.02.2013 / 14:09