我想获取位于另一个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
希望仅返回文件的版本(字符串)。 我将其存储在变量中,因为我也希望在脚本运行时将其显示,这样我可以更轻松地确定是否需要更新人员。
答案 0 :(得分:0)
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
是一个布尔方法,它仅条件该语句是true还是false,因此不需要。它没有给您带来价值,因为它没有存储您正在寻找的实际价值。
答案 1 :(得分:-1)
如果要从Powershell文件读取值,则最好使用点源,然后再将内容读取为文本。在您当前脚本中点源Powershell文件后,您将可以访问所有变量,数组,哈希表等。
. "C:\Temp\Start-NewDeviceSetup.ps1"