【问题标题】:What's the command of call operator &?呼叫运算符&的命令是什么?
【发布时间】:2017-02-22 04:49:46
【问题描述】:

我使用ls alias: 并试图找到&。但是,& 不在输出中。 & 是什么?是Invoke-CommandInvoke-Expression的组合吗?

是否还有其他在 PowerShell 中没有 cmdlet 的运算符?

【问题讨论】:

  • 它是一个运算符,因此是语言语法的一部分,例如+
  • 运算符 != 别名。 Lachie White 回答了关于& 的问题。至于其余的,实在是太多了,就不一一列举了。阅读此处列出的帮助文件Get-Help *operators*
  • @FrodeF。执行Get-Help *operators* 什么也没显示。
  • 星号是设计使然。您可以使用 get-help 通配符搜索主题。至少在较新的 PS 版本中。尝试 update-help 以确保您已下载所有帮助文件
  • 现在在 PS2.0 中进行 Testet 通配符搜索并且它可以工作(至少与 PowerShell.exe -version 2 一起使用),所以它可能没有返回任何内容,因为您没有使用 update-help 下载帮助文件。 :-)

标签: powershell


【解决方案1】:

调用运算符& 允许您执行命令、脚本或函数。

很多时候你可以通过输入它的名字来执行一个命令,但是只有当命令在环境路径中时才会运行。此外,如果命令(或路径)包含空格,那么这将失败。用引号将命令括起来会使 PowerShell 将其视为字符串,因此除了引号之外,使用 & 调用运算符强制 PowerShell 将字符串视为要执行的命令。

PowerShell Call Operator

我不确定 PowerShell 中的所有运算符,但另一个非常有用的运算符是 --%,用于停止解析。

在 PowerShell 3.0 中引入的停止解析符号 --% 指示 PowerShell 避免将任何进一步的输入解释为 PowerShell 命令或表达式。

PowerShell Stop Parsing Operator

以已制作的 cmets 为基础:

Get-Help About_Operators

它将向您展示所有运算符类型和抽象运算符类型的最佳概览,例如调用和停止解析运算符。

【讨论】:

【解决方案2】:

呼叫操作员的一些其他用途,没有很好的记录:

# Get and set a variable in a module scope with the call operator 
# get module object
$m = get-module counter

& $m Get-Variable count
& $m Set-Variable count 33

# see module function definition
& $m Get-Item function:Get-Count

# run a cmdlet with a commandinfo object and the call operator
$d = get-command get-date
& $d

您可以将& { } 视为一个匿名函数。

1..5 | & { process{$_ * 2} }

另一个真正有用的运算符是子表达式运算符。 $( ) 它不仅适用于内部字符串。您可以组合两个语句并使它们作为一个语句。

$(echo hi; echo there) | measure

If 和 Foreach 语句也可以放入其中。您通常无法从 foreach () 进行管道传输。因此,您可以在任何可以放置表达式或管道的地方使用 $() 放置任何语句或语句组。

$(foreach ($i in 1..10) { $i;sleep 1 } ) | Out-Gridview

不过,我喜欢使用调用运算符(或函数)从 foreach 流式传输,所以我不必等待。

 & {foreach ($i in 1..10) { $i;sleep 1 } } | Out-GridView

【讨论】:

  • 我不知道有这些有用的行为。感谢您分享你的知识。祝你有美好的一天。
  • @SmartHumanism 谢谢。我从 Windows Powershell In Action 一书中得到它。
  • 感谢您的礼貌并分享您从中学到的资源。如果我可以问你一点,& {foreach ($i in 1..10) { $i;sleep 1 } } 似乎与% {foreach ($i in 1..10) { $i;sleep 1 } } 的工作方式相同。 & 运算符和 % 运算符之间有什么区别?
  • @SmartHumanism 他们并没有真正进行比较。 % 是 foreach-object,与其他 foreach () 相比,您可以从中通过管道传输。
  • 我测试过,似乎% 的使用方式与& 类似。区别似乎在于范围,如果您运行& {$temp = 3},那么当您键入$temp 时没有显示任何结果,而在% {$temp = 3} 的情况下,您可以在当前PowerShell 范围内获得$temp 的值。
猜你喜欢
  • 2011-03-17
  • 2010-09-10
  • 1970-01-01
  • 2011-02-27
  • 1970-01-01
  • 1970-01-01
  • 2021-10-22
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多