gpt4 book ai didi

powershell - 字符串中命令的Powershell解析

转载 作者:行者123 更新时间:2023-12-03 01:26:35 25 4
gpt4 key购买 nike

在Powershell脚本中,我有一个字符串形式的命令。我想知道是否有一种简单的方法可以以哈希图的形式提取参数。

输入:

$str = "SampleCommandName -Arg1 Value1 -Arg2 Value2"
$command, $parameters = Some-Function $str
Write-Host $parameters[Arg1]

输出:Value1

我尝试使用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

输出:

名称值
---- -----
Arg1值1
Arg2 Value2

关于powershell - 字符串中命令的Powershell解析,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62355098/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com