Private/Disk/Initialize-OSDDisk.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 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 |
<#
.SYNOPSIS Initializes any RAW Disks. Automatically selects GPT or MBR .DESCRIPTION Initializes any RAW Disks. Automatically selects GPT or MBR .EXAMPLE Initialize-OSDDisk Interactive = True Sandbox = True .EXAMPLE Initialize-OSDDisk -Confirm Interactive = True Sandbox = True .EXAMPLE Initialize-OSDDisk -Force Interactive = False Sandbox = False .EXAMPLE Initialize-OSDDisk -Confirm -Force Interactive = True Sandbox = False .LINK https://osd.osdeploy.com/module/osddisk/initialize-osddisk .NOTES 21.2.14 Initial Release #> function Initialize-OSDDisk { [CmdletBinding(SupportsShouldProcess = $true)] param ( [Parameter(ValueFromPipeline = $true)] [Object[]]$InputObject, [Parameter(ValueFromPipelineByPropertyName = $true)] [Alias('F')] [System.Management.Automation.SwitchParameter]$Force ) #================================================= # OSD Module Information #================================================= $OSDVersion = $($MyInvocation.MyCommand.Module.Version) Write-Verbose "OSD $OSDVersion $($MyInvocation.MyCommand.Name)" #================================================= # IsWinPE #================================================= if (-NOT (Get-OSDGather -Property IsWinPE)) { Write-Warning "WinPE is required for execution" Break } #================================================= # IsAdmin #================================================= if (-NOT (Get-OSDGather -Property IsAdmin)) { Write-Warning "Administrative Rights are required for execution" Break } #================================================= # PartitionStyle #================================================= if (Get-OSDGather -Property IsUEFI) { $PartitionStyle = 'GPT' } else { $PartitionStyle = 'MBR' } #================================================= # Get Clear Disks #================================================= if ($InputObject) { $ClearDisks = $InputObject } else { $ClearDisks = Get-Disk.osd -BusTypeNot USB,Virtual -PartitionStyle RAW | ` #Where-Object {($_.Size -gt 15GB)} | ` Sort-Object Number } #================================================= # Initialize-Disk #================================================= $InitializeOSDDisk = @() If ($ClearDisks) { if ($Force -eq $false) { Write-Host "" Write-Host "To Confirm Initialize-Disk on each of the following Disks, use the -Confirm -Force parameters" Write-Host "To Initialize-Disk ALL of the following Disks, use the -Force parameter" foreach ($Item in $ClearDisks) { Write-Host "Disk $($Item.Number) $($Item.BusType) $($Item.MediaType) $($Item.FriendlyName) [$($Item.PartitionStyle)]" -ForegroundColor Green -BackgroundColor Black } Break } IF ($Force -EQ $true) { if ($ConfirmPreference -eq 'Low') { Write-Host "" Write-Warning "Confirm Initialize-Disk on each of the following Disks:" foreach ($Item in $ClearDisks) { Write-Host "Disk $($Item.Number) $($Item.BusType) $($Item.MediaType) $($Item.FriendlyName) [$($Item.PartitionStyle)]" -ForegroundColor Red -BackgroundColor Black } Write-Host "" Start-Sleep -Seconds 2 } foreach ($Item in $ClearDisks) { if ($PSCmdlet.ShouldProcess("$PartitionStyle Disk $($Item.Number) $($Item.BusType) $($Item.MediaType) $($Item.FriendlyName) [$($Item.PartitionStyle)]","Initialize-Disk")){ Write-Warning "Initializing Disk $($Item.Number) $($Item.BusType) $($Item.MediaType) $($Item.FriendlyName) [$($Item.PartitionStyle)]" $InitializeOSDDisk += $Item Initialize-Disk -Number $Item.DiskNumber -PartitionStyle $PartitionStyle } } Return $InitializeOSDDisk } else { Write-Verbose "Disks are already initialized" Return $ClearDisks } #================================================= } } |