あなたは、ネットワーク上のすべての到達可能なインスタンスを見つけるために、このスクリプトを使用し、そこにクエリを実行することができます。
Import-Module SQLPS -DisableNameChecking
$servers = [System.Data.Sql.SqlDataSourceEnumerator]::Instance.GetDataSources()
ForEach ($i in $servers) {
$instance = $i.ServerName+"\"+$i.InstanceName
Invoke-SQLcmd -Server $instance -Database master 'select @@servername as InstanceName,name as DatabaseName,state_desc as DBStatus from sys.databases' | Format-Table
}
あなたが$instance = $i.ServerName
を使用し、次に渡すためにのみ、サーバー名が必要な場合。コードの一部は、長い時間前にhereから取られました。 CSVファイルへの書き込みとエラーキャッチして
EDIT
:
Import-Module SQLPS -DisableNameChecking
$servers = [System.Data.Sql.SqlDataSourceEnumerator]::Instance.GetDataSources()
$results = @()
ForEach ($i in $servers) {
$instance = $i.ServerName+"\"+$i.InstanceName
try {
$sqlres = Invoke-SQLcmd -Server $instance -Database master 'select @@servername as InstanceName,name as DatabaseName,state_desc as DBStatus from sys.databases'
ForEach($st in $sqlres) {
$instanceinfo = @{
InstanceName = $st.InstanceName
DatabaseName = $st.DatabaseName
DBStatus = $st.DBStatus
}
$results += New-Object PSObject -Property $instanceinfo
}
} catch {
"error when running Invoke-SQLcmd "+$instance
Write-Host($error)
}
}
$results | export-csv -Path D:\sql_instances_info.csv -NoTypeInformation
あなたはすべての反復で 'SQLPS'をインポートする必要はありません。 –
多くの感謝のPawelの返信です。あなたは私の必要条件で私を助けてくれますか? – SNR