执行此代码时,我收到以下错误:
$filesExist = Test-Path($file)
if ($filesExist) {
$shell_app=new-object -com shell.application
$zip_file = Get-Item "$mindCrackFolder\files.zip"
$destination = Get-Item $mindCrackFolder
$destination.Copyhere($zip_file.items(), 0x14)
#Remove-Item "$zip_file"
#Remove-Item "install.ps1"
}
错误:
Method invocation failed because [System.IO.FileInfo] doesn't contain a method named 'items'.
At C:\Users\User1\Desktop\ps install\install.ps1:33 char:5
+ $destination.Copyhere($zip_file.items(), 0x14)
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidOperation: (:) [], RuntimeException
+ FullyQualifiedErrorId : MethodNotFound
但是我已经将$ destination转换为要操纵的IO对象了?我可以第一次尝试使用PS来获得任何帮助。
答案 0 :(得分:2)
这与$ destination无关。首先评估$zip_file.items()
,并且错误消息告诉您Get-Item
返回的.NET System.IO.FileInfo对象没有Items()
方法。 Get-Item
仅返回提供有关文件大小,上次写入时间,只读或不等的信息的对象。您不能使用Get-Item访问ZIP文件的内容。
如果您需要提取ZIP文件的内容,请考虑使用PowerShell Community Exensions' Expand-Archive
cmdlet。
答案 1 :(得分:0)
错误在于讨论您在= items()
上使用$zip_file
方法的对象。 Powershell没有内置的zip支持,你必须创建它(使用shell.application com-object,google)或添加.net库。 $zip_file
只是一个简单的FileInfo对象,就像你从dir
(Get-ChildItem)得到的对象一样。它不包含items()
方法。
解决方案:如前所述,google powershell zip files
了解如何在PowerShell中使用zip文件。我的建议是DotNetZip
答案 2 :(得分:0)
我不知道你从中学到了什么以及在哪里,但是你似乎错误地复制了一些代码并进行了特别的更改。尝试下面的脚本,它可以做你想要的:
$shell_app=new-object -com shell.application
$filename = "test.zip"
$zip_file = $shell_app.namespace((Get-Location).Path + "\$filename")
$destination = $shell_app.namespace((Get-Location).Path)
$destination.Copyhere($zip_file.items(), 0x14)
items
和copyHere
方法在FileInfo
个对象上不可用,这是您从Get-Item
获得的。如上所示使用它们。