получить содержимое после того, как строка найдена в текстовом файле (получить версию из файла) - PullRequest
0 голосов
/ 26 июня 2019

Я хочу получить строку версии, расположенную в другом файле powershell.В частности, я пытаюсь получить вторую часть строкового файла:

$releaseVersion = "1.0.1.254"

Я могу найти саму строку, загрузив возвращаемое значение Get-Content в переменную и используя .Contains(), но яКажется, не могу получить оставшиеся символы в этой строке.

  # === base === #
  $myVersion = Get-Content -Path 'C:\Temp\Start-NewDeviceSetup.ps1';
  $myVersion.Contains("$ReleaseVersion"); # returns true
  Select-String -InputObject $myVersion -Pattern '$releaseVersion' 
  # returns nothing

  # === other testing === #
  $a = Get-ChildItem -Path "C:\Temp\Start-NewDeviceSetup.ps1" | Select-String -Pattern '$releaseVersion'
  $a.Matches # also returns nothing
  $a.gettype(); # You cannot call a method on a null-valued expression

  # === other information === #
  $myVersion.GetType(); # System.Array
  $PSVersionTable.PSVersion # 5.1.17763.503

Нужно просто получить возвращение версии файла (строка).Он хранится в переменной, так как я также хочу, чтобы он отображался при каждом запуске скрипта, чтобы мне было проще определить, нужно ли обновлять людей.

Ответы [ 2 ]

0 голосов
/ 26 июня 2019

Если вы хотите прочитать значение из файла Powershell, лучше использовать точечный источник, чем чтение содержимого в виде текста. Как только вы поставите точечный источник файла powershell в вашем текущем скрипте, у вас будет доступ ко всем переменным, массивам, хеш-таблицам и т. Д.

. "C:\Temp\Start-NewDeviceSetup.ps1"
0 голосов
/ 26 июня 2019

Get-Content сохраняет каждую строку в индексе в массиве.Таким образом, вы можете выбрать местоположение $ReleaseVersion, найдя строку, в которой оно находится, а затем поместить индекс в $myVersion[].

  $myVersion = Get-Content -Path 'C:\Temp\Start-NewDeviceSetup.ps1';
  #You dont need this bool. $myVersion.Contains("$ReleaseVersion"); # returns true
  $myVersion = $myVersion[indexlocation of the value]
  $string = $myVersion -replace ""anything you may need to delete out", """

.Contains - это логический метод, он только определяет, является лиутверждение является истинным или ложным, так что это не нужно.Это не дает вам значение, потому что оно не хранит фактическое значение, которое вы ищете.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...