powershell - Powershell解析字符串中的命令
问题描述
在 powershell 脚本中,我有一个字符串形式的命令。我想知道是否有一种简单的方法可以以哈希图的形式提取参数。
输入 :
$str = "SampleCommandName -Arg1 Value1 -Arg2 Value2"
$command, $parameters = Some-Function $str
Write-Host $parameters[Arg1]
输出:值1
我尝试使用 ConvertFrom-StringData,但我的 PowerShell 版本不支持 Delimiter 参数。
解决方案
您可以手动将其转换为哈希:
$str = "SampleCommandName -Arg1 Value1 -Arg2 Value2"
$hash = [ordered]@{}
$str.Split("-").Trim() | Where-Object { $_.Contains(" ") } | ForEach-Object {
$name, $value = $_ -split '\s+', 2
$hash[$name] = $value
}
$hash
或者您可以使用ConvertFrom-StringData
和正则表达式替换将名称和值之间的空格更改为=
字符。您需要确保它只替换第一次出现,以免干扰值中的任何空格。
$str = "SampleCommandName -Arg1 Value1 -Arg2 Value2"
($str.Split("-").Trim() | Where-Object { $_.Contains(" ") }) -replace '([^\s]+)\s(.*)', '$1=$2' -join "`r`n" | ConvertFrom-StringData
没有正则表达式的替代方案:
$str = "SampleCommandName -Arg1 Value1 -Arg2 Value2"
($str.Split("-").Trim() | Where-Object { $_.Contains(" ") } | ForEach-Object { $_.Split(' ', 2) -join '=' }) -join "`r`n" | ConvertFrom-StringData
输出:
名称 值 ---- ----- 参数 1 值 1 参数 2 值 2
推荐阅读
- javascript - Vue制定计算属性不会跳出循环
- html - 溢出:自动在台式机上工作,但不能在移动设备上工作
- c# - 如何在 Hangman C# 中输出剩余/使用的字母
- excel - 将 Bash 中的 CSV 读入字典/关联数组
- django - Django model_name.item.add(item) 将项目添加到模型中的所有记录
- javascript - 按从一天中的时间开始的顺序从数组中输出图像
- firebase - 允许读取任何用户的最佳 Firebase 规则
- python - Python Tkinter:_tkinter.TclError:图像“pyimage1”不存在
- php - php 选择控件更改布局
- telegram - 使用 Telethon 在所有 Telegram 组中搜索单词