我正在努力寻找解析这段代码的最佳方法:
Secure Boot = Enabled;[Optional:Disabled = Enabled]
Network Offline Locker = Disabled;[Optional:Disabled = Enabled]
Chassis Intrusion Detection = Disabled;[Optional:Disabled = Enabled]
Configuration Change Detection = Disabled;[Optional:Disabled = Enabled]
Password Count Exceeded Error = Enabled;[Optional:Disabled = Enabled]
CSM = Disabled;[Optional:Disabled = Enabled]
Boot Up Num-Lock Status = On;[Optional:Off = On]我需要它,这样$Config和$ConfigValue就是例子:
$Config
Secure Boot
$ConfigValue
Enabled;[Optional:Disabled = Enabled]因此,配置名称在“=”的左边,它的值在“=”的右边。
我现在这样做,它似乎工作得很好:
(Get-Content "File.ini") | ForEach-Object {
#Isolate parameter (what is left of " = ")
$Config = ($_ -split " = ")[0]
#Isolate value of parametre (what is right of " = ")
$ConfigValue = ($_ -split " = ")[1]
}这是最有意义的吗?它工作得很好,但我总是好奇地想找到不同的方法来分析它。
非常感谢。
发布于 2020-05-21 20:58:17
我建议使用这样的PSCustomObject:
Get-Content -Path D:\sample\File.ini |
ForEach-Object {
[PSCustomObject]@{
Config = ($_ -split '=')[0].Trim()
ConfigValue = (($_ -split '=')[1..10].Trim()) -join '='
}
}我假设您的ini文件中的等号不超过10个。;-)
你有一个包含2个(或更多)等号的字符串。但您只想在第一个上分成两部分。因此,您在每个等号上拆分字符串,将第一部分用作第一部分,并将其余部分连接为第二部分。因此,您可以再次使用等号重新连接它们。
https://stackoverflow.com/questions/61934509
复制相似问题