Очень новая для Powershell (и программирования в целом), поэтому, пожалуйста, несите меня. Недавно я создал скрипт, который позволит пользователю изменять имена систем в файле резервной копии, а затем создавать новый .txt с новыми настройками. Проблема, с которой я столкнулся, заключается в том, что сценарий работает только для систем, которые следуют нашему соглашению об именах - новые системы или неправильно названные системы приводят к сбою сценария, поскольку он ищет имя, которое еще не существует. Это то, что я до сих пор:Powershell: Замена значений в .txt
$name = Read-Host 'What is the system name?'
$currentdate = Get-Date -Format "MM_DD_YY_HH_MM_SS"
if ($name -notlike "Sample*")
{
Read-Host 'Please begin naming conventions with "Sample".'
}
else {
(Get-Content C:\Test_Backup.txt)|
Foreach-Object {$_-replace 'Sample[a-z , 0-9]*' , $name}|
Out-file C:\Test_Success.txt}
Так, например, при открытии файла резервной копии новой/неправильной системы и искать имя системы, это выглядит как NAME: «Wrongname123.» Скрипт не находит «Sample *» в файле, поэтому ничего не происходит. Я бы хотел изменить сценарий для работы с новыми/неправильно названными системами, заменив любое имя, которое появляется в цитатах, на правильное имя пользователя. Я даже не уверен, что это возможно, и я пока не смог найти ответ через поиск Google, который, я думаю, потому, что мне сложно объяснить, что я хочу делать. Я бы очень признателен за любую помощь, которую я могу получить.
EDIT:
Что я делаю это создание резервных копий системных настроек в .txt. При открытии файла резервной копии, это выглядит примерно так:
ИМЯ: "System1" ОБЪЕМ: "30" INPUT: "RGB" и т.д ...
Что я сделал это создать «главный» файл резервной копии, чтобы пользователи могли быстро загрузить файл в новую систему без необходимости вручную вводить все необходимые настройки. Единственная проблема заключается в том, что пользователь должен изменить имя при загрузке в новую систему (каждая система имеет уникальное имя). Мой пример файла резервной копии чрезвычайно упрощен - в файле много информации, поэтому нелегко войти и вручную изменить это. Когда я запускаю скрипт, он предлагает пользователю ввести имя для системы, которую они настраивают. Поэтому, если система в настоящее время называется «Sample6», и пользователь хочет изменить ее на «Sample7», проблем нет. Однако, если система называется «Wrongname1», сценарий не будет работать, потому что он ищет соглашение об именах «Sample». Так что я пытаюсь выяснить, как я могу заставить скрипт искать NAME: «[любое значение здесь]», а затем изменить любые значения, содержащиеся в цитатах. Надеюсь, это имеет смысл.
i, как новичок, старайтесь держаться подальше от регулярных выражений, особенно в этой форме. от того, что я собираю, у вас могут возникнуть проблемы с потоком/привязкой. Во-вторых, похоже, что «Образец» - это желаемый шаблон, но затем вы его заменяете? :) Куда вы отправляете пример или два из двух хороших и плохих строк? –
Привет Jaqueline, спасибо, что ответили. Я обновил свое оригинальное сообщение - я надеюсь, что теперь это будет немного больше! – Blake
ну, а почему вы просто не читали системное имя, а если его «плохо» либо меняли, либо записывали? Кроме того, вы можете подумать о том, чтобы использовать другой текстовый формат файла - JSON или psd1 кажутся подходящими для такой задачи, а также xml, но это будет немного излишним, и работать с –