Powershell 如何在不使用表或过多空间的情况下以列显示输出?
我想在脚本运行时更新脚本输出状态。这是一个简单的脚本,可以在无人值守的情况下安装基本的东西(遗憾的是没有完全无人值守) 下面你看到的就是我一直在做的事情。我希望这是非常人性化的可读性,因为我可能不是唯一一个会使用这个脚本的人 我想显示两列。一个写着消息说发生了什么,另一个写着它的用途 我不相信表会起作用,因为我希望它能够单独输出每一行,以防一行实际失败而导致脚本崩溃,或者类似的情况。据我所知,表是一次性输出的 目前,我使用的字符串带有多余的空格。这是可行的,但我觉得必须有一个更优雅的方式来做到这一点。这是一种方法,我可以给某个东西输入一串字符串,找到最长字符串的长度,并添加所有必要的空格,使它们具有相同的长度 当前变量Powershell 如何在不使用表或过多空间的情况下以列显示输出?,powershell,Powershell,我想在脚本运行时更新脚本输出状态。这是一个简单的脚本,可以在无人值守的情况下安装基本的东西(遗憾的是没有完全无人值守) 下面你看到的就是我一直在做的事情。我希望这是非常人性化的可读性,因为我可能不是唯一一个会使用这个脚本的人 我想显示两列。一个写着消息说发生了什么,另一个写着它的用途 我不相信表会起作用,因为我希望它能够单独输出每一行,以防一行实际失败而导致脚本崩溃,或者类似的情况。据我所知,表是一次性输出的 目前,我使用的字符串带有多余的空格。这是可行的,但我觉得必须有一个更优雅的方式来做到这
$ready=“已安装”
$Installing=“Installing”
$Installed=“已安装”
$Run=“Run”
$Warning=“Warning”
$Failed=“失败”
$NotFound=“未找到”
$SWhatIf=“WhatIf”
所需输出
写入主机“${Installing}Google Chrome”
安装谷歌浏览器
写入主机“${ready}Adobe Reader”
已安装Adobe Reader
写入主机“${Run}7-Zip”
运行7-Zip
您可以选择创建哈希表而不是单个变量,并将所有值设置为相同长度。大概是这样的:
$actions = @{
Already = "Already Installed"
Installing = "Installing"
Installed = "Installed"
Run = "Run"
Warning = "WARNING"
Failed = "FAILED"
NotFound = "NOT FOUND"
WhatIf = "WhatIf"
}
# get the length of the longest value
$longest = ($actions.Values | Measure-Object -Property Length -Maximum).Maximum
# next update the values of the hashtable so all get the same length
foreach($key in $($actions.keys)){
$actions[$key] = ($actions[$key]).PadRight($longest, ' ')
}
然后使用$actions
散列,如下所示:
Write-Host "$($actions['Installing']): Google Chrome"
Write-Host "$($actions['Already']): Adobe Reader"
Write-Host "$($actions['Run']): 7-Zip"
输出:
这似乎正是我所希望的。它单独输出,所以中断不会干扰写入主机,并保持其一致性。谢谢:D
Installing : Google Chrome
Already Installed: Adobe Reader
Run : 7-Zip