如何从azure devops管道运行Powershell命令到本地远程服务器

问题描述

大家好

我已将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:

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...