I’m testing Ansible to see if I can successfully control various aspects of Windows management. I’m getting stuck on using variables and conditionals and can’t interpret the error information that comes back.
I tried to run a playbook against a test machine where I used some conditionals and loop statements as in the example below.
---
hosts: myhost.domain.local
tasks:
- name: get all connected network adapters
win_shell: |
$adapters = @(Get-NetAdapter)
foreach($item in $adapters){if($item.status -eq "Up"){$item}}
So above I first assign a variable to a list of all network adapters that can be found on my system and then I wan’t to extract only those that are actually up and connected. I’m getting some cryptic response where I can find syntax errors so the above code must be somehow misinterpreted. I’ll probably would want to expand this code to gather more details but since I’m stuck just with the basics I can’t move forward. BTW not sure why the | pipe character after win_shell. Just seen it in a couple of simple examples on the web. Couldn’t find any good examples and there was no answer in other forum.
Strange but I run the playbook again and it actually gives me some output. Many thanks for the explanation regarding the pipe sign. Makes things more clear now.
Problem is in stdout_lines, this doesn’t display the same info that it would display when it was run directly on the Windows box. It cuts off last two columns which are my MACaddress and LinkSpeed.
You can reduce the PowerShell to one line and, if you’re only interested in the output as a string, you can use Out-String command with the -Width parameter and a suitably large value: