Powershell dbatools - 使用 CMS 获取服务器名称

问题描述

论坛......我的 POS 技能仍然很重要。使用 dbatools .. 我正在尝试针对多个 sql 实例运行一些信息查询。有没有办法从 CMS 派生/使用服务器名称来初始化 $server 变量?我怎么可能实现。我正在使用:

Get-DbaRegisteredServer -sqlInstance CMSServer

一个包含服务器名称的 -ServerName 参数。我怎么能用它来做到这一点,针对每台服务器(或我开放的任何更好的方式)

Import-Module dbatools
$servers = "localhost\instance1" # this would be all the Live servers
get-dbadatabase -sqlInstance $servers -ExcludeDatabase master,model,msdb,tempdb | Select sqlInstance,Name,RecoveryModel,Compatibility,Owner,PageVerify,TargetRecoveryTime,IsReadCommittedSnapshotOn,SnapshotIsolationState,@{l="QueryStoreState";e={$_.QueryStoreOptions.ActualState}} | Export-Csv -Path c:\bin\databasestatus.csv

提前致谢!!

解决方法

Get-DbaRegisteredServer 的输出适合直接传入 Get-DbaDatabase(它接受 SQL Server 实例的集合)。

$servers = Get-DbaRegisteredServer -sqlinstance CMSServer;
Get-DbaDatabase -SqlInstance $servers -excludesystem | Select-object SqlInstance,Name,RecoveryModel,Compatibility,Owner,PageVerify,TargetRecoveryTime,IsReadCommittedSnapshotOn,SnapshotIsolationState,@{l="QueryStoreState";e={$_.QueryStoreOptions.ActualState}} | Export-Csv -notypeinfo -Path c:\bin\databasestatus.csv