在Powershell中打印对象属性
在交互式控制台中工作时,如果我定义一个新的对象,并像这样分配一些属性值:
$obj = New-Object System.String $obj | Add-Member NoteProperty SomeProperty "Test" 然后,当我将我的variables名称input到交互式窗口中时,Powershell会给出对象属性和值的摘要:
 PS C:\demo> $obj SomeProperty ------------ Test 
我基本上只想做这个,但是从一个脚本中的函数。 该函数创build一个对象并设置一些属性值,我希望它在返回之前将对象值的摘要打印到Powershell窗口。 我尝试使用函数内的写主机:
 Write-Host $obj 
但是这只是输出对象的types而不是总结:
 System.Object 
我怎样才能让我的函数输出对象的属性值的摘要到Powershell窗口?
尝试这个:
 Write-Host ($obj | Format-Table | Out-String) 
要么
 Write-Host ($obj | Format-List | Out-String) 
我对这个问题的解决scheme是使用$()子expression式块 。
 Add-Type -Language CSharp @" public class Thing{ public string Name; } "@; $x = New-Object Thing $x.Name = "Bill" Write-Output "My name is $($x.Name)" Write-Output "This won't work right: $x.Name" 
得到:
 My name is Bill This won't work right: Thing.Name 
在Powershell中打印出对象的属性和值。 下面的例子适合我。
$ pool = Get-Item“IIS:\ AppPools.NET v4.5”
$ pool | 获得会员
  TypeName: Microsoft.IIs.PowerShell.Framework.ConfigurationElement#system.applicationHost/applicationPools#add Name MemberType Definition ---- ---------- ---------- Recycle CodeMethod void Recycle() Start CodeMethod void Start() Stop CodeMethod void Stop() applicationPoolSid CodeProperty Microsoft.IIs.PowerShell.Framework.CodeProperty state CodeProperty Microsoft.IIs.PowerShell.Framework.CodeProperty ClearLocalData Method void ClearLocalData() Copy Method void Copy(Microsoft.IIs.PowerShell.Framework.ConfigurationElement ... Delete Method void Delete() ... 
$ pool | Select-Object -Property *#你可以省略-Property
 name : .NET v4.5 queueLength : 1000 autoStart : True enable32BitAppOnWin64 : False managedRuntimeVersion : v4.0 managedRuntimeLoader : webengine4.dll enableConfigurationOverride : True managedPipelineMode : Integrated CLRConfigFile : passAnonymousToken : True startMode : OnDemand state : Started applicationPoolSid : S-1-5-82-271721585-897601226-2024613209-625570482-296978595 processModel : Microsoft.IIs.PowerShell.Framework.ConfigurationElement ... 
提示#1和#12
 理想情况下,你的脚本会创build你的对象( $obj = New-Object -TypeName psobject -Property @{'SomeProperty'='Test'} ),然后做一个Write-Output $objects 。 您将输出到pipe道Format-Table 。 
 PS C:\> Run-MyScript.ps1 | Format-Table 
他们应该真的调用PowerShell PowerObjectandPipingShell。