返回列表 发帖

[问题求助] PowerShell展开多行文本中哈希表形式的参数变量

本帖最后由 meixi 于 2024-2-19 11:55 编辑

我需要判断$s多行字符串变量中是否有哈希表形式的参数变量被之后的命令所使用(例如下面的$gcParam和$acParam),如果有,则将该变量中的参数改写成一行的格式, 放在命令的后面
如果让AI直接帮改,成功率非常高, 让它写代码, 就不行了, 求路过大佬支招

注意:
1.里面的开关参数, 为$true时, 变为一行时, 只要开关, 不需再赋值
2.哈希表中注释掉的参数直接忽略, 只提取没注释掉的参数
3.改成单行时,最好用单行的参数去直接分别替换@gcParam和@acParam, 因为命令前或命令后, 可能还有其它的代码, 例如 Get-Content 命令后有 管道, Add-Content 命令后还有注释
$s= @'
$gcParam = @{
Path    = "D:\c.txt" #路径
Encoding   = 'UTF8' #编码
TotalCount = 6 #取前6行
# Tail = 6 #取后6行
# ReadCount = 0 #一次通行
# Include = "" #包含
# Exclude = "" #排除
# Filter = "" #过滤
Raw        = $true #整文
# Force = $true #强制
}
Get-Content @gcParam | Out-File 'c:\a.txt'
$acParam = @{
Path   = "D:\c.txt" #路径
Value   = "hello" #追加的文本
Encoding  = 'UTF8' #编码
# Force = $true #强制
NoNewline = $true #不要新行
}
Add-Content @acParam #向文本文件中添加文本
'@
<# 处理后的结果:
Get-Content -Path = "D:\c.txt" -Encoding = 'UTF8' -TotalCount = 6 -Raw | Out-File 'c:\a.txt'
Add-Content -Path "D:\c.txt" -Value "hello" -Encoding 'UTF8' -NoNewline #向文本文件中添加文本
#>COPY

啊这,建议通过解析器 来解析
System.Management.Automation.Language.Parser

System.Management.Automation.PSParser

TOP

本帖最后由 meixi 于 2024-2-19 12:37 编辑

回复 2# Five66


    多谢大佬指导!

TOP

返回列表