【问题标题】:PowerShell equivalent to Linux for user inputPowerShell 等效于 Linux 用于用户输入
【发布时间】:2014-08-24 18:21:05
【问题描述】:

例如,在名为 hello.sh 的 Linux shell 脚本中,您可以通过以下方式获取输入:

$name = $1
$Age = $2

echo "Hi $name!"
echo "You are $age years old!"

并且可以在 Linux 命令行上执行此脚本,如下所示:

./hello.sh Bob 99

有没有一种等效的方法可以以这种方式在 PowerShell 中的脚本中获取输入?

我只见过Read-Host,但这会在Powershell 脚本执行后提示用户输入。我想在命令行中调用带有所需输入参数的脚本。

【问题讨论】:

标签: powershell


【解决方案1】:

是的,这是一个参数化脚本:

[CmdletBinding()]
param (
      [string] $Name
    , [int] $Age
)

Write-Host -Object "Hi $Name!","You are $Age years old!";

然后,调用脚本:

.\test.ps1 -Name Trevor -Age 28;

【讨论】:

  • 感谢您的回复!有没有办法接受输入,而不必像 linux 中那样指示变量类型?
  • 是的,如果你不想,你不必声明命名参数。您可以改用$args[0]$args[1]。 :)
【解决方案2】:

另一个可能在本质上与 Linux 示例更相似的选项是:

$name = $args[0]
$Age  = $args[1]
echo "Hi $name!"
echo "You are $age years old!"

我只是想表明这里的差距不是很大。注意:echoWrite-Output 的别名。人们倾向于使用它而不是 Write-Host,因为它的输出无法被捕获或重定向。

【讨论】:

  • 此方法是否将输入变量存储在数组中?这就是我从 $args[0]、$args[1] 推断出来的。
  • @blah 是的。任何未绑定到已定义参数的输入参数都隐藏在 $args 数组中。
猜你喜欢
  • 1970-01-01
  • 2019-08-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多