Я нашел еще одно обсуждение этого вопроса, в котором было множество различных вариантов, но большинство из них, похоже, не работало для меня или для оригинального плаката. Однако я нашел пример, подтверждающий работу, однако я борюсь за то, чтобы заставить его работать и надеяться на помощь.Сценарий для замены строки, содержащей текст
Мне нужно найти строку, которая начинается с «ServerName =», и заменить ее на мою собственную строку. Я использовал пример, который был найден и изменил его, но я получаю ошибки при его использовании.
PowerShell Command:
powershell -Command "(Get-Content 'KFGame\Config\PCServer-KFGame.ini') | Foreach-Object {$_ -replace '^ServerName.$', ('ServerName=Network BUF 12345 Normal')} | Set-Content 'KFGame\Config\PCServer-KFGame.ini'"
Сообщение об ошибке:
) было неожиданным в это время
Я не могу воспроизвести вашу проблему, но в качестве первого шага вы можете хотите удалить большую часть круглых скобок в этой строке. Требуются только внешние скобки вокруг 'Get-Content'. Кроме того, ошибка может быть вызвана кодом до этой строки. –
Я обновил исходное сообщение, я понял, что моя первая проблема запускала его с летучей мыши, не добавляя к нему «powershell -Command». Однако при обновлении он теперь сообщает, что «Foreach-Object» не распознается как внутренний/внешний командный, программный или командный файл, поэтому я подозреваю, что он все еще не работает как powershell. –
Труба обрабатывается CMD, а не PowerShell. Чтобы исключить необходимость включения всего кода PowerShell в кавычки или (еще лучше) в сценарий, который вы запускаете через параметр '-File'. –