PowerShell (Get-Content -Path "Config.txt" -TotalCount ($aVariable + 2)[-1]) 获取 2 行而不是一行
PowerShell (Get-Content -Path "Config.txt" -TotalCount ($aVariable + 2)[-1]) gets 2 lines instead of one
首先很抱歉我不知道如何提出这个问题。
我目前正在开发一个 PowerShell 脚本,该脚本应该读入一个 config.txt 文件来配置稍后在脚本中使用的变量。
我现在遇到的问题是一行代码看起来像:
$Var1 = Get-Content -Path "Config.txt" -TotalCount ($LineCounterVar + 2)[-1]
我重命名了变量,所以我不必解释整个上下文
现在为了解释我认为它应该做什么,我将举一个我用来测试它的具体例子:
假设 $LineCounterVar 的值为 '1'。然后我以为它只会获取2这一行的内容,并将其填充到变量$Var1中。这应该是命令末尾 [-1] 的情况,据我从互联网研究中了解到 仅指示获取最后一行的内容。那是在获取所有内容之后,直到第 $LineCounterVar + 2 行,参数为 -TotalCount.
我的问题是……没有。该行获取第一行和第二行的内容并从中提取一行。例如,如果我的 Config.txt 看起来像这样:
1.
XdhXX-XzuXX-XznXX-casXX-XX56X
Admin
Computername
J
(无所谓是什么意思)
那么 $Var1 的输出如下所示:
- XdhXX-XzuXX-XznXX-casXX-XX56X
但我对剧本的看法不应该是这样。它实际上应该输出:
XdhXX-XzuXX-XznXX-casXX-XX56X
我还有一些类似的代码行,例如:
$Var2 = (Get-Content -Path "Config.txt" -TotalCount ($LineCounterVar + 3))[-1]
$Var3 = (Get-Content -Path "Config.txt" -TotalCount ($LineCounterVar + 4))[-1]
$Var4 = (Get-Content -Path "Config.txt" -TotalCount ($LineCounterVar + 5))[-1]
虽然这些都工作正常。他们只得到他们应该得到的行的内容。
有人可以帮我吗and/or 向我解释为什么它不能按我想要的那样工作?
这个
$Var1 = Get-Content -Path "Config.txt" -TotalCount ($LineCounterVar + 2)[-1]
最终与此相同,因为总和只是 1 的数组。
$Var1 = Get-Content -Path "Config.txt" -TotalCount ($LineCounterVar + 2)
我不知道你为什么不把额外的括号放在底部:
$Var1 = (Get-Content -Path "Config.txt" -TotalCount ($LineCounterVar + 2))[-1]
如果您甚至需要额外的变量,这可能是一种更简单的方法。
$file = get-content config.txt
$var1 = $file[1] # second line
$var2 = $file[2]
$var3 = $file[3]
$var4 = $file[4]
或
$var1,$var2,$var3,$var4 = $file[1..4]
现在介绍一个陌生的方法:
switch (get-content config.txt) {
{ $_.readcount -eq 2 } { $var1 = $_ }
{ $_.readcount -eq 3 } { $var2 = $_ }
{ $_.readcount -eq 4 } { $var3 = $_ }
{ $_.readcount -eq 5 } { $var4 = $_ }
}
甚至
get-content config.txt | set-variable -name {'var' + ($_.readcount - 1) }
get-childitem variable:var*
Name Value
---- -----
var0 1.
var1 XdhXX-XzuXX-XznXX-casXX-XX56X
var2 Admin
var3 Computername
var4 J
首先很抱歉我不知道如何提出这个问题。
我目前正在开发一个 PowerShell 脚本,该脚本应该读入一个 config.txt 文件来配置稍后在脚本中使用的变量。
我现在遇到的问题是一行代码看起来像:
$Var1 = Get-Content -Path "Config.txt" -TotalCount ($LineCounterVar + 2)[-1]
我重命名了变量,所以我不必解释整个上下文
现在为了解释我认为它应该做什么,我将举一个我用来测试它的具体例子:
假设 $LineCounterVar 的值为 '1'。然后我以为它只会获取2这一行的内容,并将其填充到变量$Var1中。这应该是命令末尾 [-1] 的情况,据我从互联网研究中了解到 仅指示获取最后一行的内容。那是在获取所有内容之后,直到第 $LineCounterVar + 2 行,参数为 -TotalCount.
我的问题是……没有。该行获取第一行和第二行的内容并从中提取一行。例如,如果我的 Config.txt 看起来像这样:
1.
XdhXX-XzuXX-XznXX-casXX-XX56X
Admin
Computername
J
(无所谓是什么意思)
那么 $Var1 的输出如下所示:
- XdhXX-XzuXX-XznXX-casXX-XX56X
但我对剧本的看法不应该是这样。它实际上应该输出:
XdhXX-XzuXX-XznXX-casXX-XX56X
我还有一些类似的代码行,例如:
$Var2 = (Get-Content -Path "Config.txt" -TotalCount ($LineCounterVar + 3))[-1]
$Var3 = (Get-Content -Path "Config.txt" -TotalCount ($LineCounterVar + 4))[-1]
$Var4 = (Get-Content -Path "Config.txt" -TotalCount ($LineCounterVar + 5))[-1]
虽然这些都工作正常。他们只得到他们应该得到的行的内容。
有人可以帮我吗and/or 向我解释为什么它不能按我想要的那样工作?
这个
$Var1 = Get-Content -Path "Config.txt" -TotalCount ($LineCounterVar + 2)[-1]
最终与此相同,因为总和只是 1 的数组。
$Var1 = Get-Content -Path "Config.txt" -TotalCount ($LineCounterVar + 2)
我不知道你为什么不把额外的括号放在底部:
$Var1 = (Get-Content -Path "Config.txt" -TotalCount ($LineCounterVar + 2))[-1]
如果您甚至需要额外的变量,这可能是一种更简单的方法。
$file = get-content config.txt
$var1 = $file[1] # second line
$var2 = $file[2]
$var3 = $file[3]
$var4 = $file[4]
或
$var1,$var2,$var3,$var4 = $file[1..4]
现在介绍一个陌生的方法:
switch (get-content config.txt) {
{ $_.readcount -eq 2 } { $var1 = $_ }
{ $_.readcount -eq 3 } { $var2 = $_ }
{ $_.readcount -eq 4 } { $var3 = $_ }
{ $_.readcount -eq 5 } { $var4 = $_ }
}
甚至
get-content config.txt | set-variable -name {'var' + ($_.readcount - 1) }
get-childitem variable:var*
Name Value
---- -----
var0 1.
var1 XdhXX-XzuXX-XznXX-casXX-XX56X
var2 Admin
var3 Computername
var4 J