Sql-Server

將多個實例傳入 dbatools 命令 GET-DBADBFILE

  • September 28, 2020

我正在嘗試在我們的一個環境中收集所有 sql 實例的所有 dbfile 資訊。這是一個相當大的環境,一次執行一個實例會很乏味。我認為使用 Powershell 會有一種簡單的方法來做到這一點,但我似乎遇到了障礙。

我有一個儲存在表/視圖中的實例列表

$$ vSQLInstances $$. 如果我將這些值傳遞給一個變數,然後將該變數用作 SQLInstance 參數,則會出現錯誤。 我正在使用的腳本…

$sqlinstance = Invoke-DbaQuery -SqlInstance dbasql01\sql2019 -Database DBAEstate -Query "select sqlinstance from vSQLInstance;"

Get-DbadbFile -SqlInstance $sqlinstance | Select-Object sqlinstance, database, logicalname, size 

我收到的錯誤:

Get-DbaDbFile : Cannot process argument transformation on parameter 'SqlInstance'. Cannot convert value 
"@{sqlinstance=PRODSQLD\D}" to type "Sqlcollaborative.Dbatools.Parameter.DbaInstanceParameter". Error: "Failed to interpret 
input as Instance: @{sqlinstance=PRODSQLD\D}"
At line:11 char:28
+ Get-DbaDbFile -SqlInstance $instancelist
+                            ~~~~~~~~~~~~~
+ CategoryInfo          : InvalidData: (:) [Get-DbaDbFile], ParameterBindingArgumentTransformationException
+ FullyQualifiedErrorId : ParameterArgumentTransformationError,Get-DbaDbFile

是的,這是意料之中的,因為您傳入的是 DataRow 類型。相反,您可以將其作為字元串類型$sqlinstance.sqlinstance(列名)作為參數Get-DbaDbFile傳遞以獲取結果。

Get-DbaDbFile -SqlInstance $sqlinstance.sqlinstance #...

例如…

格式錯誤的命令和更正的命令

引用自:https://dba.stackexchange.com/questions/276160