遇到一个奇怪的问题,而使用aws的powershell一次又一次地只在美国东部地区1,但其他地区的脚本工作正常。
我试图建立一个逻辑,以获取现有的报警细节与下面的脚本的帮助:
$alarmNames = aws cloudwatch --profile $profile --region $region describe-alarms --query MetricAlarms[].AlarmName[] --output json | ConvertFrom-Json
这给了我一个奇怪的错误,即。
aws :
At line:525 char:15
+ ... larmNames = aws cloudwatch --profile $awsProfile --region $awsRegion ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : NotSpecified: (:String) [], RemoteException
+ FullyQualifiedErrorId : NativeCommandError
'charmap' codec can't encode character '\uf13f' in position 75: character maps to <undefined>
ConvertFrom-Json : Invalid array passed in, ',' expected. (7840): [
Write-Output ( "data type is "+$alarmNames.GetType())
和abobe错误是指向我在这一行,但同样的工作没有任何编码问题,在其他地区
$alarmNames = aws cloudwatch --profile $profile --region $region describe-alarms --query MetricAlarms[].AlarmName[] --output json| ConvertFrom-Json
上面的查询是取出**System.Object[]**type数据类型
任何输入或想法,我应该如何避免这个异常/错误在我的powershell aws脚本?
1条答案
按热度按时间c3frrgcw1#
这听起来像是
aws.exe
在幕后使用Python,并且要打印到stdout的文本包含无法以隐含的输出字符编码进行编码的Unicode字符(请注意,输出中的PRIVATE USE-F13 F,U+F13F
)字符肯定是不寻常的)。在从PowerShell调用
aws
之前执行以下操作:PYTHONIOENCODING
环境变量(默认情况下没有定义),告诉 Python 生成 * UTF-8输出(根据定义,它能够编码 * 所有 * Unicode字符):aws.exe
使用与直接使用Python相同的环境变量。aws.exe
输出解释为UTF-8编码,以确保它被正确解码为.NET字符串:要将所有设置组合在一起,包括保存和恢复以前的设置: