在变量中包含写入主机

时间:2019-02-14 13:29:23

标签: powershell

我将写主机存储为多行变量

所以我想包含下面的write-host部分,以便从本质上将其复制并粘贴到循环的开头,以更新某些参数。

该脚本是检查文件并查看文件中有多少行,然后在每行上执行一个功能,我想向用户更新进度,但是在循环过程中我却想更新进度。简单的进度栏。

但是我无法这样做,所以我创建了一个变量来存储此信息并相应地进行更新。〜

该变量仅包含我要更新的信息,请参见代码。

我尝试了以下方法;

用括号括起来, 使用更改为新行, 将语句括在()中。

$56 = (Write-Host "This is a test" -foregroundcolor green),
(Write-host "Same Test only bigger"-foregroundcolor red) , 
"No!",
"I am King" $King ++
#$56

输出为

This is a test
Same Test only bigger

我希望它仅在使用变量$ 56时显示,因为您可以看到它拉出了没有该变量的写主机。

2 个答案:

答案 0 :(得分:0)

我仍然认为函数可以做到这一点:

function Output {

param([int]$lineNumber)

switch ($lineNumber) {

    1 {Write-Host "This is a test" -foregroundcolor green}
    2 {Write-host "Same Test only bigger"-foregroundcolor red}
    3 {"No!"}
    4 {"I am King"}
}

}

PS H:\> Output 1
This is a test

PS H:\> Output 4
I am King

我不知道King在这里,但是如果您想将其用作增量,则可以执行以下操作:

PS H:\> $King = 1

PS H:\> Output $King
This is a test

PS H:\> $King++

PS H:\> output $King
Same Test only bigger

答案 1 :(得分:0)

Write-Host不会将其输出作为对象返回;它绕过管道直接进入控制台,有效地“返回”了一个空字符串。因此,您无法将Write-Host的结果保存在变量中。

但是,您可以将脚本块保存在变量中,脚本块变量中的任何语句的执行都将延迟执行,直到使用&表达式(例如,

)调用该变量为止。
$fifty-six = { Write-Host "This is a test" -foregroundcolor green }
& $fifty-six

但是,您应该仔细考虑您的目标是什么,以及是否可能没有更好的做事方法。如果您有兴趣跟踪功能的进度,并且正在使用PowerShell 3.0或更高版本,则可以改用Write-Progress