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

如何将GitHub Secrets作为参数传递给PowerShell脚本?

问题原因

GitHub Actions会自动对Secrets内容进行脱敏替换,当你在run命令里直接通过YAML语法展开${{ env.username }}和${{ env.password }}时,这些Secrets值会被替换成***,而PowerShell会把这个***当成要执行的命令,因此抛出“***未被识别为cmdlet、函数、脚本文件或可执行程序”的错误。同时直接将Secrets作为脚本参数传递,还可能遇到特殊字符、空格导致的参数解析问题。

解决方案

方案1:让PowerShell脚本直接读取环境变量(推荐)

这种方式更安全,也能避免参数解析的各类问题。

修改GitHub Actions YAML配置

- name: Connecting to shared drive
  env:
    TEST_USERNAME: ${{ secrets.TEST_USERNAME }}
    TEST_PASSWORD: ${{ secrets.TEST_PASSWORD }}
  run: |
    & "${{ github.workspace }}\Connect-Drive.ps1"

修改PowerShell脚本(Connect-Drive.ps1)

在脚本内部通过$env:前缀读取环境变量:

# Connect-Drive.ps1
$username = $env:TEST_USERNAME
$password = $env:TEST_PASSWORD

# 示例:将密码转为安全字符串并创建凭据
$securePassword = ConvertTo-SecureString $password -AsPlainText -Force
$credential = New-Object System.Management.Automation.PSCredential ($username, $securePassword)

# 执行共享驱动器连接操作
New-PSDrive -Name Z -PSProvider FileSystem -Root "\\server\share" -Credential $credential

方案2:通过PowerShell传递环境变量作为参数(若必须用参数接收)

如果脚本依赖参数输入,可以在run命令里通过PowerShell语法引用环境变量,而非直接在YAML中展开:

- name: Connecting to shared drive
  env:
    TEST_USERNAME: ${{ secrets.TEST_USERNAME }}
    TEST_PASSWORD: ${{ secrets.TEST_PASSWORD }}
  run: |
    & "${{ github.workspace }}\Connect-Drive.ps1" -Username $env:TEST_USERNAME -Password $env:TEST_PASSWORD

对应的脚本需要定义参数:

# Connect-Drive.ps1
param(
    [Parameter(Mandatory=$true)]
    [string]$Username,
    [Parameter(Mandatory=$true)]
    [string]$Password
)

# 后续使用参数执行操作
$securePassword = ConvertTo-SecureString $Password -AsPlainText -Force
$credential = New-Object System.Management.Automation.PSCredential ($Username, $securePassword)
# ... 其他共享驱动器连接逻辑
注意事项
  • 禁止在脚本或日志中输出Secrets内容,即使GitHub会自动脱敏,也要避免明文暴露风险。
  • 始终使用ConvertTo-SecureString将明文密码转为安全字符串,减少内存中的明文暴露时长。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 17:02:08