Public/PSGallery/Enable-PEWimPSGallery.ps1

<#
.SYNOPSIS
Gets PowerShell Gallery working in WinPE
 
.DESCRIPTION
Gets PowerShell Gallery working in WinPE
 
.LINK
https://osd.osdeploy.com/module/functions/winpe/enable-pewimpsgallery
 
.NOTES
21.3.8 Initial Release
#>

function Enable-PEWimPSGallery {
    [CmdletBinding()]
    param (
        [Parameter(Mandatory = $true, ValueFromPipelineByPropertyName)]
        [string[]]$ImagePath,

        [Parameter(ValueFromPipelineByPropertyName)]
        [UInt32]$Index = 1
    )

    begin {
        #======================================================================================================
        # Require WinOS
        #======================================================================================================
        if ((Get-OSDGather -Property IsWinPE)) {
            Write-Warning "$($MyInvocation.MyCommand) cannot be run from WinPE"
            Break
        }
        #===================================================================================================
        # Require Admin Rights
        #===================================================================================================
        if ((Get-OSDGather -Property IsAdmin) -eq $false) {
            Write-Warning "$($MyInvocation.MyCommand) requires Admin Rights ELEVATED"
            Break
        }
        $ErrorActionPreference = "Stop"
        #===================================================================================================
    }
    process {
        foreach ($Input in $ImagePath) {
            #===============================================================================================
            $WindowsImageDescription = (Get-WindowsImage -ImagePath $Input).ImageDescription
            Write-Verbose "WindowsImageDescription: $WindowsImageDescription"

            if (($WindowsImageDescription -match 'PE') -or ($WindowsImageDescription -match 'Recovery') -or ($WindowsImageDescription -match 'Setup')) {
                $MountMyWindowsImage = Mount-MyWindowsImage -ImagePath $Input -Index $Index
                $MountMyWindowsImage | Enable-PEWindowsImagePSGallery
                $MountMyWindowsImage | Dismount-MyWindowsImage -Save
            } else {
                Write-Warning "Windows Image does not appear to be WinPE, WinRE, or WinSE"
            }
            #===============================================================================================
        }
    }
    end {}
}