[DBG]: PS C:\Windows\system32>>> echo [uint32]::maxvalue
[uint32]::maxvalue
Run Code Online (Sandbox Code Playgroud)
和
[DBG]: PS C:\Windows\system32>>> $mv = [uint32]::maxvalue
[DBG]: PS C:\Windows\system32>>> echo $mv
4294967295
Run Code Online (Sandbox Code Playgroud)
我确信powershell有一个很好的理由这样做:-).有道路我可以告诉它不要这样做.我实际上是传递和int到一个函数,有时我想传递maxvalue
我知道我能做到
$mv = [uint32]::maxvalue
MyFunc $mv
Run Code Online (Sandbox Code Playgroud)
我想知道是否有类似的东西
MyFunc ([uint32]::maxvalue)
MyFunc `[uint32::maxvalue`
Run Code Online (Sandbox Code Playgroud)
等等
原因是echo命令将参数解释为a string而不是任意值.因此,在第一个例子中,它从字面上打印出论据,而不是将其解释为一个值.在第二种情况下,虽然它被解释为表达式并被赋值给一个值.
您可以通过自己创建一个函数来重现此行为,该函数将输出回显到控制台.
function example {
param ([string]$arg)
Write-Output $arg
}
example [uint]
> [uint]
example 42
> 42
Run Code Online (Sandbox Code Playgroud)
您还可以echo通过使用()s指定它是一个表达式来强制该函数将其解释为值
echo [uint32]::maxvalue
> [uint32]::maxvalue
echo ([uint32]::maxvalue)
> 4294967295
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
327 次 |
| 最近记录: |