gpt4 book ai didi

arrays - Powershell读取/更新/写入参数文件

转载 作者:行者123 更新时间:2023-12-03 00:02:57 24 4
gpt4 key购买 nike

一些文本文件(pfile.ora)的一部分如下所示:

fubar.__db_cache_size=1040187392
fubar.__pga_aggregate_target=1291845632
*.audit_file_dest='C:\app\oracle\admin\fubar\adump'
*.db_recovery_file_dest='\\nas3\backup\SRV07\fast_recovery_area\fubar'
*.db_recovery_file_dest_size=42949672960
*.dispatchers='(PROTOCOL=TCP) (SERVICE=fubarXDB)'

在该文件中,需要更新1个参数。我在某处找到了此功能来读取和解析文件:
function Parse-IniFile ($file) {
$ini = @{}
switch -regex -file $file {
"^\s*([^#].+?)\s*=\s*(.*)" {
$name,$value = $matches[1..2]
$ini[$name] = $value.trim()
}
}
$ini
}

结果存储在$ aLines变量中:
$aLines = Parse-IniFile ('pfile.ora');

更新参数后:
$aLines.'*.db_recovery_file_dest' = "'\\nas4\backup\SRV07\fast_recovery_area\fubar'";

...显示$ aLines的内容将导致:
Name                              Value
---- -----
*.db_recovery_file_dest '\\nas3\backup\SRV07\fast_recovery_area\fubar'
fubar.__db_cache_size 1040187392
fubar.__pga_aggregate_target 1291845632
*.audit_file_dest 'C:\app\oracle\admin\fubar\adump'
etc...

元素都是完全无序的!我需要他们按原样订购。后:
$sOut = "";
foreach($oLine in $aLines.GetEnumerator() ) {
$sOut += $oLine.name + "=" + $oLine.value +"`r`n";
}

并将$ sOut写入文件,则行不再位于其原始位置。

长话短说,一个简单的问题:如何仍能轻松更改其中一个参数,如何将结果恢复原状?

任何帮助将不胜感激!

最佳答案

由于您要做的只是修改一行,因此我将完全删除该函数,然后简单地执行以下操作:

$file     = '.\pfile.ora'
$key = [regex]::Escape('*.db_recovery_file_dest')
$newValue = '\\nas4\backup\SRV07\fast_recovery_area\fubar'

(Get-Content $file) -replace "($key=).*","`$1$newValue" | Out-File $file

关于arrays - Powershell读取/更新/写入参数文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18622431/

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