如何写出长度取决于用户条目长度的字符串?

Cas*_*ers 0 powershell if-statement count write-host

我正在编写一个具有大量输出的脚本,并且可以使用多个计算机名称.输出通知计算机名称,然后是有关该特定计算机的大量信息.我希望在#上面和下面有一系列s,它在每个信息部分之前宣布计算机名称,但是想知道我是否可以将#s的数量与提供的计算机名称的长度相同(s ).例如:

########
COMPNAME
########

要么

##############
LONGERCOMPNAME
##############

我宁愿不必为每种可能的情况都有一个if else,例如

if ($compname.length -eq "8") {
  Write-Host "########"
  Write-Host "$compname"
  Write-Host "########"
} elseif ($compname -eq "9") {
  Write-Host "#########"
  Write-Host "$compname"
  Write-Host "#########"
Run Code Online (Sandbox Code Playgroud)

等等.如果必须,我会,它只是那些左右的十个.或者我可以使用一定数量的#s,它们总是至少覆盖计算机名称的最大长度.

Kor*_*ill 6

你会喜欢PowerShell的这个功能.你可以"乘"一个字符串.

试试这个:

$sep = '@'

Write-Output ($sep*5)

$names = "Hello World", "me too", "goodbye"

$names | % {
Write-Output ($sep*($_.Length))
Write-Output $_
Write-Output ($sep*($_.Length))
}
Run Code Online (Sandbox Code Playgroud)

OUTPUT

@@@@@
@@@@@@@@@@@
Hello World
@@@@@@@@@@@
@@@@@@
me too
@@@@@@
@@@@@@@
goodbye
@@@@@@@
Run Code Online (Sandbox Code Playgroud)