У меня есть простой сценарий powershell, который должен облегчить некоторые задачи развертывания.Test-Path возвращает True, но ExtractToDirectory Не удалось найти путь
В более ранней части сценария я создаю виртуальный диск, сопоставленный с Z: который находится на удаленном сервере. Часть, подножки, когда он пытается распаковать файлы на удаленном сервере, отображенный в Z:
function UnzipBuild($destinationFolder)
{
Add-Type -assembly "System.IO.Compression.Filesystem"
$zipFiles = Get-ChildItem -Path $destinationFolder -Filter *.zip
foreach($zip in $zipFiles)
{
$folderName = $zip.ToString().TrimEnd(".zip")
$extractPath = Join-Path $destinationFolder $folderName
New-Item -ItemType Directory $extractPath
Write-Host "Extracting $zip to $extractPath `r`n"
[io.compression.zipfile]::ExtractToDirectory([string]$zip.FullName, "$extractPath")
}
}
Когда она достигает ::ExtractToDirectory
линии он бросает исключение
Hit Line breakpoint on 'D:\MyDeploymentScript.ps1:85'
[DBG]: PS C:\WINDOWS\system32>>
Exception calling "ExtractToDirectory" with "2" argument(s): "Could not find a part of the path
'Z:\Build_11_17_13_28\Web'."
At D:\MyDeploymentScript.ps1:85 char:9
+ [io.compression.zipfile]::ExtractToDirectory([string]$zip.FullName, "$ex ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : NotSpecified: (:) [], MethodInvocationException
+ FullyQualifiedErrorId : DirectoryNotFoundException
Но сумасшедшее если я оставил точку в том же месте и проверил путь с Test-Path
, он вернет True. Я в недоумении за то, что может быть неправильно сейчас.
[DBG]: PS C:\WINDOWS\system32>> Test-Path Z:\Build_11_17_13_28\Web
True
При отображении диска 'Z:' вы используете 'New-PSDrive'? Если это так, вы используете '-Persist'? Если нет, то метод .net, который вы вызываете, вероятно, не может видеть диск. – briantist
Test-path определяет, существует ли путь, он не проверяет, что это каталог. Является ли Z: \ Build_11_17_13_28 \ Web фактически каталогом? У вашего сценария есть разрешение на запись в каталог? Вы также можете изучить $ error [0] .exception, чтобы узнать, существует ли элемент InnerException и имеет значение. –
@briantist Хорошее добавление, которое сработало. Странно, что во время Debug я все же могу перейти к Z: даже если persist не был включен. – tyh