将字符串传入和传出函数

Gle*_*nch 2 powershell scope function

我是Powershell的新手,但我用Java和其他语言编程.

我试图将一个字符串传递给一个函数,然后让该函数返回该字符串.下面是我尝试运行的简单代码:

#funcpass.ps1
function test {
    Param([string]$input)

    $out = $input

    return $out
}

$a = test hello world
Write-Host $a
Run Code Online (Sandbox Code Playgroud)

我希望这会传递字符串,hello world然后将字符串返回$a到要打印的变量中.相反,我的控制台返回:

PS P:\test> .\funcpass.ps1

PS P:\test> 
Run Code Online (Sandbox Code Playgroud)

我遇到了某种范围错误吗?任何帮助将不胜感激.我不确定版本号是否有帮助,但这里是:

PS P:\test> $PSVersionTable.PSVersion

Major  Minor  Build  Revision
-----  -----  -----  --------
5      1      14393  1198
Run Code Online (Sandbox Code Playgroud)

sod*_*low 6

$input参数是保留的,因此您必须更改其名称.此外,如果您只想将一个字符串传递给该函数,则必须用引号将其括起来:

function Run-Test {
    Param([string]$inputValue)

    $out = $inputValue

    return $out
}

$a = Run-Test "hello world"

Write-Host $a
Run Code Online (Sandbox Code Playgroud)

FYI return关键字是可选的,但它会使您的意图更清晰,因为其他语言return用来表示从函数返回的内容.在函数内部的管道上发送的所有内容(如Write-Output)都将被返回.