shell 命名空间上的 Powershell ParentContainsErrorRecordException
Powershell ParentContainsErrorRecordException on shell namespace
我正在尝试编写一个解压 powershell 脚本,但我 运行遇到了 $shell.NameSpace()
函数的问题。
function unzip ($sourceFile, $destination){
$shell = new-object -com shell.application
$zip = $shell.NameSpace($sourceFile)
foreach($item in $zip.items()){
$shell.Namespace($destination).copyhere($item) #Error here
}
}
unzip "$PWD\folder.zip" $PWD
当我 运行 这样做时,我在第二次 $shell.NameSpace()
调用时遇到错误。
You cannot call a method on a null-valued expression.
At C:\scriptDir\unzipScript.ps1:9 char:6
+ $shell.NameSpace($destination).copyhere($item)
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidOperation: (:) [], ParentContainsErrorRecordException
+ FullyQualifiedErrorId : InvokeMethodOnNull
我不明白为什么 second 调用失败了。很明显 PWD
是存在的,并且是一个基于第一个参数的目录。
Shell.NameSpace 接受一个字符串。 $PWD 是一个 PathInfo 对象。您可以改用 $pwd.Path。
unzip "$PWD\folder.zip" $PWD.Path
作为替代方案,您可以使用 .Net System.IO.Compression.ZipFile class。 Here is a sample.
我正在尝试编写一个解压 powershell 脚本,但我 运行遇到了 $shell.NameSpace()
函数的问题。
function unzip ($sourceFile, $destination){
$shell = new-object -com shell.application
$zip = $shell.NameSpace($sourceFile)
foreach($item in $zip.items()){
$shell.Namespace($destination).copyhere($item) #Error here
}
}
unzip "$PWD\folder.zip" $PWD
当我 运行 这样做时,我在第二次 $shell.NameSpace()
调用时遇到错误。
You cannot call a method on a null-valued expression.
At C:\scriptDir\unzipScript.ps1:9 char:6
+ $shell.NameSpace($destination).copyhere($item)
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidOperation: (:) [], ParentContainsErrorRecordException
+ FullyQualifiedErrorId : InvokeMethodOnNull
我不明白为什么 second 调用失败了。很明显 PWD
是存在的,并且是一个基于第一个参数的目录。
Shell.NameSpace 接受一个字符串。 $PWD 是一个 PathInfo 对象。您可以改用 $pwd.Path。
unzip "$PWD\folder.zip" $PWD.Path
作为替代方案,您可以使用 .Net System.IO.Compression.ZipFile class。 Here is a sample.