在尝试使用小脚本时,它突然变慢了。我意识到我已将random
替换为get-random
,假设它是别名。
比较以下输出:
measure-command { (0..1000) | % { get-random } }
...
Seconds : 0
Milliseconds : 86
...
VS
measure-command { (0..1000) | % { random } }
...
Seconds : 44
Milliseconds : 192
...
random
似乎比get-random
慢50倍。 random
似乎不是 get-random
的别名,即使它看起来是相同的参数。 get-alias random
和get-command random
都会返回错误random
无法找到。
TL; DR
random
不是get-random
,它是什么?
答案 0 :(得分:4)
random
Get-Random
当PowerShell无法将单字命令解析为函数/别名/可执行文件时,它就像暗示了Get
动词一样。
这适用于任何其他Get-*
cmdlet。在powershell.exe
中尝试其中一些:
item .
childitem $env:USERPROFILE
help random
content $env:SystemRoot\System32\drivers\etc\hosts
我实际上并不确定帮助文件中是否提到过这种情况,但自从PowerShell版本1.0以来就是这种情况,如2006年书籍"Monad (AKA. PowerShell): Introducing the MSH Command Shell and Language"中所述:
所有名词都有一个默认动词
的方式相同get
,如果没有动词则假设 给出。换句话说,命令process
将完全表现出来 与get-process