我有以下powershell脚本,通过packer
实用程序运行,同时创建aws ami映像。此脚本下载并安装aws cli,然后立即尝试使用它。安装过程将更新windows PATH环境变量,但我认为它不会立即在同一脚本中可用。所以我设置的位置,在使用它之前安装cli。
$SETUP_DIR = "C:\Setup"
New-Item -Path $SETUP_DIR -ItemType Directory -Force -ErrorAction SilentlyContinue
Clear-Host
Set-Location -Path $SETUP_DIR -PassThru
# install AWS CLI
msiexec.exe /i https://awscli.amazonaws.com/AWSCLIV2.msi /quiet
Write-Host "AWS CLI installation completed."
# Set location to AWS CLI
Set-Location -Path "C:\Program Files\Amazon\AWSCLIV2" -PassThru
# Download utility from AWS S3
aws s3 cp s3://tools/utility.exe
Write-Host "Utility download completed."
# switch the location back to c:\setup
Set-Location -Path $SETUP_DIR -PassThru
但是,当脚本执行时,它会抛出错误The term 'aws' is not recognized
- aws s3 cp s3://工具/实用程序. exe ...==〉www.example.com服务器:+~~~==〉亚马逊-ebs.windows服务器:amazon-ebs.windows未找到对象:[],命令未找到异常==〉服务器:+完全限定的错误ID:服务器异常==〉服务器错误:亚马逊-ebs.windows服务器:==〉亚马逊-ebs.windows服务器:aws:术语"aws"无法识别为cmdlet、函数、脚本文件或可操作程序的名称。请检查==〉amazon-ebs.windows_server:请检查名称的拼写,或者如果包含路径,请验证路径是否正确,然后重试。 aws : The term 'aws' is not recognized as the name of a cmdlet, function, script file, or operable program. Check the ==> amazon-ebs.windows_server: spelling of the name, or if a path was included, verify that the path is correct and try again.
1条答案
按热度按时间eit6fx6z1#
当你运行aws s3时...系统试图在它知道的系统路径中定位
aws
。事实上,你改变目录到aws二进制文件的位置对你没有任何作用。正如你可能知道的,即使你和一个二进制文件在同一个目录中,如果你只是试图使用它,如果它不在路径中,它就不会工作。这就是为什么你要使用.\binary_name. exe这是PowerShell中的一个安全特性。您可以尝试按照建议中的建议更新路径,方法是添加该位置:
或者直接指向二进制文件。你也可以创建一个别名,比如:
然后使用aws,它应该运行aws.cmd(检查该文件夹,以确保您调用的是正确的二进制文件。它曾经是aws cli v1的aws.cmd,但可能已经更改)