求助: 如何修改文件中指定位置的数据并重定向到文件中


PowerShell交流中心分类: Powershell基础求助: 如何修改文件中指定位置的数据并重定向到文件中
0
pendulum asked 6 年 ago

Hi All,

最近我在编写一个batch 脚本. 脚本受一个schedule文件控制并执行一些health check和自动化部署的操作, schedule文件内容如下:

#Server;Services;ContentPath;Status(Ready,Done,Disabled)
server1;service1;c:\temp,c:\test;Ready
server2;service3;c:\temp,c:\test;Ready

脚本在batch前会对服务器进行一些health check , 参数逐行按照上述内容进行获取. 如果失败则将服务器所在行最后的status 由‘Ready’ 改为 Disabled并写入到文件中, 具体逻辑如下:

$PlayBook = 'C:\temp\playbook.txt'
$server = 'server1'
Get-Content -Path $PlayBook | foreach {
if ($_ -match $server){
$_.replace("Ready","Disable")
#$_ 
}
} | Set-Content $PlayBook -Force

然而,最后schedule文件中的所有内容被符合条件的行数据所覆盖。 🙁

 

请问各位有什么方法可以实现这个么?

 

 

 

 

 

 

1 Answers
0
Best Answer
pendulum answered 6 年 ago

粗心忘了添加非条件内容,最后一并写入到源文件中。
$PlayBook 'C:\temp\playbook.txt'
(Get-Content -Path $PlayBook) | foreach {
if ($_ -match ‘RCCNTI002294’){
$_.replace(“Ready”,”Disable”)
}
else {
$_
}
} | Set-Content $PlayBook