我将写主机存储为多行变量
所以我想包含下面的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时显示,因为您可以看到它拉出了没有该变量的写主机。
答案 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
。