Считайте и запустите командлет Select-String в сетевой папке, запишите в локальную папку - PullRequest
0 голосов
/ 26 сентября 2018

Наконец-то у меня получается, что мой сценарий работает так, как задумано.Надеюсь, последняя проблема заключается в том, что у меня есть только доступ на чтение к сетевому диску.Это нормально, так как это довольно критичное место для работы. Вместо этого я хочу записать вывод в локальную папку, не пытаясь удалить исходные файлы.

$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 
    }

Что я не делаю подКак сделать эту часть: standart: {$_.line | Out-File -Append -Encoding $encoding $_.filename } добавьте результат к новым локальным файлам с тем же именем и оставьте оригинал отдельно от чтения.Мир!

Обновление: моя проблема заключалась в том, что мне помог решить второй комментарий: создать локальный путь как часть вызова Out-File.Я заменил $_.filename на (Join-Path $LocalDir $_.filename), и он это сделал.

Скрипт работает отлично, но все равно пытается удалить (или просто отредактировать?) Файлы сетевой папки.Заставить терминал светиться красным для каждого файла.

Обновление: исправлено это удаление всей части -Begin {Remove-Item $filter}.

- все ваши базы принадлежат нам

...