如何在Powershell Write-Host语句中调用函数

Nea*_*ers 7 powershell

$BizTalkHelper = "d:\Scripts\BizTalkHelper.ps1"
.$BizTalkHelper # "dot source" the helper library.
Write-Host *** BEGIN ***

Write-Host $(Get-Date) " Desc:" {GetHostStateDesc 1 }
Write-Host $(Get-Date) " Desc:" GetHostStateDesc 2 

$result = GetHostStateDesc 1 
Write-Host $result 
Run Code Online (Sandbox Code Playgroud)

我的函数打印"你好",除了一个switch语句将1翻译为'Stopped',2翻译为'Start Pending',4翻译为'Running'等等...所以我知道它在前两个案例中没有被调用.

结果:

*** BEGIN *** 
3/29/2013 11:03:34 AM  Desc: GetHostStateDesc 1 
3/29/2013 11:03:34 AM  Desc: GetHostStateDesc 2 
hello 
Function GetHostStateDesc  1 
Stopped
Run Code Online (Sandbox Code Playgroud)

mjo*_*nor 9

试试这个:

function SayHello {'Hello'}
write-host $(SayHello)
Run Code Online (Sandbox Code Playgroud)

这打印:

Hello
Run Code Online (Sandbox Code Playgroud)

  • 也没有子表达式`write-host(SayHello)` (2认同)

Nea*_*ers 5

看起来是这样的:

Write-Host $(Get-Date) " Desc:" $(GetHostStateDesc 1 )
Run Code Online (Sandbox Code Playgroud)

我注意到了$()周围的语法Get-Date,所以如果它是一个函数,我猜它会在我的函数上工作并且确实如此。