如果我在名为与文件相同的文件中只有一个函数,这可能吗?我似乎记得以前读过它。像这样:
hello.ps1
function hello {
Write-Host 'Hello, world'
}
答案 0 :(得分:6)
我会完全摆脱函数调用。您根本不会丢失命名参数和cmdlet包装。所以这个:
function Hello
{
[CmdletBinding()]
param(
[Parameter(Mandatory=$true)]
$Message
)
Write-Host "Hello, $Message!"
}
变为:
[CmdletBinding()]
param(
[Parameter(Mandatory=$true)]
$Message
)
Write-Host "Hello, $Message!"
你可以这样:
> .hello.ps1 "World"
答案 1 :(得分:5)
默认情况下,函数hello只能在脚本范围访问,除非您点源脚本。这意味着,一旦脚本退出,它就不再可见。如果您希望在没有点源的情况下在hello.ps1之外使用它,您可以在全局范围内声明该函数:
function global:hello {
Write-Host 'Hello, world'
}
然后你可以执行脚本然后调用函数:
PS C:\temp> .\hello.ps1
PS C:\temp> hello
Hello, world
有关powershell范围的更多信息,check out the help。
如果你想在函数execute中使用代码,只是不要通过函数声明来包围它。在hello.ps1
:
Write-Host 'Hello, world'
然后打电话给它:
PS C:\temp> .\hello.ps1
Hello, world