Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Powershell 使用启动进程在远程windows计算机上安装awscli msi包_Powershell_Amazon Web Services_Packer - Fatal编程技术网

Powershell 使用启动进程在远程windows计算机上安装awscli msi包

Powershell 使用启动进程在远程windows计算机上安装awscli msi包,powershell,amazon-web-services,packer,Powershell,Amazon Web Services,Packer,我正在尝试使用packer在Windows计算机上提供awscli。要安装awscli is,请使用以下PowerShell脚本: $download_url = 'https://s3.amazonaws.com/aws-cli/AWSCLI64.msi' $downloaddestination = 'C:\Program Files\awscli.msi' $checkpath='C:\Program Files\Amazon\AWSCLI' if (Test-Path $download

我正在尝试使用packer在Windows计算机上提供awscli。要安装awscli is,请使用以下PowerShell脚本:

$download_url = 'https://s3.amazonaws.com/aws-cli/AWSCLI64.msi'
$downloaddestination = 'C:\Program Files\awscli.msi'
$checkpath='C:\Program Files\Amazon\AWSCLI'
if (Test-Path $downloaddestination) {
  # // File exists do nothing
} else {
  # // File does not exist download it
  (New-Object System.Net.WebClient).DownloadFile($download_url, $downloaddestination)
}
$env:SEE_MASK_NOZONECHECKS = 1
Start-Process $downloaddestination /qn -Wait | Out-Null
Start-Sleep -Seconds 60
if (Test-Path $checkpath) {
  Write-Host "awscli installed"
} else {
  Write-Host "Installation failed"
}

我无法安装awscli,它无法安装MSI包,即使它能够下载包。

我建议更改方法,并通过默认Python安装附带的包管理器pip安装aws cli。 按照此步骤在windows上以静默方式安装Python。然后您可以运行下面的命令,它将安装awscli

pip install awscli

您可以在windows上使用pip,这很简单:

1.在Python27文件夹中下载并安装Python2.7 for Win x64(默认)[我在使用Python3.0时遇到问题,但可能安装错误]

2.在控制面板、系统中,高级设置向用户或系统变量添加(即“新建”):
蟒蛇%蟒蛇%;C:\Python27\Lib

3.在“控制面板”、“系统”、“高级设置”中,编辑系统路径变量并在末尾添加:

;C:\Python27;C:\Python27\脚本;C:\Program Files\Amazon\AWSCLI\
4.从下载awscli包

5.现在,您可以在Windows DOS命令框中运行:“pip安装--升级awscli”

6.您可以在Windows DOS命令框、powershell或powershell ise中运行cli命令。首先在powershell或win/dos命令框中运行“aws配置”


7.然后,您可以在powershell ise中运行任何CLI或CLI SDK命令。我使用Python安装CLI,这也使更新更容易。我通常使用cloud formation,cloud formation使用userdata调用powershell运行的脚本

脚本如下所示:

mkdir c:\setup-downloads
cd \setup-downloads
curl https://www.python.org/ftp/python/3.7.3/python-3.7.3-amd64.exe --output python-inst.exe
.\python-inst.exe /quiet InstallAllUsers=1 PrependPath=1 Include_test=0
Start-Sleep -s 30
$env:Path += ";C:\Program Files\Python37"
$env:Path += ";C:\Program Files\Python37\Scripts"
pip3 install awscli
在某处创建目录
mkdir c:\setup downloads
。更改到该目录
cd\setup downloads
I然后使用curl下载python:
curlhttps://www.python.org/ftp/python/3.7.3/python-3.7.3-amd64.exe --输出python-inst.exe

然后我使用quiet模式运行安装,并将其设置为将自身安装到路径中,然后为每个人安装
\python-inst.exe/quiet installUsers=1 PrependPath=1 Include\u test=0

我等待此操作完成
Start Sleep-s 30
,但您需要重新启动powershell以实际访问python,因此我运行以下操作来设置环境变量:

$env:Path += ";C:\Program Files\Python37"
$env:Path += ";C:\Program Files\Python37\Scripts"
现在我已经安装了python,并且配置了环境变量,我可以按如下方式安装cli:

pip3 install awscli

如果运行aws--version它可以运行

我尝试了@Jasons answer,从AutoAttain syncronusCommand块调用PowerShell文件,但是,我无法识别pip3命令。。我觉得将python env路径设置为内联有点不妥

签出-这解释了当使用MSI文件时-安装可以通过编程方式启动

我的PowerShell文件现在看起来像这样

Invoke-WebRequest -Uri https://awscli.amazonaws.com/AWSCLIV2.msi -Outfile "C:\aws.msi"
Start-Process -Wait -FilePath msiexec -ArgumentList /i, "c:\aws.msi", /qn

现在,我已经在windows server上自动安装了aws cli。

您能详细解释一下吗,我认为pip不能安装在windows中,如果是,请解释完整的过程,假设该命令实际上是在远程主机上运行的(您发布的代码中没有任何内容可以做到这一点)。第一个故障排除措施可能是让安装程序创建一个日志(添加参数
/l*v C:\awscli.log
)。远程主机是特定于用户的。如果我需要提及用户id,则pwdy您可以混淆该信息。我使用的命令启动进程'C:\Program Files\awscli.msi'/qn-Wait/lv C:\awscli.log | out null找不到接受参数'/lv'的位置参数
/l*v
,您需要将安装程序的参数列表作为数组(
/qn,/l*v,C:\awscli.log
)或字符串(
“/qn/l*v C:\awscli.log”
)传递。这是票证。不需要其他语言运行时,只需在脚本中运行这两行即可!