You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

GitHub Actions部署.NET Web API至IIS时遇pwsh: command not found错误

问题:GitHub Actions部署.NET Web API到IIS时出现pwsh命令未找到错误

我使用如下GitHub Actions YAML工作流部署.NET Web API至IIS:

name: "Build and Deploy"
on:
  workflow_dispatch:
    branches:
      - master
env:
  WEBAPP_NAME: 'IISAutoDeploy'
  DOTNET_VERSION: '8.0.x'           
jobs:
  build:
    runs-on: windows-latest
    steps:
      - uses: actions/checkout@v2
      - name: Setup .NET Core 
        uses: actions/setup-dotnet@v1
        with:
          dotnet-version: ${{ env.DOTNET_VERSION }}
          
      - name: Install dependencies
        working-directory: 'IISAutoDeploy'
        run: dotnet restore
        
      - name: Build
        working-directory: 'IISAutoDeploy'
        run: dotnet build --configuration Release --no-restore
        
      - name: Publish
        working-directory: 'IISAutoDeploy'
        run: dotnet publish --configuration Release --output 'dotnetcorewebapp'
        
      - name: Simply Web Deploy
        uses: RasmusBuchholdt/simply-web-deploy@2.1.0
        with:
          website-name: ${{ secrets.WEBSITE_NAME }}
          server-computer-name: ${{ secrets.SERVER_COMPUTER_NAME }}
          server-username: ${{ secrets.SERVER_USERNAME }}
          server-password: ${{ secrets.SERVER_PASSWORD }}
          source-path: '/IISAutoDeploy/dotnetcorewebapp/'

执行到最后一步时出现错误:

> Run C:\inetpub\wwwroot\_actions\RasmusBuchholdt\simply-web-deploy\2.1.0/Scripts/Set-ApplicationPool.ps1 StopAppPool    
  C:\inetpub\wwwroot\_actions\RasmusBuchholdt\simply-web-deploy\2.1.0/Scripts/Set-ApplicationPool.ps1 StopAppPool    
  Error: pwsh: command not found

我已尝试在服务器安装PowerShell Core,也尝试在YAML中添加安装命令,但均未解决问题。


解决方案

  • 排查环境适配问题:当前工作流基于windows-latest运行,该环境默认自带PowerShell Core(pwsh),错误根源是目标IIS服务器的执行环境无法识别pwsh命令。
  • 替换成兼容Windows PowerShell的部署方式:
    1. 改用支持Windows PowerShell的Web Deploy动作,比如调整为Azure/webapps-deploy@v2(针对本地IIS场景配置对应参数)。
    2. 自定义WinRM部署步骤,直接用服务器原生的powershell.exe执行操作,示例步骤如下:
      - name: 自定义部署到IIS
        uses: appleboy/ssh-action@v1.0.3
        with:
          host: ${{ secrets.SERVER_COMPUTER_NAME }}
          username: ${{ secrets.SERVER_USERNAME }}
          password: ${{ secrets.SERVER_PASSWORD }}
          script_stop: |
            # 停止目标应用池
            Stop-WebAppPool -Name ${{ secrets.WEBSITE_NAME }}
            # 同步发布文件到服务器站点目录
            robocopy "${{ github.workspace }}/IISAutoDeploy/dotnetcorewebapp" "C:\inetpub\wwwroot\${{ secrets.WEBSITE_NAME }}" /MIR /NFL /NDL
            # 重启应用池
            Start-WebAppPool -Name ${{ secrets.WEBSITE_NAME }}
      
  • 修复服务器pwsh路径:如果必须使用PowerShell Core,确保服务器上的pwsh.exe路径(如C:\Program Files\PowerShell\7\pwsh.exe)已加入系统环境变量PATH,或者在脚本中使用绝对路径调用。

内容的提问来源于stack exchange,提问作者Hakuna

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.13 21:46:03