在 Powershell 中,$input 是做什么用的?

Mr.*_*ris 8 powershell

我试图创建一个哈希表,

$input = @{'G'=100;'E'=50;'D'=35;'A'=100}
Run Code Online (Sandbox Code Playgroud)

并且无法弄清楚为什么它不会像往常一样使用像write-host, 或简单的$input. write-host回来了System.Collections.ArrayList+ArrayListEnumeratorSimple$input什么也没回。没有抛出错误。

凭直觉,我重命名了哈希表,然后繁荣,它看起来很正常。在 ISE 中打开一个新的 powershell 选项卡,我观察到变量$input填充了智能感知,即使我没有在这个环境中定义它。

现在我很好奇:这个系统变量 $input 有什么用?我在第 4 版。

bri*_*ist 7

这是一个自动变量

$INPUT

包含一个枚举器,用于枚举传递给函数的所有输入。该$input变量仅可用于函数和脚本块(它们是未命名的函数)。在函数的 Process 块中,$input变量枚举当前在管道中的对象。当 Process 块完成时,管道中没有剩余的对象,因此该$input变量枚举一个空集合。如果函数没有 Process 块,则在 End 块中,$input变量枚举函数的所有输入的集合。

这在 PowerShell 中也可用:

Get-Help about_Automatic_Variables
Run Code Online (Sandbox Code Playgroud)

我也有一个开放的功能请求Set-StrictMode来处理这个检测

  • @Mr.Budris 它已经是一个链接,点击第一句话。您还可以在 PowerShell 中运行“Get-Help about_Automatic_Variables”。 (3认同)