如何在Powershell中获取前导空格而不是零?

如何在Powershell中获取前导空格而不是零?,powershell,Powershell,在脚本的某个地方,我正在编写一个folderstructure来承载每个文件夹中的文件数[1]: $FolderName = "BAR" $ItemCount = "{0:000}" -f 7 Write-Host $ItemCount $FolderName 这将输出类似于[2]的内容: 007 BAR 044 BAZ 311 FOO 我真正想要的是[3]: 7 BAR 44 BAZ 311 FOO 我不想使用自定义Powershell对象,因为它会在控制台[4]的整个宽度上输

在脚本的某个地方,我正在编写一个folderstructure来承载每个文件夹中的文件数[1]:

$FolderName = "BAR"
$ItemCount  = "{0:000}" -f 7

Write-Host $ItemCount $FolderName
这将输出类似于[2]的内容:

007 BAR
044 BAZ
311 FOO
我真正想要的是[3]:

  7 BAR
 44 BAZ
311 FOO
我不想使用自定义Powershell对象,因为它会在控制台[4]的整个宽度上输出:

Folder                                                       Itemcount
------                                                       ---------
BAR                                                                  7
BAZ                                                                 44
FOO                                                                311
我想要一个像[5]这样的输出:

Folder   ItemCount
------   ---------
BAR              7
BAZ             44
FOO            311
如此紧密地结合在一起使得它更具可读性。但我选择了我的解决方案(FolderName的ItemCount)作为第二个最佳选项,因为我无法让它工作


如何获得[3]或[5]中的输出?

因此有几种方法可以实现这一点。这取决于你对最终结果做了什么。使用
-Format
参数的对齐选项(5处)

或者可能是字符串方法
.PadLeft()
。下面的两个示例应产生相同的输出。可读性可能会在第一阶段受到影响。请注意,
.PadLeft()
是一个字符串方法。在我的示例中,我使用的是
length
,即
int
,因此我们必须转换为string

"$(([string]($_.Length)).PadLeft(5)) $($_.Name)"
"{0} {1}" -f ([string]($_.Length)).PadLeft(5),$_.Name
现在。。。也许您只是想使用
格式表
实现屏幕上的漂亮输出。只需要以另一种方式使用我的第一个示例

gci c:\temp *.csv | Select-Object @{Name="Length";Expression={"{0,5}" -f $_.Length}}, Name | Format-Table -AutoSize

您只是在找
.PadLeft
?或
格式化表格
esque操作尝试
格式化表格
,使用
-自动调整大小
。它将产生类似[5]的结果。
gci c:\temp *.csv | Select-Object @{Name="Length";Expression={"{0,5}" -f $_.Length}}, Name | Format-Table -AutoSize
$ItemCount=($Count.ToString()).PadLeft(3)