问题描述
大家好
我已将https://devblogs.microsoft.com/devops/new-ip-firewall-rules-for-azure-devops/中列出的所有IP范围添加到防火墙中。但是仍然无法从azure devops管道YAML运行powershell命令到我的本地Windows服务器。每次我从Microsoft获得新IP时,上述网站中都未列出。
我可以使用以下powershell命令使用本地计算机连接到服务器
下面是我的Yaml管道脚本
pool:
vmImage: 'windows-latest'
stages:
- stage: 'Deploy'
jobs:
- deployment: 'Deploy'
environment: 'stage'
strategy:
runOnce:
deploy:
steps:
- task: PowerShell@2
inputs:
targettype: 'inline'
script: |
$so = New-PsSessionoption –SkipCACheck -SkipCNCheck
$username='myUserName'
$password='myPassword'
$secpasswd = ConvertTo-securestring $password -AsPlainText -Force
$credentials = New-Object System.Management.Automation.PSCredential($username,$secpasswd)
Enter-PSSession -ComputerName xyz.com -Credential $credentials -UseSSL -Sessionoption $so
write-output 'host name is '+$(hostname)
出现错误:
Enter-PSSession:连接到远程服务器xyz.com失败,并显示以下错误消息:WinRM无法完成该操作。验证指定的计算机名称是否有效,可通过网络访问该计算机以及是否已启用WinRM服务的防火墙例外并允许从该计算机进行访问。默认情况下,公共配置文件的WinRM防火墙例外将限制对同一本地子网内的远程计算机的访问。有关更多信息,请参见about_Remote_Troubleshooting。
是发布到防火墙的问题还是使用天蓝色的devops执行Powershell脚本的方法错误?
解决方法
Microsoft云代理无法访问您的本地远程服务器。如果在Microsoft云代理上运行管道,则无法连接到本地远程服务器。除非可以从公共网络访问本地远程服务器。
因为您可以使用本地计算机连接到本地服务器。您可以在本地计算机上创建self-hosted agent。通过在本地代理池中为pool
指定deployment job
,在此自托管代理上运行部署作业。然后,您将能够连接到远程本地服务器。见下文
- deployment: Deploy
displayName: deploy Web App
#specify the local agent pool to run deployment job on self-hosted agent
pool: default
environment: stage
strategy: