The issue has been fixed.

Apparently, when a new VM is provisioned with Windows Server edition, the 
Server Manager that opens up at first logon, has no ServerList.xml to 
reference to, or even a Server Manager folder for that matter. The XML file 
comes into picture when one tries to add remote server/s onto the Server 
Manager of the local machine. This is a standard way to do Remote Desktop 
Services (RDS) deployment. Once the servers are added, the ServerList.xml 
file will be automatically generated at 
{User}\AppData\Roaming\Microsoft\Windows\ServerManager\ServerList.xml, 
which will show the local machine and the remote machine/s that were added 
to the Server Manager GUI.

The workaround I did, was create a ServerList.xml in my local repo and push 
to the remove server. This ServerList.xml contains only the local host.
I am then using win_powershell module to run a PS script to add the 
Licensing Server (Domain Controller) and Gateway Server (RD Gateway) to 
that ServerList.xml, worked so far without issues.

On Friday, December 23, 2022 at 1:13:37 AM UTC+5:30 Amitabh Ghosh wrote:

> The user is a domain administrator as well as local administrator to the 
> remote machine.
>
> On Friday, December 23, 2022 at 12:55:17 AM UTC+5:30 [email protected] 
> wrote:
>
>> Permissions ?
>>
>> On Thu, 22 Dec 2022 at 17:42, Amitabh Ghosh <[email protected]> wrote:
>>
>>> I guess it's still the same thing:
>>>
>>> *Playbook:*
>>>   ansible.windows.win_powershell:
>>>     script: |
>>>             try {
>>>                 Get-Process | Where-Object {$_.ProcessName -eq 
>>> "ServerManager.exe"} | Stop-Process -Force
>>>                 $file = Get-Item 
>>> "$env:USERPROFILE\AppData\Roaming\Microsoft\Windows\ServerManager\ServerList.xml"
>>>                 Copy-Item -Path $file -Destination $file-backup -Force
>>>                 $xml = [xml] (Get-Content $file )
>>>                 $newserver1 = @($xml.ServerList.ServerInfo)[0].clone()
>>>                 $newserver1.name = "{{ DomainController }}"
>>>                 $newserver1.lastUpdateTime = "$(Get-Date -Format 
>>> "yyyy-MM-ddTHH:mm:ss")"
>>>                 $newserver1.status = "1"
>>>                 $xml.ServerList.AppendChild($newserver1)
>>>                 $xml.Save($file.FullName)
>>>                 $newserver2 = @($xml.ServerList.ServerInfo)[0].clone()
>>>                 $newserver2.name = "{{ RDSServer }}"
>>>                 $newserver2.lastUpdateTime = "$(Get-Date -Format 
>>> "yyyy-MM-ddTHH:mm:ss")"
>>>                 $newserver2.status = "1"
>>>                 $xml.ServerList.AppendChild($newserver2)
>>>                 $xml.Save($file.FullName)
>>>             }
>>>             catch {
>>>                   Write-Host "Failed - Add Servers to Server Manager" 
>>> -ForegroundColor Yellow
>>>                   Write-Host $_.Exception.Message -ForegroundColor 
>>> Yellow            
>>>             }
>>>
>>> *Error:*
>>>
>>> 2022-12-22T16:33:26.1424400Z TASK [../roles/rds_setup : Session Based 
>>> Desktop Deployment - Add Servers to Server Manager] ***
>>>
>>> 2022-12-22T16:33:26.1428096Z task path: 
>>> /home/sre_admin/myagent/_work/r1/a/_provisioning-services/playbooks/made2manage/roles/rds_setup/tasks/main.yml:63
>>>
>>> 2022-12-22T16:33:26.1855324Z Using module file 
>>> /usr/lib/python3/dist-packages/ansible_collections/ansible/windows/plugins/modules/win_powershell.ps1
>>> 2022-12-22T16:33:26.1860030Z Pipelining is enabled.
>>>
>>> 2022-12-22T16:33:26.1875537Z <10.177.38.137> ESTABLISH WINRM CONNECTION FOR 
>>> USER: Cloudops_Admin on PORT 5985 TO 10.177.38.137
>>> 2022-12-22T16:33:26.2763734Z EXEC (via pipeline wrapper)
>>> 2022-12-22T16:33:29.5133486Z changed: [10.177.38.137] => {
>>> 2022-12-22T16:33:29.5134245Z     "changed": true,
>>> 2022-12-22T16:33:29.5134669Z     "debug": [],
>>> 2022-12-22T16:33:29.5135375Z     "error": [
>>> 2022-12-22T16:33:29.5135700Z         {
>>> 2022-12-22T16:33:29.5136061Z             "category_info": {
>>> 2022-12-22T16:33:29.5137127Z                 "activity": "Get-Item",
>>>
>>> 2022-12-22T16:33:29.5137582Z                 "category": "ObjectNotFound",
>>> 2022-12-22T16:33:29.5137981Z                 "category_id": 13,
>>>
>>> 2022-12-22T16:33:29.5138388Z                 "reason": 
>>> "ItemNotFoundException",
>>>
>>> 2022-12-22T16:33:29.5138972Z                 "target_name": 
>>> "C:\\Users\\Amitabh.Ghosh\\AppData\\Roaming\\Microsoft\\Windows\\ServerManager\\ServerList.xml",
>>> 2022-12-22T16:33:29.5139525Z                 "target_type": "String"
>>> 2022-12-22T16:33:29.5139919Z             },
>>> 2022-12-22T16:33:29.5140275Z             "error_details": null,
>>> 2022-12-22T16:33:29.5140676Z             "exception": {
>>> 2022-12-22T16:33:29.5141044Z                 "help_link": null,
>>> 2022-12-22T16:33:29.5141619Z                 "hresult": -2146233087 
>>> <(214)%20623-3087>,
>>> 2022-12-22T16:33:29.5142054Z                 "inner_exception": null,
>>>
>>> 2022-12-22T16:33:29.5142952Z                 "message": "Cannot find path 
>>> 'C:\\Users\\Amitabh.Ghosh\\AppData\\Roaming\\Microsoft\\Windows\\ServerManager\\ServerList.xml'
>>>  because it does not exist.",
>>>
>>> 2022-12-22T16:33:29.5143625Z                 "source": 
>>> "System.Management.Automation",
>>>
>>> 2022-12-22T16:33:29.5144134Z                 "type": 
>>> "System.Management.Automation.ItemNotFoundException"
>>> 2022-12-22T16:33:29.5144583Z             },
>>>
>>> 2022-12-22T16:33:29.5145878Z             "fully_qualified_error_id": 
>>> "PathNotFound,Microsoft.PowerShell.Commands.GetItemCommand",
>>>
>>> 2022-12-22T16:33:29.5148102Z             "output": "Get-Item : Cannot find 
>>> path 
>>> 'C:\\Users\\Amitabh.Ghosh\\AppData\\Roaming\\Microsoft\\Windows\\ServerManager\\ServerList.xml'
>>>  \r\nbecause it does not exist.\r\nAt line:3 char:13\r\n+     $file = 
>>> Get-Item \"$env:USERPROFILE\\AppData\\Roaming\\Microsoft\\Wind ...\r\n+     
>>>         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\r\n    + 
>>> CategoryInfo          : ObjectNotFound: 
>>> (C:\\Users\\Amitab...\\ServerList.xml:String) [Get-Item], 
>>> \r\nItemNotFoundException\r\n    + FullyQualifiedErrorId : 
>>> PathNotFound,Microsoft.PowerShell.Commands.GetItemCommand\r\n \r\n",
>>> 2022-12-22T16:33:29.5149506Z             "pipeline_iteration_info": [
>>> 2022-12-22T16:33:29.5149823Z                 0,
>>> 2022-12-22T16:33:29.5150108Z                 1
>>> 2022-12-22T16:33:29.5150371Z             ],
>>>
>>> 2022-12-22T16:33:29.5150724Z             "script_stack_trace": "at 
>>> <ScriptBlock>, <No file>: line 3",
>>>
>>> 2022-12-22T16:33:29.5151281Z             "target_object": 
>>> "C:\\Users\\Amitabh.Ghosh\\AppData\\Roaming\\Microsoft\\Windows\\ServerManager\\ServerList.xml"
>>> 2022-12-22T16:33:29.5151731Z         }
>>> 2022-12-22T16:33:29.5152005Z     ],
>>> 2022-12-22T16:33:29.5152304Z     "failed_when_result": false,
>>> 2022-12-22T16:33:29.5152838Z     "host_err": "",
>>>
>>> 2022-12-22T16:33:29.5153549Z     "host_out": "Failed - Add Servers to 
>>> Server Manager\nCannot bind argument to parameter 'Path' because it is 
>>> null.\n",
>>> 2022-12-22T16:33:29.5154025Z     "information": [
>>> 2022-12-22T16:33:29.5154325Z         {
>>> 2022-12-22T16:33:29.5154605Z             "message_data": {
>>> 2022-12-22T16:33:29.5154943Z                 "BackgroundColor": null,
>>> 2022-12-22T16:33:29.5155274Z                 "ForegroundColor": {
>>> 2022-12-22T16:33:29.5155594Z                     "String": "Yellow",
>>>
>>> 2022-12-22T16:33:29.5155951Z                     "Type": 
>>> "System.ConsoleColor",
>>> 2022-12-22T16:33:29.5156280Z                     "Value": 14
>>> 2022-12-22T16:33:29.5156573Z                 },
>>>
>>> 2022-12-22T16:33:29.5157090Z                 "Message": "Failed - Add 
>>> Servers to Server Manager",
>>> 2022-12-22T16:33:29.5157500Z                 "NoNewLine": false
>>> 2022-12-22T16:33:29.5158470Z             },
>>> 2022-12-22T16:33:29.5158849Z             "source": "Write-Host",
>>> 2022-12-22T16:33:29.5159076Z             "tags": [
>>> 2022-12-22T16:33:29.5159298Z                 "PSHOST"
>>> 2022-12-22T16:33:29.5159487Z             ],
>>>
>>> 2022-12-22T16:33:29.5159918Z             "time_generated": 
>>> "2022-12-22T16:33:29.0534558Z"
>>> 2022-12-22T16:33:29.5160209Z         },
>>> 2022-12-22T16:33:29.5160515Z         {
>>> 2022-12-22T16:33:29.5160713Z             "message_data": {
>>> 2022-12-22T16:33:29.5160973Z                 "BackgroundColor": null,
>>> 2022-12-22T16:33:29.5161220Z                 "ForegroundColor": {
>>> 2022-12-22T16:33:29.5161457Z                     "String": "Yellow",
>>>
>>> 2022-12-22T16:33:29.5161729Z                     "Type": 
>>> "System.ConsoleColor",
>>> 2022-12-22T16:33:29.5161974Z                     "Value": 14
>>> 2022-12-22T16:33:29.5162169Z                 },
>>>
>>> 2022-12-22T16:33:29.5162667Z                 "Message": "Cannot bind 
>>> argument to parameter 'Path' because it is null.",
>>> 2022-12-22T16:33:29.5162997Z                 "NoNewLine": false
>>> 2022-12-22T16:33:29.5163216Z             },
>>> 2022-12-22T16:33:29.5163552Z             "source": "Write-Host",
>>> 2022-12-22T16:33:29.5163785Z             "tags": [
>>> 2022-12-22T16:33:29.5163997Z                 "PSHOST"
>>> 2022-12-22T16:33:29.5164184Z             ],
>>>
>>> 2022-12-22T16:33:29.5164605Z             "time_generated": 
>>> "2022-12-22T16:33:29.0690815Z"
>>> 2022-12-22T16:33:29.5164896Z         }
>>> 2022-12-22T16:33:29.5165066Z     ],
>>> 2022-12-22T16:33:29.5165254Z     "invocation": {
>>> 2022-12-22T16:33:29.5165483Z         "module_args": {
>>> 2022-12-22T16:33:29.5165707Z             "arguments": null,
>>> 2022-12-22T16:33:29.5165929Z             "chdir": null,
>>> 2022-12-22T16:33:29.5166163Z             "creates": null,
>>> 2022-12-22T16:33:29.5166377Z             "depth": 2,
>>> 2022-12-22T16:33:29.5166609Z             "error_action": "continue",
>>> 2022-12-22T16:33:29.5166870Z             "executable": null,
>>> 2022-12-22T16:33:29.5167103Z             "parameters": null,
>>> 2022-12-22T16:33:29.5167329Z             "removes": null,
>>>
>>> 2022-12-22T16:33:29.5172545Z             "script": "try {\n    Get-Process 
>>> | Where-Object {$_.ProcessName -eq \"ServerManager.exe\"} | Stop-Process 
>>> -Force\n    $file = Get-Item 
>>> \"$env:USERPROFILE\\AppData\\Roaming\\Microsoft\\Windows\\ServerManager\\ServerList.xml\"\n
>>>     Copy-Item -Path $file -Destination $file-backup -Force\n    $xml = 
>>> [xml] (Get-Content $file )\n    $newserver1 = 
>>> @($xml.ServerList.ServerInfo)[0].clone()\n    $
>>> newserver1.name
>>>  = \"DM2MDC01.DM2MDEV.LOCAL\" \n    $newserver1.lastUpdateTime = 
>>> \"$(Get-Date -Format \"yyyy-MM-ddTHH:mm:ss\")\"\n    $newserver1.status = 
>>> \"1\"\n    $xml.ServerList.AppendChild($newserver1)\n    
>>> $xml.Save($file.FullName)\n    $newserver2 = 
>>> @($xml.ServerList.ServerInfo)[0].clone()\n    $
>>> newserver2.name
>>>  = \"DM2MSAASRDS01.DM2MDEV.LOCAL\" \n    $newserver2.lastUpdateTime = 
>>> \"$(Get-Date -Format \"yyyy-MM-ddTHH:mm:ss\")\"\n    $newserver2.status = 
>>> \"1\"\n    $xml.ServerList.AppendChild($newserver2)\n    
>>> $xml.Save($file.FullName)\n}\ncatch {\n      Write-Host \"Failed - Add 
>>> Servers to Server Manager\" -ForegroundColor Yellow\n      Write-Host 
>>> $_.Exception.Message -ForegroundColor Yellow            \n}\n"
>>> 2022-12-22T16:33:29.5175101Z         }
>>> 2022-12-22T16:33:29.5175292Z     },
>>> 2022-12-22T16:33:29.5175478Z     "output": [],
>>> 2022-12-22T16:33:29.5175682Z     "result": {},
>>> 2022-12-22T16:33:29.5175910Z     "verbose": [],
>>> 2022-12-22T16:33:29.5176114Z     "warning": []
>>> 2022-12-22T16:33:29.5176295Z }
>>>
>>> Not sure why it can't find the path when it is right there....
>>>
>>> On Thursday, December 22, 2022 at 8:23:52 AM UTC+5:30 [email protected] 
>>> wrote:
>>>
>>>> I have no experience whatsoever with windows modules, but this looks 
>>>> pretty clear to me:
>>>>
>>>>                 "message": "Cannot find path 
>>>>> 'C:\\Users\\Amitabh.Ghosh\\AppData\\Roaming\\Microsoft\\Windows\\ServerManager\\ServerList.xml'
>>>>>  
>>>>> because it does not exist.",
>>>>
>>>>
>>>> Perhaps an escaping issue? According to 
>>>> https://docs.ansible.com/ansible/latest/os_guide/windows_usage.html 
>>>> when yaml code is not quoted (like in your situation) the backslash does 
>>>> not need to be escaped.
>>>> Try without the double escapes:
>>>>
>>>>     script: |
>>>>             try {
>>>>                 Get-Process | Where-Object {$_.ProcessName -eq 
>>>> "ServerManager.exe"} | Stop-Process -Force
>>>>                 $file = Get-Item 
>>>> "$env:USERPROFILE\AppData\Roaming\\Microsoft\Windows\ServerManager\ServerList.xml"
>>>>
>>>>
>>>>
>>>> -- 
>>>> Sent from Gmail Mobile
>>>>
>>> -- 
>>> You received this message because you are subscribed to the Google 
>>> Groups "Ansible Project" group.
>>> To unsubscribe from this group and stop receiving emails from it, send 
>>> an email to [email protected].
>>> To view this discussion on the web visit 
>>> https://groups.google.com/d/msgid/ansible-project/74750cfa-6448-49c1-bc06-8b6ed084e507n%40googlegroups.com
>>>  
>>> <https://groups.google.com/d/msgid/ansible-project/74750cfa-6448-49c1-bc06-8b6ed084e507n%40googlegroups.com?utm_medium=email&utm_source=footer>
>>> .
>>>
>> -- 
>> Sent from Gmail Mobile
>>
>

-- 
You received this message because you are subscribed to the Google Groups 
"Ansible Project" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/ansible-project/e202d6dc-60d7-49bc-8377-b71be3ae208cn%40googlegroups.com.

Reply via email to