在Powershell中%,$ _和@是什么意思?

MR.*_*J00 0 powershell

这是什么意思:$_%PowerShell中?

1..10 | Foreach {if($_%2){"$_ is odd number"}}
Run Code Online (Sandbox Code Playgroud)

Adm*_*ngs 9

  • %
    • 在您的情况下,它是模运算符。它将返回将左侧值除以右侧值的余数。
    • 默认将其作为PowerShell的别名Foreach-Object。您可以执行Get-Alias命令以查看其他可能包含特殊字符(例如Where-Object的别名)的别名?

  • $_
    • 与...同义 $PSItem
    • 在管道对象中包含当前对象
    • 在您的情况下,它表示传递到Foreach-Object脚本块({})中的当前对象。
    • 它通常会显示在Where-Object {}脚本块和Select-Object哈希表中。

  • @

    • 文字@字符
    • 表示飞溅
      • 语法为@VariableName。该变量可以是数组或哈希表。它通常与哈希表或字典一起使用,其中Name属性表示参数名称,而value属性是该参数的值。然后将该变量放入另一个命令中。一个例子是Get-Process @Params
    • 用于通过数组子表达式运算符声明和初始化数组@()

      • 例子是$myArray = @()$myArray = @("value1","value2")
    • 用于创建和/或初始化哈希表
      • 语法为$variable = @{}$variable = @{Property=Value}
    • 用于此处字符串
      • 这里的字符串是特殊情况的字符串,可以扩展多行并包含特殊字符
      • 通过以@'或开头@"的字符串值并以相应的'@或结束字符串值来表示"@
        • 此处的打开和关闭字符应在右侧(RHS)的相应行上隔离。
    • 常见于符号
      • 用于电子邮件地址构建,即user@domain.com。
      • 在外部程序远程登录语法中使用,即user @ hostname。

额外阅读和著名链接:

  1. 有关其他算术运算符的模数信息,请参见关于算术运算符。

  2. 有关对象及其处理方式的更多信息,请参见Foreach-ObjectForeach-Object

  3. 有关飞溅的更多信息和用法,请参阅关于飞溅

  4. 另一个很好的资源是关于自动变量,它将列出PowerShell的保留/自动变量。它们由PowerShell创建和维护。您会注意到有些变量具有非字母和非数字字符。在创建自己的自定义变量时,应仅将这些变量用于其预期目的,而不应使用其名称。

  5. 有关数组子表达式运算符的详细信息,请参见关于数组

  6. 有关创建和操作哈希表对象的详细信息,请参见关于哈希表

  7. 请参阅关于报价规则,以了解更多信息和使用此处字符串的示例。

  • 可能值得注意的是,“%”也是“ ForEach-Object”的别名。这不是示例中使用的方式,但是可以这样使用。 (3认同)