ファイルと同じ名前のファイルに関数が1つしかない場合、これは可能ですか? 以前読んだ記憶があるようです。このようなもの:
こんにちは.ps1
function hello {
Write-Host 'Hello, world'
}
ファイルと同じ名前のファイルに関数が1つしかない場合、これは可能ですか? 以前読んだ記憶があるようです。このようなもの:
こんにちは.ps1
function hello {
Write-Host 'Hello, world'
}
関数呼び出しを完全に取り除きます。名前付きパラメーターとコマンドレットのラッピングはまったく失われません。したがって、この:
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"
デフォルトでは、スクリプトをドット ソース化しない限り、関数 hello はスクリプト スコープでのみアクセスできます。つまり、スクリプトが終了すると、それは表示されなくなります。ドット ソースを使用せずに hello.ps1 の外部で使用できるようにする場合は、関数をグローバル スコープで宣言できます。
function global:hello {
Write-Host 'Hello, world'
}
次に、スクリプトを実行して関数を呼び出すだけです。
PS C:\temp> .\hello.ps1
PS C:\temp> hello
Hello, world
PowerShell スコープの詳細については、ヘルプをご覧ください。
関数内のコードだけを実行したい場合は、関数宣言で囲まないでください。でhello.ps1
:
Write-Host 'Hello, world'
次に、それを呼び出します:
PS C:\temp> .\hello.ps1
Hello, world