在PowerShell 5.1中使用here-strings和split函数

svmlkihl  于 2023-03-23  发布在  Shell
关注(0)|答案(1)|浏览(138)

我试图拆分一个here-strings值,以便在invoke-command中使用,但它在数组中抛出了一个似乎为空的项。当试图在其他命令(如invoke-command)中使用时,这似乎会导致错误

$csv = @"
    computer1,
    computer2
"@
        
$csv.Split(',')

输出:

computer1,

computer2
vs3odd8k

vs3odd8k1#

.Split()调用产生的数组元素中删除周围的空格,其中包括第二个元素之前的换行符:

$csv.Split(',').Trim()  # -> @('computer1', 'computer2')

请注意,由于PowerShell的member-access enumeration.Trim()方法调用被应用于.Split()调用产生的数组的 * 每个元素 *。
数组中似乎为空的项
不,这里没有空项,但是computer1,后面的 * 换行符 * 在第二个结果数组元素中 * 包含 *,因为你只按,拆分。
请注意,在简单的情况下,令牌本身不包含空格,您可以简单地省略,分隔符并使用-split运算符的一元形式:

# No separators - each computer name on its own line.
$csv = @"
  computer1
  computer2
"@

# Unary -split splits by arbitrary runs of whitespace, and
# ignores leading and trailing whitespace.
-split $csv # -> @('computer1', 'computer2')

使用$csv -split '\r?\n'仅按换行符拆分(保留行内空白,可以使用($csv -split '\r?\n').Trim()删除)。

相关问题