2010-01-28 67 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

相關問題