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

通过WinRM远程执行PowerShell时AWS SDK无法读取默认凭证的问题

问题解决:WinRM远程PowerShell会话无法加载AWS凭证

核心原因

Windows的非交互式会话(如WinRM远程执行)默认不会加载完整的用户配置文件,导致%USERPROFILE%环境变量指向的路径可能无法访问到用户目录下的.aws凭证文件夹;而RDP交互式登录会加载完整用户profile,因此能正常读取凭证。

解决方案

1. 强制WinRM加载用户配置文件

在ServerB上执行以下PowerShell命令,修改WinRM配置使其加载完整用户profile:

Set-Item WSMan:\localhost\Shell\LoadUserProfile -Value $true
Restart-Service WinRM

修改后重新从ServerA发起远程会话执行脚本,即可让AWS SDK找到默认凭证文件。

2. 直接指定凭证文件路径

如果修改WinRM配置无效,可在脚本中明确指定AWS凭证文件的绝对路径,绕过profile加载问题:

# 构造凭证文件路径
$credentialFile = Join-Path -Path $env:USERPROFILE -ChildPath ".aws\credentials"
# 初始化AWS默认凭证
Initialize-AWSDefaults -ProfileName default -CredentialsFile $credentialFile

# 执行S3操作
$object = Get-S3Object -BucketName "your-bucket-name" -KeyPrefix "your-key-prefix"

3. 检查权限配置

确保执行WinRM会话的本地账户对ServerB上的C:\Users\<用户名>\.aws文件夹拥有读取权限,非交互式会话的权限继承可能受限,需手动确认。

4. 使用EC2实例IAM角色(如果ServerB是AWS EC2实例)

若ServerB是AWS EC2实例,直接为实例附加具有S3访问权限的IAM角色,AWS SDK会自动从实例元数据获取凭证,无需本地配置文件,彻底规避会话环境问题。

补充说明

之前手动设置AWS_PROFILE环境变量无效,是因为非交互式会话未加载用户profile,%USERPROFILE%路径无法正确指向包含.aws文件夹的用户目录,导致SDK找不到对应的配置文件。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 02:42:17