Ошибка нулевого значения powershell во время распаковки - PullRequest
0 голосов
/ 15 мая 2018

Я пытаюсь загрузить zip-файл с S3 и разархивировать его в определенную папку, используя следующий скрипт:

$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 \ Администратор \ Desktop \ deploy.ps1: 9 char: 1 + $ shell.Namespace ("C: \ test \ appname \"). CopyHere ($ zip.items ())

Любая помощь будет оценена.

Спасибо

1 Ответ

0 голосов
/ 15 мая 2018

Если вы хотите придерживаться собственных команд Powershell ...

Вы можете использовать Expand-Archive (если вы используете PS v4 +) для извлечения zip-файла.

И Read-S3Object (часть AWS Tools для 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...