简单(可能是愚蠢的)问题.我是一个Powershell新手,我主要使用它来实例化托管库,所以当我需要使用它们的成员时,我不必编写小应用程序.其中一些库是旧的,并且具有长而痛苦的签名方法.在使用new-object实例化后使用get-member,我经常遇到令人沮丧的结果,如下所示:
PS> $object | get-member MethodWithLongSignature
TypeName: SomeLib.SomeObject
Name MemberType Definition
---- ---------- ----------
MethodWithLongSignature Method System.Void MethodWithLongSignature(string param1, int param2, string param3, string param4, stri....
Run Code Online (Sandbox Code Playgroud)
有没有办法包装get-member的结果?或者,是否有一个get-member开关,它将以一种不会包装的方式产生结果?
Hip*_*eck 18
表结构中的输出是自动格式化的,以适应屏幕的宽度,必要时在过程中截断长值.
将结果format-list传递给命令以获得结果的详细,垂直格式.
PS> $object | get-member MethodWithLongSignature | format-list
Run Code Online (Sandbox Code Playgroud)
小智 6
你也可以尝试一下Format-Table -wrap。例如:
(get-process -id 3104).startinfo.EnvironmentVariables | Format-Table -wrap
Run Code Online (Sandbox Code Playgroud)
Format-Table 有一个 -Wrap 开关来包装最后一列。由于 Get-Member 输出的最后一列已经很大,这将产生可读的结果。
另一个选项是 Format-Wide (但它不换行,因此您仅限于控制台宽度):
Get-Process | Get-Member | Format-Wide Definition -Column 1
Run Code Online (Sandbox Code Playgroud)
小智 5
我找不到允许自动换行到任意宽度的内置内容,所以我写了一个 - 有点冗长,但这里是:
function wrapText( $text, $width=80 )
{
$words = $text -split "\s+"
$col = 0
foreach ( $word in $words )
{
$col += $word.Length + 1
if ( $col -gt $width )
{
Write-Host ""
$col = $word.Length + 1
}
Write-Host -NoNewline "$word "
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
21387 次 |
| 最近记录: |