默认显示内部变量

时间:2016-01-11 13:00:26

标签: powershell

我有一个PowerShell对象,如下所示:

$MyObject = New-Object PSObject

$MyObject | Add-Member -Type NoteProperty -Name Name -Value $Name
$MyObject | Add-Member -Type NoteProperty -Name Json -Value $Json

如果我愿意的话:

$MyObject

我会看到:

Name                         Json
----                         --------------------------
Name                         {@json-powershell format}

我希望在使用$MyObject时,默认视图会显示($MyObject).Json

我无法找到一种方法。

2 个答案:

答案 0 :(得分:1)

您可以覆盖ToString()方法:

$MyObject | Add-Member -type ScriptMethod -Name ToString -Value
{$this.Json} -PassThru -Force

如果您在字符串中使用变量,则会显示Json。

"$MyObject"

那是你在寻找什么?您希望输出在哪里?控制台?调试流?

答案 1 :(得分:0)

我认为您希望获得的内容在本文中有所描述:http://learn-powershell.net/2013/08/03/quick-hits-set-the-default-property-display-in-powershell-on-custom-objects/

$defaultDisplaySet = 'Json'
$defaultDisplayPropertySet = New-Object System.Management.Automation.PSPropertySet(‘DefaultDisplayPropertySet’,[string[]]$defaultDisplaySet)
$PSStandardMembers = [System.Management.Automation.PSMemberInfo[]]@($defaultDisplayPropertySet)

$object.PSObject.TypeNames.Insert(0,'User.Information')
$object | Add-Member MemberSet PSStandardMembers $PSStandardMembers

$Object