我想获得对函数或cmdlet的引用。
例如,我想引用Get-ChildItem cmdlet。 我不想调用它,我想要一个函数的引用,然后我可以传递给另一个函数。
是否有语法来执行此操作?
我知道我可以使用字符串'Get-ChildItem'调用Invoke-Expression。这是处理这种情况的唯一方法吗?
答案 0 :(得分:6)
$gci = Get-Command Get-ChildItem
这样做..但由于你还没有说过你想如何使用它,我不确定这是不是你想要的。
编辑:看到您的评论后,似乎您想将其存储在变量中。您可以使用脚本函数执行此操作,但我不认为您可以使用cmdlet的内容来执行此操作,除非您先将其包装在scriptblock中。
答案 1 :(得分:1)
Invoke-Expression是处理这个用例的工具。请注意,如果您需要在执行时在字符串中定义一些变量,则应该使用严重标记`来转义该变量,或者您可以改为使用单引号定义here-string。
$commands = @"
`$computername = `$env:computername
get-wmiobject win32_computersystem -computername `$computername
"@
Invoke-Expression $commands
>Domain : FOXDEPLOY
Manufacturer : Dell Inc.
Model : Latitude E6540
Name : DELLBOOK
PrimaryOwnerName : Windows User
TotalPhysicalMemory : 17080483840