我有一个简单的PowerShell脚本,旨在简化一些部署任务。
在脚本的早期部分,我创建了一个映射到远程服务器上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