在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。