iNNOKENTIY21
Silver Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Код: function Get-DiskImageVolume { <# .SYNOPSIS Функция возвращает информацию о томе, если том еще не смонтирован, монтирует .DESCRIPTION Функция возвращает информацию о томе для образа диска (ISO, VHDx). Если том еще не смонтирован, то сперва смонтирует .PARAMETER DiskImageFile Файл(ы) образа диска (ISO, VHDx) .INPUTS [System.IO.FileInfo] с информацией о файле образа диска Можно указать строку [string] с полным именем файла образа диска .OUTPUTS [Microsoft.Management.Infrastructure.CimInstance] с информацией о томе .NOTES Автор: iNNOKENTIY21 .EXAMPLE Get-DiskImageVolume -DiskImageFile "C:\Test.VHDx" === Работа с конкретным диском .EXAMPLE (Get-DiskImageVolume -DiskImageFile "C:\Test.VHDx").DriveLetter === Получение буквы диска, при необходимости с монтируется .EXAMPLE $DiskImageFile = @( "C:\Test.VHDx" "C:\ru_windows_10_business_editions_version_1909_x64_dvd_675b5388.iso" ) $DiskImageFile | Get-DiskImageVolume === Работа с массивом .EXAMPLE Get-ChildItem -Path "С:\*.ISO" | Get-DiskImageVolume === Работа с выводом команды Get-ChildItem #> [CmdletBinding()] [OutputType([Microsoft.Management.Infrastructure.CimInstance])] param ( # Файл образа диска [Parameter(Mandatory, ValueFromPipeline, ValueFromPipelineByPropertyName)] [ValidateNotNullOrEmpty()] [ValidateScript({Test-Path -Path $PSItem -PathType Leaf})] [Alias("FullName")] [IO.FileInfo] $DiskImageFile ) begin { $VHDGet = { $DiskImage | Get-Disk | Get-Partition | Get-Volume } $VHDMount = { Mount-DiskImage -ImagePath $DiskImageFile | Get-Disk | Get-Partition | Get-Volume } } process { $DiskImage = Get-DiskImage -ImagePath $DiskImageFile if ($DiskImage.Attached) { switch ($DiskImage.StorageType) { 1 { $DiskImageVolume = $DiskImage | Get-Volume } 2 { $DiskImageVolume = & $VHDGet } 3 { $DiskImageVolume = & $VHDGet } Default { throw "Неизвестный тип хранения образа диска" } } } else { switch ($DiskImage.StorageType) { 1 { $DiskImageVolume = Mount-DiskImage -ImagePath $DiskImageFile | Get-Volume } 2 { $DiskImageVolume = & $VHDMount } 3 { $DiskImageVolume = & $VHDMount } Default { throw "Неизвестный тип хранения образа диска" } } } if (-not (Test-Path -Path ($DiskImageVolume.DriveLetter + ':\'))) { throw "Не удалось смонтировать: $DiskImageFile" } $DiskImageVolume } } |
|