PowerShell如何获取函数或cmdlet的引用?

时间:2015-04-17 17:45:25

标签: powershell

我想获得对函数或cmdlet的引用。

例如,我想引用Get-ChildItem cmdlet。 我不想调用它,我想要一个函数的引用,然后我可以传递给另一个函数。

是否有语法来执行此操作?

我知道我可以使用字符串'Get-ChildItem'调用Invoke-Expression。这是处理这种情况的唯一方法吗?

2 个答案:

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