标题: [问题求助] PowerShell展开多行文本中哈希表形式的参数变量 [打印本页]
作者: meixi 时间: 2024-2-18 20:07 标题: 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 #向文本文件中添加文本
- #>
复制代码
作者: Five66 时间: 2024-2-18 21:30
啊这,建议通过解析器 来解析
System.Management.Automation.Language.Parser
或
System.Management.Automation.PSParser
作者: meixi 时间: 2024-2-19 07:19
本帖最后由 meixi 于 2024-2-19 12:37 编辑
回复 2# Five66
多谢大佬指导!
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |