[英]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.