J'ai un script Powershell qui doit exécuter un exécutable en ligne de commande qui demande l'entrée d'utilisateur (pour lequel il n'y a pas de paramètre de ligne de commande). Quelque chose comme ceci:Comment faire un script Powershell répondre à une invite pour l'entrée de l'utilisateur?
# promptsForInput.ps1
$someInput = Read-Host "Gimme some input"
# do something with $someInput
L'exécutable réel est un binaire compilé que je ne peux pas modifier, mais ce script exemple faire dans le cadre de cette question. Mon script Powershell appelle l'exécutable:
# myScript.ps1
.\promptsForInput.ps1
Lors de l'exécution, je reçois quelque chose invité à d'entrée:
> .\myScript.ps1
Gimme some input:
Je dois être en mesure de remplir cette demande d'entrée sans intervention de l'utilisateur. Lorsque promptsForInput.ps1
invites pour l'entrée d'utilisateur, j'ai besoin myScript.ps1
d'entrer la valeur requise et procéder à l'exécution du script.
Des questions similaires sur SO soit des réponses spécifiques à l'exe particulier, ou sont par ailleurs inutile:
- How to fill the prompt in powershell script
- Powershell: Uninstall Software that has prompts for user input
- How to "answer" a console input prompt in PowerShell (in the code)
- How to write to user input in powershell
'$ input' était juste utilisé pour l'exemple (je vais le changer); Comme je l'ai dit, le programme en cours s'appelle un binaire. – asgallant
Existe-t-il un moyen d'étendre la méthode pipe à plus d'entrées? En supposant que 'promptsForInput.ps1' demande plusieurs entrées,' "foo" | "barre" | . \ promptsForInput.ps1' (évidemment) ne fonctionnera pas, y a-t-il une syntaxe qui le fera? – asgallant
Si vous avez plusieurs lignes d'entrée, vous pouvez séparer avec '\' r \ 'n'; par exemple. '' "Ligne 1'r'nLine2" ''. Mais encore une fois: Cela dépend entièrement si l'exécutable accepte l'entrée standard. Ce n'est pas sous le contrôle de PowerShell. –