Em meu arquivo em lote, chamo o script do PowerShell assim:
powershell.exe "& "G:\Karan\PowerShell_Scripts\START_DEV.ps1"
Agora, quero passar um parâmetro de string para START_DEV.ps1
. Digamos que o parâmetro seja w=Dev
.
Como posso fazer isso?
powershell
batch-file
Karan
fonte
fonte
Respostas:
Digamos que você gostaria de passar a string
Dev
como um parâmetro, de seu arquivo em lote:coloque dentro da sua cabeça de script PowerShell:
Isso se você quiser usar a variável embutida
$args
. De outra forma:e dentro de sua cabeça de script PowerShell:
Isso se você quiser um parâmetro nomeado.
Você também pode estar interessado em retornar o nível de erro:
O nível de erro estará disponível dentro do arquivo em lote como
%errorlevel%
.fonte
Supondo que seu script seja algo como o snippet abaixo e chamado testargs.ps1
Você pode chamar isso na linha de comando como:
Isso imprimirá "String de teste" (sem aspas) no console. "String de teste" torna-se o valor de $ w no script.
fonte
Quando um script é carregado, todos os parâmetros passados são carregados automaticamente em variáveis especiais
$args
. Você pode fazer referência a isso em seu script sem primeiro declarar.Como exemplo, crie um arquivo chamado
test.ps1
e simplesmente coloque a variável$args
em uma linha sozinha. Invocar o script desta forma, gera a seguinte saída:Como recomendação geral, ao invocar um script chamando o PowerShell diretamente, eu sugeriria usar a
-File
opção em vez de invocá-la implicitamente com&
- ela pode tornar a linha de comando um pouco mais limpa, especialmente se você precisar lidar com aspas aninhadas.fonte
Adicione a declaração do parâmetro no topo do arquivo ps1
test.ps1
Resultado
fonte
A resposta da @Emiliano é excelente. Você também pode passar parâmetros nomeados como:
Observe que os parâmetros estão fora da chamada de comando e você usará:
fonte