终于让我的脚本按预期工作了。希望最后一个问题是我仅对网络驱动器具有读取权限。没关系,因为它在操作中是至关重要的地方。这使我想将输出写到本地文件夹,而不尝试删除原始文件。
$encoding = [System.Text.Encoding]::GetEncoding(1252)
$filter = 'M:\ALM.\*.alm'
$pattern = "ASE|MBE|MB1|Network interfaces|Handle|default collector|Proficy|Recovered|AlmODBC|Close Digital Point|DataBlock|Channel|Record|TESTBOOL|OK|OPC|Item|_COMMCHECK_|SYSTEM|ADMINISTRATOR|Unknown|ItemID|Field's|Connection|hutdown|acknowledged|Alarming|Suspended|primary|SAC|reloaded|Fix32|1601-01-01"
(Select-String -encoding $encoding -Path $filter -Pattern $pattern -NotMatch) |
ForEach-Object -Begin {Remove-Item $filter} -Process {
$_.line | Out-File -Append -Encoding $encoding $_.filename
}
我不了解如何制作此零件:{$_.line | Out-File -Append -Encoding $encoding $_.filename }
将结果附加到具有相同名称的新 local 文件中,并保留原始文件,以免被读取。和平!
更新:
我的问题是第二条评论帮助我解决了什么:在Out-File
调用中构造一条本地路径。我用$_.filename
取代了(Join-Path $LocalDir $_.filename)
,就做到了。
该脚本可以完美运行,但是仍然尝试删除(或只是编辑?)网络文件夹文件。使终端的每个文件都呈红色亮起。
更新:
更正了此问题,删除了整个-Begin {Remove-Item $filter}
部分。
-您所有的基地都属于我们