Powershell如何与args连接

Powershell how to concatenate with args

我只想与 args 字符串连接,但如果 args 是 app,我在 $test 中得到 -System.Object[] 而不是“testapp”:

 function test {
   Write-Host $args;
   $test = -join("test",$args.ToString());
   Write-Host $test;
 }

最简单的方法是使用 string interpolation:

function test {
    Write-Host $args
    $test = "test$args"
    Write-Host $test
}

test app

输出:

app
testapp

默认情况下,字符串插值使用 space 字符连接数组值。

要指定自定义分隔符字符串,请像这样使用 -join 运算符:

function test {
    Write-Host $args
    $argsJoined = $args -join ', '
    $test = "test $argsJoined"
    Write-Host $test
}

test 4 8 15

输出:

4 8 15
test 4, 8, 15

至于你试过的:

$test = -join("test",$args.ToString());

$args是一个数组,其ToString()方法只是returns数组的类型名称。

作为 Theo pointed out in his helpful ,您可以通过使用数组连接来完成这项工作:

$test = -join(@("test") + $args)

array sub-expression operator @ 确保 + 运算符应用于数组,而不是字符串 "test".

稍短的变体:

$test = -join @("test"; $args)

注意使用 ;$args 变成 sub-expression,这实际上 展开它。

在这两种情况下,-join 运算符的参数都是一个新数组,它是 "test"$args 数组元素的组合。