«Вы не можете вызвать метод для выражения с нулевым значением» при использовании ansible модуля «win_shell» - PullRequest
0 голосов
/ 13 февраля 2020

Я использую ansible модуль win_shell для запуска нижеуказанных команд на windows хосте, но получаю ошибку "Вы не можете вызвать метод для выражения с нулевым значением"

cmd: -

  - name: Get ASG Instance id
    win_shell: |
      $ASG=(Get-ASAutoScalingGroup -AutoScalingGroupName "{{ environment_name }}-asg v2").Instances | findstr \"InstanceId InService\" 
      $InstanceId=(echo $ASG) | findstr InstanceId 
      $InService=(echo $InstanceId | %{ $_.Split(':')[1]; }).replace(' ','')
    register: InService

note:- using {{ environment_name }} as a variable.

Задание CircleCI завершилось с ошибкой ниже;

amazon-ebs:     "cmd": "$ASG=(Get-ASAutoScalingGroup -AutoScalingGroupName \"dev-asg-v2\").Instances | findstr \"InstanceId InService\" $InstanceId=(echo $ASG) | findstr 'InstanceId' $InService=(echo $InstanceId | %{ $_.Split(':')[1]; }).replace(' ','')",
    amazon-ebs:     "delta": "0:00:12.531289",
    amazon-ebs:     "end": "2020-02-12 12:12:35.640112",
    amazon-ebs:     "msg": "non-zero return code",
    amazon-ebs:     "rc": 1,
    amazon-ebs:     "start": "2020-02-12 12:12:23.108822",
    amazon-ebs:     "stderr": "You cannot call a method on a null-valued expression.\r\nAt line:1 char:291\r\n+ ... d' $InService=(echo $InstanceId | %{ $_.Split(':')[1]; }).rep ...\r\n+                                                  ~~~~~~~~~~~~~~~~\r\n    + CategoryInfo          : InvalidOperation: (:) [], RuntimeException\r\n    + FullyQualifiedErrorId : InvokeMethodOnNull\r\n \r\nYou cannot call a method on a null-valued expression.\r\nAt line:1 char:65\r\n+ ... ing $false; $ASG=(Get-ASAutoScalingGroup -AutoScalingGroupName \"d ...\r\n+                 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\r\n    + CategoryInfo          : InvalidOperation: (:) [], RuntimeException\r\n    + FullyQualifiedErrorId : InvokeMethodOnNull",
    amazon-ebs:     "stderr_lines": [
    amazon-ebs:         "You cannot call a method on a null-valued expression.",
    amazon-ebs:         "At line:1 char:291",
    amazon-ebs:         "+ ... d' $InService=(echo $InstanceId | %{ $_.Split(':')[1]; }).rep ...",
    amazon-ebs:         "+                                                  ~~~~~~~~~~~~~~~~",
    amazon-ebs:         "    + CategoryInfo          : InvalidOperation: (:) [], RuntimeException",
    amazon-ebs:         "    + FullyQualifiedErrorId : InvokeMethodOnNull",
    amazon-ebs:         " ",
    amazon-ebs:         "You cannot call a method on a null-valued expression.",
    amazon-ebs:         "At line:1 char:65",
    amazon-ebs:         "+ ... ing $false; $ASG=(Get-ASAutoScalingGroup -AutoScalingGroupName \"d ...",
    amazon-ebs:         "+                 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~",
    amazon-ebs:         "    + CategoryInfo          : InvalidOperation: (:) [], RuntimeException",
    amazon-ebs:         "    + FullyQualifiedErrorId : InvokeMethodOnNull"
    amazon-ebs:     ],
    amazon-ebs:     "stdout": "",
    amazon-ebs:     "stdout_lines": []
    amazon-ebs: }


1 Ответ

0 голосов
/ 14 февраля 2020

Обычно это означает, что переменная, для которой вы вызываете метод, равна null. Значение переменной никогда не устанавливалось из-за проблемы со сценарием

Вы сможете продолжить отладку, посмотрев на скрипт, который вы вызываете Ansible, где указано, что ошибка привела к проблеме: At line:1 char:291. Кажется, что это одна из следующих переменных:

$InService=(echo $InstanceId | %{ $_.Split(':')[1]; })

Попробуйте запустить скрипт прямо на хосте, чтобы увидеть дальше.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...