mirror of
https://github.com/freedbygrace/Invoke-OperatingSystemDiskDetection.git
synced 2026-08-10 18:26:54 +00:00
Update Invoke-OperatingSystemDiskDetection.ps1
This commit is contained in:
@@ -1,4 +1,4 @@
|
|||||||
<#
|
<#
|
||||||
.SYNOPSIS
|
.SYNOPSIS
|
||||||
Dynamically determines the desired operating system disk based on a calculated MediaType and BusType priority.
|
Dynamically determines the desired operating system disk based on a calculated MediaType and BusType priority.
|
||||||
|
|
||||||
@@ -10,6 +10,9 @@
|
|||||||
.PARAMETER BusTypeExclusionExpression
|
.PARAMETER BusTypeExclusionExpression
|
||||||
A valid regular expression to exclude disks for from consideration based on their bus type. By default, USB based disks will be excluded.
|
A valid regular expression to exclude disks for from consideration based on their bus type. By default, USB based disks will be excluded.
|
||||||
|
|
||||||
|
.PARAMETER DiskSizeThresholdInGB
|
||||||
|
Grants the ability to filter out disks that are smaller than the specified value in gigabytes. This is useful for situations where an Intel Optane Memory Cache might be present.
|
||||||
|
|
||||||
.NOTES
|
.NOTES
|
||||||
By default, the operating system will get deployed onto the fatest and smallest disk.
|
By default, the operating system will get deployed onto the fatest and smallest disk.
|
||||||
|
|
||||||
@@ -30,7 +33,7 @@
|
|||||||
[Parameter(Mandatory=$False)]
|
[Parameter(Mandatory=$False)]
|
||||||
[ValidateNotNullOrEmpty()]
|
[ValidateNotNullOrEmpty()]
|
||||||
[Alias('DST')]
|
[Alias('DST')]
|
||||||
[UInt32]$DiskSizeThresholdInGB = 32
|
[UInt64]$DiskSizeThresholdInGB = 1024
|
||||||
)
|
)
|
||||||
|
|
||||||
Try
|
Try
|
||||||
@@ -205,14 +208,25 @@ Try
|
|||||||
$DiskPropertyList.Add('BusType')
|
$DiskPropertyList.Add('BusType')
|
||||||
$DiskPropertyList.Add(@{Name = 'BusTypePriority'; Expression = ($DetermineBusTypePriority)})
|
$DiskPropertyList.Add(@{Name = 'BusTypePriority'; Expression = ($DetermineBusTypePriority)})
|
||||||
$DiskPropertyList.Add(@{Name = 'SizeInGB'; Expression = {[System.Math]::Round(($_.Size / 1GB), 2)}})
|
$DiskPropertyList.Add(@{Name = 'SizeInGB'; Expression = {[System.Math]::Round(($_.Size / 1GB), 2)}})
|
||||||
|
$DiskPropertyList.Add(@{Name = 'SizeInBytes'; Expression = {$_.Size}})
|
||||||
|
|
||||||
$OutputObjectProperties.DiskList = Get-PhysicalDisk | Where-Object {($_.BusType -inotmatch $BusTypeExclusionExpression) -and ($_.Size -gt ($DiskSizeThresholdInGB / 1GB))} | Sort-Object -Property @('Size') | Select-Object -Property ($DiskPropertyList)
|
$LoggingDetails.LogMessage = "$($GetCurrentDateTimeMessageFormat.Invoke()) - Attempting to search for any disk(s) matching the specified criteria. Please Wait..."
|
||||||
|
Write-Verbose -Message ($LoggingDetails.LogMessage) -Verbose
|
||||||
|
|
||||||
|
[UInt64]$DiskSizeThresholdInBytes = $DiskSizeThresholdInGB * 1GB
|
||||||
|
|
||||||
|
[ScriptBlock]$DiskListerCriteria = {($_.BusType -inotmatch $BusTypeExclusionExpression) -and ($_.Size -gt $DiskSizeThresholdInBytes)}
|
||||||
|
|
||||||
|
$LoggingDetails.LogMessage = "$($GetCurrentDateTimeMessageFormat.Invoke()) - Disk List Criteria: $($DiskListerCriteria)"
|
||||||
|
Write-Verbose -Message ($LoggingDetails.LogMessage) -Verbose
|
||||||
|
|
||||||
|
$OutputObjectProperties.DiskList = Get-PhysicalDisk | Where-Object -FilterScript ($DiskListerCriteria) | Sort-Object -Property @('Size') | Select-Object -Property ($DiskPropertyList)
|
||||||
$OutputObjectProperties.DiskListCount = ($OutputObjectProperties.DiskList | Measure-Object).Count
|
$OutputObjectProperties.DiskListCount = ($OutputObjectProperties.DiskList | Measure-Object).Count
|
||||||
$OutputObjectProperties.DesiredOperatingSystemDisk = $Null
|
$OutputObjectProperties.DesiredOperatingSystemDisk = $Null
|
||||||
$OutputObjectProperties.DesiredOperatingSystemDiskLocated = $False
|
$OutputObjectProperties.DesiredOperatingSystemDiskLocated = $False
|
||||||
$OutputObjectProperties.IsTaskSequenceRunning = $IsRunningTaskSequence
|
$OutputObjectProperties.IsTaskSequenceRunning = $IsRunningTaskSequence
|
||||||
|
|
||||||
$LoggingDetails.LogMessage = "$($GetCurrentDateTimeMessageFormat.Invoke()) - Detected $($OutputObjectProperties.DiskListCount) physical disk(s)."
|
$LoggingDetails.LogMessage = "$($GetCurrentDateTimeMessageFormat.Invoke()) - Detected $($OutputObjectProperties.DiskListCount) disk(s) meeting the specified criteria."
|
||||||
Write-Verbose -Message ($LoggingDetails.LogMessage) -Verbose
|
Write-Verbose -Message ($LoggingDetails.LogMessage) -Verbose
|
||||||
|
|
||||||
Switch ($OutputObjectProperties.DiskListCount -gt 0)
|
Switch ($OutputObjectProperties.DiskListCount -gt 0)
|
||||||
|
|||||||
Reference in New Issue
Block a user