[英]Can I run a task within a PowerShell script?
我是 Ansible 剧本的新手,我检查了一堆不同的文档但没有成功。 所以这就是我想做的。 我的公司希望我使用 PowerShell 在 winRM 侦听器中检查某些字段是否存在,如果不存在,他们希望我让它们存在,如果存在,他们希望我跳过剧本的那部分。
- name: Windows test
hosts: all
gather_facts: true
tasks:
- name: Run basic PowerShell script
ansible.windows.win_powershell:
script: |
$winRM = Get-WSManInstance -ResourceURI winrm/config/listener -SelectorSet @{Address="*";Transport="https"}
$winRMPort = $winRM.Port
$winRMTransport = $winRM.Transport
$winRMThumbprint = $winRM.CertificateThumbprint
if($winRMPort -ne $null){
#task goes in here
}
else{
#task goes in here
}
我的问题是我可以在 if 语句中放置一个任务来告诉 Ansible 运行该任务吗? 如果现在我不确定我会怎么做 go 。 我下面的代码还没有 if 语句的完整逻辑,但我只是想在 go 进一步使用它之前进行测试。 我已经尝试嵌入它,但返回时出现错误,所以我认为我要么没有做对,要么根本无法完成。 任何帮助表示赞赏。 谢谢你。
您不能在 powershell 脚本中运行/执行 ansible 任务/模块。 但是您可以将任务转换为 powershell 命令/脚本并在 powershell 脚本而不是 ansible 任务/模块中运行它。
由于您使用的是 win_shell,因此它全部是 PowerShell 而不是 Ansible。您可以使用 PS1 逻辑检查 WinRM 端口上的条件,然后执行该条件。
此外,Ansible 是幂等的,因此如果 state 存在,它将默认跳过条件为“存在”的代码。
有关详细信息,请参阅https://docs.ansible.com/ansible/latest/collections/ansible/windows/win_powershell_module.html 。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.