我浏览过这个网站和 Stack Overflow,试图找到一个可行的组合。我不确定是 PowerShell 的版本还是什么。但我无法让这个脚本按我想要的方式工作。我也无法让其他脚本工作。我希望脚本在文件中查找字符串并删除该行而不留下空行。目前这有效,但它会留下不在字符串中的任何文本,并且还会留下回车符。
$Whitelist = @(
String1
String2
String3
)
$Path = .\whitelist.txt
$Content = Get-Content .\output.log
foreach ($Code in $whitelist)
{
$Content = $Content -replace $Code,""
}
$Content | Set-Content -Path .\output.log
我不确定变量为什么不起作用。我不断收到错误,提示需要参数或找不到路径。我希望它看起来像这样,并理解我的错误,因为我试图根据相同的原则编写脚本
$Whitelist = @(
String1
String2
String3
)
$Path = .\whitelist.txt
$Content = Get-Content -Path $Path
foreach ($Code in $whitelist)
{
$Content = $Content -replace $Code,""
}
$Content | Set-Content -Path $Path
答案1
$Content
我认为您的问题是数组中变量的使用。我嘲笑以下内容:
源文件内容:
培根吐司香肠鸡蛋番茄酱豆类
去除培根、鸡蛋和豆子的有效代码(抱歉我刚吃过早餐):
$Whitelist = @(
"Bacon"
"Eggs"
"Beans"
)
ForEach ($Code in $Whitelist)
{
(Get-Content -Path C:\temp\data.txt).Replace($Code,'') | Set-Content C:\temp\data.txt
Write-Host "Removing $Code" -ForegroundColor Green
}
我添加了 Write-Host 来确认每个字符串值都被删除了。
更新的源文件:
烤面包香肠番茄酱