Я ищу получение информации с нескольких серверов, например, clustername, nodename и state.Get-ClusterGroup и foreach с использованием импортированной таблицы SQL
я могу получить правильный выводе, когда я жёстко имена в foreach
петли, как это:
$clusters = "Cluster1", "Cluster2"
foreach ($cluster in $clusters) {
Get-ClusterGroup -Cluster $cluster
}
, но когда я запускаю эту версию, которая вытягивает информацию из таблицы SQL его придумывают ниже ошибки ,
$clusters = $SQLServer = "DatawarehouseServer" #use Server\Instance for named SQL instances!
$SQLDBName = "Datawarehouse"
$SqlQuery = "SELECT clusters FROM dbo.clusters"
$SqlConnection = New-Object System.Data.SqlClient.SqlConnection
$SqlConnection.ConnectionString = "Server=$SQLServer;Database=$SQLDBName;Integrated Security=True"
$SqlCmd = New-Object System.Data.SqlClient.SqlCommand
$SqlCmd.CommandText = $SqlQuery
$SqlCmd.Connection = $SqlConnection
$SqlAdapter = New-Object System.Data.SqlClient.SqlDataAdapter
$SqlAdapter.SelectCommand = $SqlCmd
$DataSet = New-Object System.Data.DataSet
$SqlAdapter.Fill($DataSet)
$SqlConnection.Close()
clear
$DataSet.Tables[0]
foreach ($cluster in $clusters) {
Get-ClusterGroup -Cluster $cluster
}
WARNING: If you are running Windows PowerShell remotely, note that some failover clustering cmdlets do not work remotely. When possible, run the cmdlet locally and specify a remote computer as the target. To run the cmdlet remotely, try using the Credential Security Service Provider (CredSSP). All additional errors or warnings from this cmdlet might be caused by running it remotely. Get-ClusterGroup : The cluster service is not running. Make sure that the service is running on all nodes in the cluster. There are no more endpoints available from the endpoint mapper At line:26 char:2 + {Get-ClusterGroup -Cluster $cluster} + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : ConnectionError: (:) [Get-ClusterGroup], ClusterCmdletException + FullyQualifiedErrorId : ClusterEndpointNotRegistered,Microsoft.FailoverClusters.PowerShell.GetClusterGroupCommand.
Я теперь пытаюсь это я, кажется, шаг ближе или шаг назад depedant о том, как вы смотрите на него. Он тянет правильную информацию прямо сейчас, но только для одного кластера:
Благодаря комментариям я удалось получить еще один шаг вперед или шаг назад с этим:
$SqlConnection = New-Object System.Data.SqlClient.SqlConnection
$SqlConnection.ConnectionString = "Server=Datawarehouseserver;Database=Datawarehouse;Integrated Security=True"
$SqlConnection.Open()
$SqlCmd = New-Object System.Data.SqlClient.SqlCommand
$SqlCmd.CommandText = "SELECT clusters FROM dbo.clusters"
$SqlCmd.Connection = $SqlConnection
$clustername = $SqlCmd.ExecuteScalar()
$SqlConnection.Close()
#Write-Output "Cluster is " $dbname
clear
foreach ($cluster in $clustername) {
Get-ClusterGroup -Cluster $cluster
}
'$ clusters' только одна строка с содержанием«DatawarehouseServer», так что цикл пытается подключиться к кластеру с этим именем, а затем терпит неудачу. Похоже, вам нужно пройти через '$ DataSet', но я не работаю с данными SQL достаточно часто, чтобы быть уверенным без тестирования, и у меня нет подходящего env передо мной. –
Спасибо, мне удалось сделать шаг дальше или шаг назад. это не позволит мне добавить к этому комментарию бит. Я попытаюсь отредактировать главный пост. – GrumGrum
'foreach ($ cluster in $ DataSet.Tables [0] .clusters)' –