让我编写这个示例:我们处于一个部署过程,我们希望调用命令运行时(例如Get-SPFeature),并且此命令接受一些您希望在部署某些pkgs的过程中更改的选项。 某些功能必须安装在Web Scope中,其他功能必须安装在Site Scope中,其他功能必须安装在WebApplication范围内。
这个想法只写一个函数,可以帮助您选择在检查后启用该功能的位置:
function EnableFeatures ($features, $where, $url, $logFile)
$ features变量是一个包含要启用的功能列表的数组。 $ url变量是此功能的位置。 在尝试在该范围内启用该功能之前,我们需要$ where变量来检查该功能是否已启用:
Get-SPFeature -Identity "my feature" -Webapplication/Site/Web "my url"
我想要做的是使用我需要的变量执行我的EnableFeatures函数并执行此检查。
我该怎么做?
答案 0 :(得分:2)
我认为你只能使用哈希表splatting,因为你在变量中使用了命名参数。
所以这会导致:
Get-SPFeature -Identity $feature @{$where=$url}
或
Get-SPFeature @{Identity=$feature; $where=$url}
哦......你也可以这样做:
Invoke-Expression "Get-SPFeature -Identity $feature $where $url"
但是你的需求可能会很慢。