application-workloads/ros/ros-vm-windows/InstallROS.ps1 (20 lines of code) (raw):

# Install Chocolatey package manager Set-ExecutionPolicy Bypass -Scope Process -Force; iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1')) choco source add -n=ros-win -s="https://aka.ms/ros/public" --priority=1 # Install ROS1 - Melodic choco upgrade ros-melodic-desktop_full -y --execution-timeout=0 -i # Install ROS1 - Noetic choco upgrade ros-noetic-desktop_full -y --execution-timeout=0 -i # Install ROS2 choco upgrade ros-foxy-desktop -y --execution-timeout=0 -i # finally enable RemotePS Enable-PSRemoting -Force -SkipNetworkProfileCheck New-NetFirewallRule -Name "Allow WinRM HTTPS" -DisplayName "WinRM HTTPS" -Enabled True -Profile Any -Action Allow -Direction Inbound -LocalPort 5986 -Protocol TCP $thumbprint = (New-SelfSignedCertificate -DnsName $env:COMPUTERNAME -CertStoreLocation Cert:\LocalMachine\My).Thumbprint $command = "winrm create winrm/config/Listener?Address=*+Transport=HTTPS @{Hostname=""$env:computername""; CertificateThumbprint=""$thumbprint""}" cmd.exe /C $command # adding telemetry footprint $localDeviceIdPath = "HKLM:SOFTWARE\Microsoft\SQMClient" $localDeviceIdName = "MachineId" $localDeviceIdValue = "{df713376-9b62-46d6-a363-cede5b1bf2c5}" New-ItemProperty -Path $localDeviceIdPath -Name $localDeviceIdName -Value $localDeviceIdValue -PropertyType String -Force | Out-Null