Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Операционные системы » Microsoft Windows » Сценарии для Windows

Модерирует : KLASS, IFkO

 Версия для печати • ПодписатьсяДобавить в закладки
На первую страницук этому сообщениюк последнему сообщению

Открыть новую тему     Написать ответ в эту тему

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
   }
}

Всего записей: 3521 | Зарегистр. 16-08-2012 | Отправлено: 16:36 18-01-2020
Открыть новую тему     Написать ответ в эту тему

На первую страницук этому сообщениюк последнему сообщению

Компьютерный форум Ru.Board » Операционные системы » Microsoft Windows » Сценарии для Windows


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru