gpt4 book ai didi

powershell - 替换配置文件中的变量

转载 作者:行者123 更新时间:2023-12-03 00:08:18 25 4
gpt4 key购买 nike

我正在尝试编写代码来检查配置文件是否包含某些用户参数,如果不将它们添加到文件中。我觉得我的代码在很多层面上都是错误的,而且我没有想法。

$s1 = 'a'
$s2 = 'b'
$s3 = 'c'
$s4 = 'd'
$s5 = 'e'
$s6 = 'f'
$s7 = 'g'
$s8 = 'h'
$scripts = $s1, $s2, $s3, $s4, $s5, $s6, $s7, $s8

foreach ($element in $scripts) {
if ("(UserParameter=$element)" -notmatch $config) {
Get-Content $File $element -replace '^(UserParameter=)',"`$1$($element)"
} else {
Add-Content $File "UserParameter=$element"
}

我不完全知道如何确保会有类似的东西:
UserParameter=aUserParameter=b...UserParameter=h

Edit:

Config I currently havehttps://pastebin.com/BdwH53QZ

State of config I want to attain:https://pastebin.com/6f0xe2k3

Added new lines at the end of the file.

UserParameter=windowsdisk.discovery, powershell -NoProfile -File discover_PerfMon_PhysicalDisk.ps1
UserParameter=vfs.fs.partition.label[*], powershell -NoProfile -File get_volume_label.ps1 $1
UserParameter=psh.rds.empty.session.detect, powershell -NoProfile -File rds_empty_session_detect.ps1
UserParameter=psh.pki.rootca.thumb.count[*], powershell -NoProfile -Command "(Get-ChildItem Cert:\LocalMachine\Root\$1 -ErrorAction SilentlyContinue).Count"

最佳答案

由于您的 UserParameters 非常复杂,并且将它们与文件进行比较会失败,甚至在空白处有细微的差异,我怀疑您的方法是否有效。

如果给定的 UserParameter 已经存在,我建议找到一些正则表达式来过滤。

如果您选择 PowerShell,则不可避免地要学习这种脚本语言或委托(delegate)给其他人。

您可以尝试以下方法:

## Q:\Test\2019\04\24\SO_55827904.ps1
$UserParameters = @"
UserParameter=windowsdisk.discovery, powershell -NoProfile -File discover_PerfMon_PhysicalDisk.ps1
UserParameter=vfs.fs.partition.label[*], powershell -NoProfile -File get_volume_label.ps1 $1
UserParameter=psh.rds.empty.session.detect, powershell -NoProfile -File rds_empty_session_detect.ps1
UserParameter=psh.pki.rootca.thumb.count[*], powershell -NoProfile -Command "(Get-ChildItem Cert:\LocalMachine\Root\$1 -ErrorAction SilentlyContinue).Count"
"@ -split '\r?\n'

ForEach ($File in (Get-ChildItem -Path X:\path -Filter *zabbix_agent.conf)){
$FileContent = Get-Content $File -raw
ForEach ($UserParam in $UserParameters){
if($FileContent -notmatch [RegEx]::Escape($UserParam)){
Add-Content -Path $File.FullName -Value $UserParam
}
}
}

你必须适应 -Path-Filter到你的环境。

关于powershell - 替换配置文件中的变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55827904/

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