我在 Octopus deploy 中有一个 powershell 步骤,可以在部署网站之前从远程机器上的 zip 文件中复制一些必备文件。
$source='\\RemoteMachine\Artifacts\ZipFile.zip\ChildFolder\FolderToCopy'
$target='C:\inetpub\wwwroot\Web';
if (!(Test-Path $target -PathType Container))
{
New-Item $target -Type Directory;
Write-Output "Created folder $target";
}
$shellApplication = New-Object -com shell.application;
$zipPackage = $shellApplication.NameSpace($source);
$targetFolder = $shellApplication.NameSpace($target);
Write-Output "Copying files...";
$targetFolder.CopyHere($zipPackage.Items())
Write-Output "Copy done";
但是,这似乎不起作用,我收到一个错误
You cannot call a method on a null-valued expression.
At C:\Windows\system32\config\systemprofile\AppData\Local\Tentacle\Temp\c2f0444d-f099-49ce-ad17-a8aa47c4703b.ps1:15 char:1
+ $targetFolder.CopyHere($zipPackage.Items())
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidOperation: (:) [], ParentContainsErrorRecordException
+ FullyQualifiedErrorId : InvokeMethodOnNull
CopyHere
当我更改$zipPackage.Items()
为仅$zipPackage
运行 powershell 脚本但没有部署任何内容时,该错误似乎指向该行。
当我在机器上本地运行它时,它似乎工作正常,但是当我通过 octopus deploy 运行相同的东西时,它不起作用