通过powershell从文件夹创建cab文件

时间:2015-06-12 10:05:37

标签: powershell

我想通过powershell创建文件夹及其文件的cab文件。 我试过下面的脚本,但它给了我错误。

C = [[1,2], [3,6]]

错误:

Param(
  $filepath = "D:\Script", 
  $path = "D:\Script\aCab.cab",
  [switch]$debug
  )
Function New-Cab($path,$files)
{
 $makecab = "makecab.makecab"
 Write-Debug "Creating Cab path is: $path"
 $cab = New-Object -ComObject $makecab
 if(!$?) { $(Throw "unable to create $makecab object")}
 $cab.CreateCab($path,$false,$false,$false)
 ForEach ($file in $files)
 {
 $file = $file.fullname.tostring()
 $fileName = Split-Path -path $file -leaf
 Write-Debug "Adding from $file"
 Write-Debug "File name is $fileName"
 $cab.AddFile($file,$filename)
 }
 Write-Debug "Closing cab $path"
 $cab.CloseCab()
} #end New-Cab

# *** entry point to script ***
if($debug) {$DebugPreference = "continue"}
$files = Get-ChildItem -path $filePath | Where-Object { !$_.psiscontainer }
New-Cab -path $path -files $files

我尝试从Micorosoft下载makecab.exe,但没有下载。 MakeCab.exe Link

有人可以告诉我,我做错了什么吗?

2 个答案:

答案 0 :(得分:1)

您可以检查此列表中是否存在comobject:

Get-ChildItem HKLM:\Software\Classes -ErrorAction SilentlyContinue | Where-Object {
    $_.PSChildName -match '^\w+\.\w+$' -and (Test-Path -Path "$($_.PSPath)\CLSID")
} | Select-Object -ExpandProperty PSChildName

你所犯的错误让我觉得没有注册。

c:\windows\system32文件夹中的Windows 2000似乎存在MAKECAB.EXE命令。 Here链接到文档

答案 1 :(得分:1)

从Windows Vista开始的操作系统中的makecab.makecab COMObject has been removed