如何在不截断值的情况下使用Format-Table?

时间:2018-03-06 03:30:37

标签: powershell formatting powershell-v2.0

我目前有一个脚本可以ping服务器并检查每台服务器上运行的服务的状态。

我使用Out-File保存输出,但PowerShell放置省略号或" ..."经过长串。我不希望它这样做。例如:

MachineName  ServiceName              Status StartType
-----------  -----------              ------ ---------
SrvGtw01     Test.MyServiceName.Here  Stopped  Disabled

我希望它显示全名,如:

$FormatEnumerationLimit

我一直在阅读,您可以将-1偏好设置变量设置为<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>1.5.9.RELEASE</version> <relativePath /> <!-- lookup parent from repository --> </parent> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> <java.version>1.8</java.version> </properties> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> <exclusions> <exclusion> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-logging</artifactId> </exclusion> </exclusions> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-tomcat</artifactId> <scope>provided</scope> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-log4j2</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-jpa</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> <dependency> <groupId>com.h2database</groupId> <artifactId>h2</artifactId> <scope>runtime</scope> </dependency> </dependencies> ,我已经尝试过,但它无效。我不确定如何将它放在我的剧本中。

1 个答案:

答案 0 :(得分:4)

$FormatEnumerationLimit首选项变量不适用,因为其目的是确定要显示的集合值属性的元素数量(例如,$FormatEnumerationLimit = 2; [pscustomobject] @{ prop = 1, 2, 3 }打印(最多)来自.prop的值的2个元素,并提示存在更多...的元素;例如{1, 2...})。

相反,你必须:

  • (a)确保各列不会在显示屏上截断其值

    • 首先输入 Format-Table -Autosize
  • (b)确保整体输出宽度适合所有列

    • 使用足够大的值 Out-File -Width进行管道(不要使用[int]::MaxValue,因为表格输出的每一行都填充到宽度 [1]

    • 警告: 如果您没有明确设置-Width - 如果您刚刚使用>就会发生这种情况,例如 - 当前控制台窗口的宽度 - 无论发生什么情况。

例如:

# Assumes that the objects in $results only contain the properties
# of interest (MachineName, ServiceName, Status, StartType); you 
# can also pass an explicit list of output properties to Format-Table, however.
$results | Format-Table -AutoSize | Out-File -Width 512 C:\log.txt -Append

注意:要在控制台中预览输出 - 可能涉及换行 - 请使用
而是Out-String -Width 512

[1]在PowerShell Core 中,这个不受欢迎的最后一列填充已被删除,至少从v6.1.0开始。