使用几个cmdlet(例如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!
答案 0 :(得分:3)
你真的不需要一个功能。一个简单的脚本块可以:
$direct = {Write-Host "So am I!" -BackgroundColor DarkBlue -ForegroundColor Cyan}
您可以调用scriptblock:
&$direct
答案 1 :(得分: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不会“返回”任何东西 - 它只是写输出。您会注意到您的变量实际上是空的。