gpt4 book ai didi

file - 在索引之前解析文件并检查值是否存在,高效且在一行中

转载 作者:行者123 更新时间:2023-12-01 13:39:09 25 4
gpt4 key购买 nike

Windows .rdp 文件像这样存储值:

gatewayusagemethod:i:2
gatewayprofile:i:1

我可以成功地解析这些文件并将它们添加到一个对象中,如下例所示,除了不是每个 .rdp 文件都有这里的每个字段

foreach ($Path <# to RDP file #>) {

$RDPFileObject = "" | Select-Object -Property "Gateway Usage", "Gateway Profile"

$RDPFileObject."Gateway Usage" = (Select-String
-Path $Path -Pattern "gatewayusage:[a-z]:(.*)").Matches.Groups[1].Value
$RDPFileObject."Gateway Profile" = (Select-String
-Path $Path -Pattern "gatewayprofile:[a-z]:(.*)").Matches.Groups[1].Value

}

因此,因为我尝试在一行中使用 Matches.Groups[1] 进行索引,所以我经常得到

Cannot index into a null array.

显然,我可以在索引之前使用 if 语句检查每个 Select-String,但这会非常低效,因为我想解析整个文件。

如果值存在,是否有仅尝试索引 Matches 数组的单行解决方案,或者是否有更好的方法将这些属性一起添加到 $RDPFileObject

最佳答案

不确定这是否是您想要的,但它会在一行中将示例数据解析为 PS 对象:

$RDPFileObject = New-Object PSObject -Property (ConvertFrom-StringData ((Get-Content $Path | Out-String ) -replace '(.+):(.+)','$1=$2')) 

关于file - 在索引之前解析文件并检查值是否存在,高效且在一行中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41744211/

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