[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

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

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

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

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

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

System.Management.Automation.PSParser

TOP

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

回复 2# Five66


    多谢大佬指导!

TOP

返回列表