Powershell v2通过字符串数组的动态命令

时间:2015-02-19 18:21:06

标签: powershell dynamic scripting

我正在尝试构建一个小型GUI工具来衡量映射网络驱动器上的文件夹和文件大小。 UI具有预设复选框/单选按钮,用于在要执行的最终脚本中添加或删除管道

'''按钮执行变量$ fullquery

$fullQuery = $querycmd + $querypath + $setrecurse + $query + $querysuffix

这应该产生最终的字符串;

gci g:\foo\bar\ -recurse | where-object {$_.Extension -eq ".psd"} | select -property name, length

每个部分都存储在下面的变量中,并且master $ fullQuery变量将它们连接成一个字符串来执行;

$querycommand#是; GCI

$querypath#这是一组连接的字符串变量

$setrecurse#添加(或不添加)-recurse标志

$query#是查询内容所在的数组; where-object命令(主要是扩展), 每个UI元素在字符串"中都有自己的代码where-object {$ _。Extension -eq" .psd"}"启用复选框会将该字符串添加到$ query数组中。

$querysuffix#是过滤器以可管道格式恢复文件/文件夹大小和名称以供显示。

我知道还有更多需要添加的东西才能真正获得有用/可用的信息等等,但我偶然发现它能够让它给我任何信息到目前为止。现在它根本没有产生任何错误(或任何消息)所以我没有任何东西可以粘贴。

当按下UI按钮时,我尝试了多种执行$ fullquery的方法,但没有任何效果;

我已尝试将$ query存储为哈希表/数组,我已尝试将$ fullquery作为数组执行,同时尝试了两者。

我看过Tome Tanasovski的https://powertoe.wordpress.com/2010/02/10/dynamic-code-in-powershell/

stackexchange上的很多动态代码帖子都有兴趣使变量名称为dynamic / mutatable而不是那些变量的内容。

我也看过很多涉及使用Invoke-Command和&的帖子。使用单个字符串参数执行某些操作,但我的问题是我希望能够加载一个数组,其中包含存储为字符串的不确定数量的管道命令(而不是参数),然后执行整行,就像它是一个命令。

我甚至尝试过直接存储命令; $query = | whereobject {...so on }但当然,powershell不会让你这样做,它只接受它作为一个字符串。

鉴于我已经尝试了许多其他人发现的工作,我开始怀疑这是否是Powershell V2的限制?

1 个答案:

答案 0 :(得分:0)

我认为你不需要使用元编程来解决这个问题。问题唯一棘手的部分是设置-recurse开关,可以使用花哨的开关语法解决:

$someBooleanVariable = $false
gci g:\foo\bar\ -recurse:$someBooleanVariable