-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathMountedDiskImage.ps1
58 lines (47 loc) · 1.51 KB
/
MountedDiskImage.ps1
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
class MountedDiskImage {
# Файл образа диска
[Parameter(Mandatory)]
[ValidateNotNullOrEmpty()]
[Alias("FullName")]
[IO.FileInfo]
$Path
[Parameter(Mandatory)]
[ValidateNotNullOrEmpty()]
[Microsoft.Management.Infrastructure.CimInstance]
$Image
[Parameter(Mandatory)]
[ValidateNotNullOrEmpty()]
[char]
$DriveLetter
MountedDiskImage() { }
MountedDiskImage($Path) {
$this.Path = $Path
$this.Image = $this.GetImage()
if (-not ($this.Image.Attached)) {
$this.Mount()
}
$this.GetDriveLetter()
}
hidden [Microsoft.Management.Infrastructure.CimInstance] GetImage() {
return Get-DiskImage -ImagePath $this.Path
}
hidden [void] GetDriveLetter() {
switch ($this.Image.StorageType) {
1 { $this.GetDriveLetterISO() }
2 { $this.GetDriveLetterVHD() }
3 { $this.GetDriveLetterVHD() }
Default { throw "Неизвестный тип хранения образа диска" }
}
}
hidden [void] Mount() {
$this.Image = Mount-DiskImage -ImagePath $this.Path
}
hidden [void] GetDriveLetterISO() {
$this.DriveLetter = ($this.Image | Get-Volume).DriveLetter
}
hidden [void] GetDriveLetterVHD() {
$this.DriveLetter = (
$this.Image | Get-Disk | Get-Partition | Get-Volume
).DriveLetter
}
}