将文本文件中的单行导入到json文件中

问题描述 投票:0回答:1

我有一个非常简单的问题,我相信有人可以很快回答我。

我有一个文本文件 (password.txt),其中包含由 Poweshell 脚本生成的随机字符串,用作 wifi 密码。

我有另一个脚本(change-password.ps1),它可以登录我的路由器并更改密码。我已经设法让这个脚本查看 json 文件 (config.json) 并使用静态密码之一。

这是我的json文件

{ "PSKs": {
            "01":"PSKforJanuary123!!",
            "02":"PSKforFebruary123!",
            "03":"PSKforMarch123!",
            "04":"PSKforApril123!",
            "05":"PSKforMay123!",
            "06":"PSKforJune123!",
            "07":"PSKforJuly123!",
            "08":"PSKforAugust123!",
            "09":"PSKforSeptember123!",
            "10":"PSKforOctober123!",
            "11":"PSKforNovember123!",
            "12":"PSKforDecember123!"
        }
    }

因此,我如何替换“PSKfor***123!”,而不是使用上面列表中的其中之一?与我的密码.txt 中的文本行?

或者有没有一种方法可以在我的 json 文件中创建这个随机字符串,而无需运行另一个脚本来生成它?

提前致谢!

json powershell passwords
1个回答
0
投票

如何使用文件中存储的密码更新 Json 中的所有属性:

$json = Get-Content path\to\json.txt -Raw | ConvertFrom-Json
$pass = Get-Content path\to\password.txt
$json.PSKs.PSObject.Properties | ForEach-Object { $_.Value = $pass }
$json | ConvertTo-Json | Set-Content path\to\json.txt

如何使用存储在文件中的密码更新 Json 中的单个属性,例如动态更新与当前月份对应的属性:

$json = Get-Content path\to\json.txt -Raw | ConvertFrom-Json
$pass = Get-Content path\to\password.txt
$month = [datetime]::Now.ToString('MM')
# `$json.PSKs.$month` would work too here
$json.PSKs.PSObject.Properties[$month].Value = $pass
$json | ConvertTo-Json | Set-Content path\to\json.txt

如何使用随机生成的密码更新所有属性,为此,您需要弄清楚要使用什么逻辑来生成随机密码。一个非常简单的方法是通过

RandomNumberGenerator.GetString(ReadOnlySpan<Char>, Int32)
Method 但此方法仅适用于 PowerShell 7。

# `$chars` can be whatever you like, this is just an example
$chars = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz!@#$%&_-+='.ToCharArray()
$json = Get-Content path\to\json.txt -Raw | ConvertFrom-Json
$json.PSKs.PSObject.Properties | ForEach-Object {
    # `20` is for the string length
    $_.Value = [System.Security.Cryptography.RandomNumberGenerator]::GetString($chars, 20)
}
$json | ConvertTo-Json | Set-Content path\to\json.txt
© www.soinside.com 2019 - 2024. All rights reserved.