1

これは、いくつかのコマンドレット (Write-Host、Read-Host など) の場合に当てはまります。それを回避する方法を考えているだけです。

たとえば、変数に設定したい書式設定された Write-Host 文字列があります。ただし、変数が定義されるとすぐに変数を呼び出します。それを回避する唯一の方法は、やり過ぎのように見える関数を作成することです。

function Test-WriteHost
{
    $inFunction = Write-Host "I'm in a variable!" -BackgroundColor DarkBlue -ForegroundColor Cyan
}

$direct = Write-Host "So am I!" -BackgroundColor DarkBlue -ForegroundColor Cyan

So am I!
4

2 に答える 2

3

関数は本当に必要ありません。単純なスクリプト ブロックで実行できます。

$direct = {Write-Host "So am I!" -BackgroundColor DarkBlue -ForegroundColor Cyan}

スクリプトブロックを呼び出すことができます:

&$direct
于 2013-02-12T02:37:19.167 に答える
1

ここで行う通常のことは、変数の代わりに関数を使用することです。

function FormattedWriteHost([string]$message)
{
    Write-Host $message -BackgroundColor DarkBlue -ForegroundColor Cyan
}

その後、この関数を自由に呼び出すことができます。

PS C:\> FormattedWriteHost "I'm in a function!"
I'm in a function!

これはやり過ぎではありません。write-host は何も「返さない」 - 出力を書き込むだけです。変数が実際には空であることに気付くでしょう。

于 2013-02-12T01:38:58.660 に答える