如何使用Powershell 2.0提取.iso文件?

时间:2019-07-03 11:32:46

标签: powershell powershell-2.0

我有一个iso文件,需要通过powershell脚本将其提取。

我们还有适用于Powershell 2.0的任何解决方案吗?

4 个答案:

答案 0 :(得分:1)

为此,您将需要第三方软件。您可以使用7Zip做到这一点:

7z.exe x -y -o C:\OutputDirectory X:\YOURISOFILE.iso

其中

x  (Extract with full paths) command
-o (set Output directory) switch
-y (assume Yes on all queries) switch

答案 1 :(得分:1)

您可以使用DiscUtils之类的工具来执行此操作,该工具可以针对.NET 2.0进行编译,因此可以在Windows 7的OOB PowerShell 2.0中使用。

  1. 下载/克隆DiscUtils
  2. 在Visual Studio中或使用具有默认选项的msbuild构建整个解决方案
  3. 导入DiscUtils.Iso9660程序集的.NET 2.0版本并开始提取:

$isoPath = "C:\path\to\image.iso"
$destination = "C:\Output"

# Import DiscUtils.Iso9660 lib
Add-Type .\DiscUtils\Library\DiscUtils\bin\Release\net20\DiscUtils.Iso9660.dll

# Open a filestream to the ISO
$isoStream = (Get-Item $isoPath).OpenRead('Open')

# Create a CDReader to read the disc image
$reader = [DiscUtils.Iso9660.CDReader]::new($isoStream, $true)

# Enumerate all directories and create in destination:
$reader.GetDirectories('\', '*', 'AllDirectories') |Foreach-Object {
    $null = mkdir (Join-Path $destination $_)
}

# Enumerate all files and copy them to the destination
$reader.GetFiles('\', '*.*', 'AllDirectories') |ForEach-Object {
    try {
        $newFile = New-Item (Join-Path $destination $_) -ItemType File
        $newFileStream = $newFile.OpenWrite()
        $isoFileStream = $reader.OpenFile($_, 'Open')
        $isoFileStream.CopyTo($newFileStream)
        $newFileStream.Close()
    }
    finally {
        $isoFileStream.Dispose()
        $newFileStream.Dispose()
    }
}

答案 2 :(得分:0)

您可以使用以下命令Mount-DiskImage -ImagePath "*.ISO"

使用该命令,您可以安装磁盘映像以进行进一步的操作。” 使用上述命令挂载映像后,可以使用复制操作命令

$ sudo cp *File Name* /*Location*/复制文件

$ sudo cp -r *folder names* /*location*/到递归副本目录

完成操作后,Dismount-DiskImage -ImagePath "*.ISO"将卸下图像

答案 3 :(得分:0)

对于 64 位:

%ProgramFiles%\7-Zip\7z.exe x -y -o"C:\OutputDirectory" "C:\YOURISOFILE.iso"

对于 32 位:

%ProgramFiles(X86)%\7-Zip\7z.exe x -y -o"C:\OutputDirectory" "C:\YOURISOFILE.iso"

输出目录必须没有空格!