安装 MSI 后无法识别 aws 命令
aws command not getting recognized after MSI install
我是 powershell 的新手。我不明白为什么在成功安装 AWS CLI 后,我间歇性地返回 aws
命令无法识别的错误。我睡着了,想着一些环境变量可能会在后台设置。需要帮助弄清楚我需要做什么才能成功执行 $putItem 命令。
我按照此处的说明进行操作 https://docs.aws.amazon.com/cli/latest/userguide/install-cliv2-windows.html
请注意:整个事情必须自动化,所以我不能手动登录到主机并修复某些东西,因为同一个脚本必须 运行 在 100 多台主机上
Write-Output "Checking if AWS CLI support exists..."
cmd.exe /c "aws --version"
if ($LASTEXITCODE -eq 0){
Write-Output "AWS CLI installed already"
} else {
Write-Output "Installing AWS CLI V2"
cmd.exe /c "msiexec.exe /i https://awscli.amazonaws.com/AWSCLIV2.msi /qn"
if ($LASTEXITCODE -eq 0){
Write-Output "AWS CLI installed successfully"
Start-Sleep -s 5
} else {
Write-Output "Could not install AWS CLI"
exit 1
}
}
$putItem = 'aws dynamodb put-item --table-name ' + $instanceStatusDDBTable + ' --item "{\"HostName\" : {\"S\" : \"' + $instanceName + '\"}, \"Modules\" : {\"M\" : {}}, \"DAGName\" : {\"S\" : \"' + $dagName +'\"}}"'
Write-Output "Executing DB put item query $putItem"
cmd.exe /c $putItem
if ($LASTEXITCODE -eq 0){
Write-Output "Created entry for $instanceName in $instanceStatusDDBTable DDB table"
} else {
Write-Output "Could not complete put Item operation for $instanceName"
exit 1
}
这是输出
Checking if AWS CLI support exists...
Installing AWS CLI V2
AWS CLI installed successfully
Executing DB put item query aws dynamodb put-item --table-name Ex2019-HostStatusTable --item "{\"HostName\" : {\"S\" : \"Host1\"}, \"Modules\" : {\"M\" : {}}, \"DAGName\" : {\"S\" : \"USW-D01\"}}"
Could not complete put Item operation for Host1
错误输出-
'aws' is not recognized as an internal or external command,
operable program or batch file.
检查 $LASTEXITCODE 变量后,尝试添加以下代码来刷新环境变量。 shell 会话必须重新收集安装程序刚刚添加的更新环境变量。查看此回复了解更多 info。
$env:Path = [System.Environment]::GetEnvironmentVariable("Path","Machine") + ";" + [System.Environment]::GetEnvironmentVariable("Path","User")
您可能还需要考虑使用带有 -wait
和 -passthru
参数的 Start-Process 来调用您的安装程序,因为 cmd 可能不会等待足够长的时间让应用程序完成安装。您可以阅读 here。我同意 David 的观点,你可以检查它是否由 运行 aws --version
安装,然后读取版本号或在 try catch 块中捕获错误。
我是 powershell 的新手。我不明白为什么在成功安装 AWS CLI 后,我间歇性地返回 aws
命令无法识别的错误。我睡着了,想着一些环境变量可能会在后台设置。需要帮助弄清楚我需要做什么才能成功执行 $putItem 命令。
我按照此处的说明进行操作 https://docs.aws.amazon.com/cli/latest/userguide/install-cliv2-windows.html
请注意:整个事情必须自动化,所以我不能手动登录到主机并修复某些东西,因为同一个脚本必须 运行 在 100 多台主机上
Write-Output "Checking if AWS CLI support exists..."
cmd.exe /c "aws --version"
if ($LASTEXITCODE -eq 0){
Write-Output "AWS CLI installed already"
} else {
Write-Output "Installing AWS CLI V2"
cmd.exe /c "msiexec.exe /i https://awscli.amazonaws.com/AWSCLIV2.msi /qn"
if ($LASTEXITCODE -eq 0){
Write-Output "AWS CLI installed successfully"
Start-Sleep -s 5
} else {
Write-Output "Could not install AWS CLI"
exit 1
}
}
$putItem = 'aws dynamodb put-item --table-name ' + $instanceStatusDDBTable + ' --item "{\"HostName\" : {\"S\" : \"' + $instanceName + '\"}, \"Modules\" : {\"M\" : {}}, \"DAGName\" : {\"S\" : \"' + $dagName +'\"}}"'
Write-Output "Executing DB put item query $putItem"
cmd.exe /c $putItem
if ($LASTEXITCODE -eq 0){
Write-Output "Created entry for $instanceName in $instanceStatusDDBTable DDB table"
} else {
Write-Output "Could not complete put Item operation for $instanceName"
exit 1
}
这是输出
Checking if AWS CLI support exists...
Installing AWS CLI V2
AWS CLI installed successfully
Executing DB put item query aws dynamodb put-item --table-name Ex2019-HostStatusTable --item "{\"HostName\" : {\"S\" : \"Host1\"}, \"Modules\" : {\"M\" : {}}, \"DAGName\" : {\"S\" : \"USW-D01\"}}"
Could not complete put Item operation for Host1
错误输出-
'aws' is not recognized as an internal or external command,
operable program or batch file.
检查 $LASTEXITCODE 变量后,尝试添加以下代码来刷新环境变量。 shell 会话必须重新收集安装程序刚刚添加的更新环境变量。查看此回复了解更多 info。
$env:Path = [System.Environment]::GetEnvironmentVariable("Path","Machine") + ";" + [System.Environment]::GetEnvironmentVariable("Path","User")
您可能还需要考虑使用带有 -wait
和 -passthru
参数的 Start-Process 来调用您的安装程序,因为 cmd 可能不会等待足够长的时间让应用程序完成安装。您可以阅读 here。我同意 David 的观点,你可以检查它是否由 运行 aws --version
安装,然后读取版本号或在 try catch 块中捕获错误。