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.