首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在使用ansible "win_shell“模块时,”不能对空值表达式调用方法“

在使用ansible "win_shell“模块时,”不能对空值表达式调用方法“
EN

Stack Overflow用户
提问于 2020-02-14 02:09:46
回答 1查看 402关注 0票数 0

我正在使用ansible win_shell模块在windows主机上运行以下命令,但收到错误“您不能在空值表达式上调用方法”

cmd:-

代码语言:javascript
复制
  - 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作业失败,错误如下;

代码语言:javascript
复制
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: }
EN

回答 1

Stack Overflow用户

发布于 2020-02-14 13:42:54

这通常意味着调用方法的变量是null。这意味着由于脚本问题而从未设置过变量

您将能够通过查看您在Ansible上调用的脚本来进一步调试它遇到问题的地方:At line:1 char:291。这似乎是这些变量之一:

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

尝试直接在主机上运行该脚本以了解更多信息。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60214070

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档