我试图拆分一个here-strings值,以便在invoke-command中使用,但它在数组中抛出了一个似乎为空的项。当试图在其他命令(如invoke-command)中使用时,这似乎会导致错误
invoke-command
$csv = @" computer1, computer2 "@ $csv.Split(',')
输出:
computer1, computer2
vs3odd8k1#
从.Split()调用产生的数组元素中删除周围的空格,其中包括第二个元素之前的换行符:
.Split()
$csv.Split(',').Trim() # -> @('computer1', 'computer2')
请注意,由于PowerShell的member-access enumeration,.Trim()方法调用被应用于.Split()调用产生的数组的 * 每个元素 *。数组中似乎为空的项不,这里没有空项,但是computer1,后面的 * 换行符 * 在第二个结果数组元素中 * 包含 *,因为你只按,拆分。请注意,在简单的情况下,令牌本身不包含空格,您可以简单地省略,分隔符并使用-split运算符的一元形式:
.Trim()
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()删除)。
$csv -split '\r?\n'
($csv -split '\r?\n').Trim()
1条答案
按热度按时间vs3odd8k1#
从
.Split()
调用产生的数组元素中删除周围的空格,其中包括第二个元素之前的换行符:请注意,由于PowerShell的member-access enumeration,
.Trim()
方法调用被应用于.Split()
调用产生的数组的 * 每个元素 *。数组中似乎为空的项
不,这里没有空项,但是
computer1,
后面的 * 换行符 * 在第二个结果数组元素中 * 包含 *,因为你只按,
拆分。请注意,在简单的情况下,令牌本身不包含空格,您可以简单地省略
,
分隔符并使用-split
运算符的一元形式:使用
$csv -split '\r?\n'
仅按换行符拆分(保留行内空白,可以使用($csv -split '\r?\n').Trim()
删除)。