Get-Random和random之间有什么区别

时间:2015-12-01 23:58:02

标签: powershell

在尝试使用小脚本时,它突然变慢了。我意识到我已将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 randomget-command random都会返回错误random无法找到。

TL; DR

random不是get-random,它是什么?

1 个答案:

答案 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

的方式相同