我收到了使用 Powershell 解压缩 .zip 文件的请求。在互联网上,我多次找到以下代码:
param( [String]$newlocation, [String]$filepath)
if(($newlocation -and $filepath) -and ((test-path $newlocation) -and (test-path $filepath)))
{
Copy-Item $filepath $newlocation
$shell_app=new-object -com shell.application
$filename = $filepath.split("\")[-1]
if(Test-Path "$newlocation\$filename")
{
$zip_file = $shell_app.namespace("$newlocation\$filename")
$destination = $shell_app.namespace($newlocation)
$destination.Copyhere($zip_file.items())
}
}
当我将它实现到我的脚本中时,它发生了一些变化。以上是修改后的版本。现在我有一个错误:
Exception calling "NameSpace" with "1" argument(s): "The system cannot find the file specified. (Exception from HRESULT
: 0x80070002)"
At Z:\MyScripts\deploy.ps1:34 char:34
+ $zip_file = $shell_app.namespace <<<< ("$newlocation\$filename")
+ CategoryInfo : NotSpecified: (:) [], MethodInvocationException
+ FullyQualifiedErrorId : ComMethodTargetInvocation
然后另一个,很清楚(由第一个错误引起的
You cannot call a method on a null-valued expression.
At Z:\MyScripts\deploy.ps1:36 char:39
+ $destination.Copyhere($zip_file.items <<<< ())
+ CategoryInfo : InvalidOperation: (items:String) [], RuntimeException
+ FullyQualifiedErrorId : InvokeMethodOnNull
文件和目标路径都存在,我有权访问它们(我创建了两者)。我正在使用 PowerShell 2.0 在 Windows XP 上运行
Major Minor Build Revision
----- ----- ----- --------
2 0 -1 -1
这是我直接在控制台上运行 Powershell 时的整个转储。
我希望你们能帮助我,或者至少告诉我在哪里可以找到答案。
我已经尝试手动解压缩 zip 文件并且它有效,我可以访问文件和文件路径(因为我创建了两者)。