2010-01-28 87 views
1

我想要在Powershell中的子结果集中包含父级属性,我无法弄清楚如何去做。什么我想要做的一个例子是对包括服务器名称为管道的第一列来获取数据库名和所有数据库的数据库属性的服务器上类似于一个列表:在Powershell中的子选择中获取父项属性?

[System.Reflection.Assembly]::LoadWithPartialName('Microsoft.SqlServer.SMO') | out-null 
$s = New-Object ('Microsoft.SqlServer.Management.Smo.Server') "SQLSERVER" 

$s.Databases | select $s.Name, Name, AutoShrink, AutoClose 

这是(我可以很容易地使用Database Parent属性来获取$ s.Name),但是我有更复杂的应用程序,我希望使用这种类似的方法,并且Parent属性为isn我以后就是这样。另外,如果我可以将$ s.Name命名为ServerName,将$ _。Name命名为DatabaseName,那将是理想的输出。

编辑:

我已经花了两天时间寻找如何做到这一点网上并不能找到任何引用。如果你碰巧遇到Google/Bing /无论答案如何,如果你也分享你以前找的东西,我会非常感激。我通常可以找到答案,但两天后,我只是在糟糕之后投入好时间。

回答

2

难道你不想要父项属性?

$s.Databases | select Parent, Name, AutoShrink 

编辑:

$s.Databases | select @{Name="ServerPlatform"; Expression={$_.Parent.Platform}}, Name, AutoShrink 
+0

,对于这种情况下工作,但我也说过,我有更复杂的应用。我希望能够从我想要的$ s中获得任何财产,而不仅仅是名称。我只是用它作为一个简单的例子,因为它需要最少的代码。这并不能解决问题的后半部分,将它们重命名为ServerName和DatabaseName。 – 2010-01-28 02:32:23

+0

我必须简化它...所以我们假设你想要服务器的Platform属性。 – 2010-01-28 02:32:29

+1

而且......如果你不想打扰它的命名,只需使用大括号:'$ s.Databases |选择{$ _。Parent.Platform},Name,Autoshrink' – 2010-01-28 02:39:55