通过字符串数组的 Powershell v2 动态命令
Powershell v2 dynamic command through string arrays
我正在尝试构建一个小型 GUI 工具来权衡映射网络驱动器上的文件夹和文件大小。
UI 已预设 checkboxes/radiobuttons 在要执行的最终脚本中添加或删除管道
'run'按钮执行变量$fullquery
$fullQuery = $querycmd + $querypath + $setrecurse + $query + $querysuffix
这应该会产生最终的字符串;
gci g:\foo\bar\ -recurse | where-object {$_.Extension -eq ".psd"} | select -property name, length
每个部分都存储在下面的变量中,主 $fullQuery 变量将它们连接成一个字符串来执行;
$querycommand
# 这是; gci
$querypath
# 这是一组串联的字符串变量
$setrecurse
# 添加(或不添加)-recurse 标志
$query
# 是查询内容所在的数组; where-object 命令(主要是扩展),
每个 UI 元素在字符串中都有自己的代码 "| where-object {$_.Extension -eq ".psd"} " 启用复选框会将该字符串添加到 $query 数组中。
$querysuffix
# 过滤器以管道格式返回 file/folder 大小和名称以供显示。
我知道还需要添加更多内容才能真正获得 useful/usable 信息等等,但我无意中发现它能够给我任何信息至今。现在它根本没有产生任何错误(或任何消息),所以我没有可以粘贴的内容。
我尝试了多种方法来在按下 UI 按钮时执行 $fullquery,但没有任何效果;
我尝试将 $query 存储为 hashtable/array,我尝试将 $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 的限制?
我认为您不需要使用元编程来解决这个问题。问题中唯一棘手的部分是设置 -recurse
开关,这可以通过使用花哨的开关语法来解决:
$someBooleanVariable = $false
gci g:\foo\bar\ -recurse:$someBooleanVariable
我正在尝试构建一个小型 GUI 工具来权衡映射网络驱动器上的文件夹和文件大小。 UI 已预设 checkboxes/radiobuttons 在要执行的最终脚本中添加或删除管道
'run'按钮执行变量$fullquery
$fullQuery = $querycmd + $querypath + $setrecurse + $query + $querysuffix
这应该会产生最终的字符串;
gci g:\foo\bar\ -recurse | where-object {$_.Extension -eq ".psd"} | select -property name, length
每个部分都存储在下面的变量中,主 $fullQuery 变量将它们连接成一个字符串来执行;
$querycommand
# 这是; gci
$querypath
# 这是一组串联的字符串变量
$setrecurse
# 添加(或不添加)-recurse 标志
$query
# 是查询内容所在的数组; where-object 命令(主要是扩展),
每个 UI 元素在字符串中都有自己的代码 "| where-object {$_.Extension -eq ".psd"} " 启用复选框会将该字符串添加到 $query 数组中。
$querysuffix
# 过滤器以管道格式返回 file/folder 大小和名称以供显示。
我知道还需要添加更多内容才能真正获得 useful/usable 信息等等,但我无意中发现它能够给我任何信息至今。现在它根本没有产生任何错误(或任何消息),所以我没有可以粘贴的内容。
我尝试了多种方法来在按下 UI 按钮时执行 $fullquery,但没有任何效果;
我尝试将 $query 存储为 hashtable/array,我尝试将 $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 的限制?
我认为您不需要使用元编程来解决这个问题。问题中唯一棘手的部分是设置 -recurse
开关,这可以通过使用花哨的开关语法来解决:
$someBooleanVariable = $false
gci g:\foo\bar\ -recurse:$someBooleanVariable