Проверка ресурса кластера Powershell SQL - PullRequest
0 голосов
/ 09 марта 2020

Я создал нижеследующее для проверки активного узла на основе «SQL Группа доступности сервера». Однако почему-то это не работает. Файл создан и содержит необходимую информацию. Когда я отлаживаю это через ISE, переменные правильно читаются, но каждый раз, когда я получаю ответ else.

$date=get-date -Format "ddMMyyyy"
$thisNode = Get-Content env:COMPUTERNAME
$random=get-random -maximum 1000
$trace_dir="C:\Users\Administrator\Desktop"
$trace_file="$trace_dir\trace_$date`_$random.txt"
Get-ClusterResource | where-object {$_.ResourceType -like "SQL Server Availability Group"} | format-list * >> $trace_file
$owner=Select-String -path $trace_file -pattern 'OwnerNode' | Out-String

IF($owner -contains $thisNode){ echo "primary" >> trace_file}

ELSE { echo "slave" >> trace_file}

Случайное число используется для создания другого файла каждый раз, когда выполняется скрипт. Вещи, которые я пробовал:

  1. Отформатируйте далее вывод, используя format-list -Property OwnerNode. Он получает только нужную строку, но все равно выдает false.

  2. Сон между предложением if и переменной.

  3. Удалите ненужные переменные (например, thisNode с фактическим именем).

  4. Проверьте, является ли выход ASCII или что-то не так с выходом, тоже самое.

  5. I мне известно, что я могу получить правильный ответ, используя «Get-Content $ traceFile | Select-String -Pattern $ env: COMPUTERNAME», но я хочу знать, почему вышеописанное не работает.

...