我正在尝试从S3下载zip文件并使用以下脚本解压缩到特定文件夹:
$zipfile = "myapp.zip"
$dest_loc = "C:\test\"
aws s3 cp s3://apptxtmy/$zipfile $dest_loc
$shell = New-Object -Com Shell.Application
$zip = $shell.NameSpace("$dest_loc\$zipfile")
if (!(Test-Path "C:\test\appname\")) {
mkdir C:\test\appname
}
$shell.Namespace("C:\test\appname\").CopyHere($zip.items())
但我继续收到以下错误:
您无法在空值表达式上调用方法。 在C:\ Users \ Administrator \ Desktop \ deploy.ps1:9 char:1 + $ shell.Namespace(“C:\ test \ appname \”)。CopyHere($ zip.items())
任何帮助都将不胜感激。
由于
答案 0 :(得分:0)
如果你想坚持原生的Powershell命令......
您可以使用Expand-Archive(如果您使用的是PS v4 +)来解压缩zip文件。
并Read-S3Object(AWS Tools for PowerShell的一部分)从S3获取文件。
Join-Path也可用于确保您的路径中没有双斜杠\\
的问题。
$zipfile = "myapp.zip"
$dest_loc = "C:\test"
$appname = "appname"
$bucket = "apptxtmy"
$unzip_loc = Join-Path $dest_loc $appname
$zip_loc = Join-Path $dest_loc $zipfile
Read-S3Object -BucketName $bucket -Key $zipfile -file $zip_loc
if ((Test-Path $unzip_loc) -eq $false) {
New-Item $unzip_loc -ItemType Directory
}
Expand-Archive -Path $zip_loc -DestinationPath $unzip_loc