Libraries/Bootloader/Bootloader.psm1
function Find-Bootloaders { [CmdletBinding()] [OutputType([hashtable])] Param ( # Parition UUID to search [Parameter(Mandatory = $false, ParameterSetName = 'PARTUUID')] [string]$PartUUID, # Label of a partition [Alias('Label', 'PartitionLabel')] [Parameter(Mandatory = $false, ParameterSetName = 'PARTLABEL')] [string]$PartLabel, # MountPoint of a currently mounted volume or partition [Alias('Volume', 'Letter', 'DriveLetter')] [Parameter(Mandatory = $false, ParameterSetName = 'MOUNTPOINT')] [string]$MountPoint, # disk device name [AllowNull] [Parameter(Mandatory = $false, ParameterSetName = 'DISKPART')] [string]$Disk, # partition number [Parameter(Mandatory = $false, ParameterSetName = 'DISKPART')] [string]$PartNum, # full device address [Parameter(Mandatory = $false, ParameterSetName = 'DEVICE')] [string]$Device ) Begin { Write-EnterFunction } Process { switch ($PSCmdlet.ParameterSetName) { 'MOUNTPOINT' { } default { $MountPoint = Mount-ComputerDiskPartition @PSBoundParameters } } $bootloaders = @{} # looking for syslinux $syslinuxcfg = Find-BootloaderSyslinuxCfg -Path $MountPoint if ($syslinuxcfg) { Write-Debug "Found syslinux bootloader configuration file." $bootloaders.Add("syslinux", @{ name = "syslinux" cfg = $syslinuxcfg.FullName -replace "$Mountpoint" }) } # looking for grub $grubcfg = Find-BootloaderGrub2Cfg -Path $MountPoint if ($grubcfg) { Write-Debug "Found grub bootloader configuration file." $bootloaders.Add("grub2", @{ name = "grub2" cfg = $grubcfg.FullName -replace "$Mountpoint" }) } # looking for refind $refindcfg = Find-BootloaderRefindCfg -Path $MountPoint if ($refindcfg) { Write-Debug "Found refind bootloader configuration file." $bootloaders.Add("refind", @{ name = "refind" cfg = $refindcfg.FullName -replace "$Mountpoint" }) } return $bootloaders } End { Write-LeaveFunction } } |