Powershell и сервисная структура - как выбрать конкретную информацию и использовать ее для последующих действий? - PullRequest
0 голосов
/ 26 февраля 2019

Ниже приведен код подключения к кластеру сервисной фабрики и получения необходимой информации о состоянии приложений:

$ConnectArgs = @{
 ConnectionEndpoint = "mycluster:19000";  
 X509Credential = $True;  
 StoreLocation = 'CurrentUser';  
 StoreName = "MY"; 
 FindType = 'FindByThumbprint';  
 FindValue = "My_thumbprint"
 }
Connect-ServiceFabricCluster @ConnectArgs 
Get-ServiceFabricApplicationHealth -ApplicationName fabric:/Myapp -ExcludeHealthStatistics 

Но в настоящее время имеется много информации, которая мне не нужна.Как выбрать только конкретную информацию из результатов?Мне нужна только информация ServiceHealthState.Мне удалось исключить некоторую информацию из работоспособности приложения, но не удалось исключить больше.

ОБНОВЛЕНИЕ:

Я нашел следующее решение, которое близко к тому, чего я пытаюсь достичь:

$health = Get-ServiceFabricApplicationHealth -ApplicationName "fabric:/Myapp" 
If ($health.AggregatedHealthState -eq "OK") {
    Write-Host "$($clusterApplication)'s health is ok!"
} Else {
    Write-Error "$($clusterApplication)'s health is not ok"
}

Но мне не нужно отслеживать AggregatedHealthState, потому что меня интересует только одна часть, которая находится под ServiceHealthStates, см. Пример:

ApplicationName: fabric: / Myapp
AggregatedHealthState: ошибка
ServiceHealthStates:

ServiceName: фабрика: / Myapp / внешний интерфейс
AggregatedHealthState: ошибка
ServiceName: фабрика: / Myapp / Backend
AggregatedHealthState: Ok

Но я не знаю, как выбрать эту часть, также не нашел ее в Google, надеюсь, кто-то может помочь.

1 Ответ

0 голосов
/ 27 февраля 2019

Найдите решение, которое мне подходит, опубликуйте его и здесь, если кто-то еще сталкивается с тем же вопросом, мое решение:

# Connect to Service Fabric cluster
$ConnectArgs = @{
 ConnectionEndpoint = "mycluster:19000";  
 X509Credential = $True;  
 StoreLocation = 'CurrentUser';  
 StoreName = "MY"; 
 FindType = 'FindByThumbprint';  
 FindValue = "My_Thumbprint"
 }
Connect-ServiceFabricCluster @ConnectArgs 

# Test Cluster connection
$Connection=Test-ServiceFabricClusterConnection
If ($Connection -eq "True") { 
    Write-Host "OK"}
Else 
{
    Write-Host "Connection to Service fabric cluster failed" 
}

# Service Fabric application health monotoring
$AppName="MyApp"

$AppHealth=Get-ServiceFabricApplicationHealth -ApplicationName $AppName 
$AppHealthBE=$AppHealth.ServiceHealthStates -match "Backend"

$node=Get-ServiceFabricApplicationHealth -ApplicationName $AppName
$nodetorestart=$node.DeployedApplicationHealthStates.NodeName -match  "MyNode"

If ($AppHealthBE.AggregatedHealthState -eq "Ok") {
   Write-Host "$($clusterApplication)/backend is OK"
   }
   Else
   {
   Write-Host "Need to perform restart on node: $nodetorestart)"
   #Restart-ServiceFabricNode -NodeName $nodetorestart
   }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...