2013-02-12 89 views
1

發現這種情況只需幾個cmdlet(例如Write-Host,Read-Host)。只是想知道如何解決它。將cmdlet設置爲變量而不立即調用該變量

例如,我有一個格式化的寫主機字符串,我想設置爲一個變量。但是一旦定義它就會調用該變量。似乎避免它的唯一方法是創建一個函數,這似乎是過度殺傷。

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! 

回答

3

你並不真的需要一個功能。一個簡單的腳本塊就可以了:

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

的你可以調用腳本塊:

&$direct 
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! 

這不是矯枉過正。寫主機不會「返回」任何東西 - 它只是寫輸出。你會注意到你的變量實際上是空的。