Private/Import-MdtModule.ps1
function Import-MdtModule { <# .SYNOPSIS Tests for and imports the MDT PowerShell module. Returns True or False depending on whether the module can be loaded. .NOTES Author: Aaron Parker Twitter: @stealthpuppy .PARAMETER Force Re-imports the MDT module and its members, even if the module or its members have an access mode of read-only. #> [CmdletBinding(SupportsShouldProcess = $false)] [OutputType([System.Boolean])] param ( [Parameter(Mandatory = $false)] [System.Management.Automation.SwitchParameter] $Force ) # Get path to the MDT PowerShell module via the Registry and fail if we can't read the properties $RegPath = "HKLM:SOFTWARE\Microsoft\Deployment 4" if (Test-Path -Path $RegPath -ErrorAction "SilentlyContinue") { Write-Verbose -Message "Get MDT details from registry at: $RegPath" $MdtReg = Get-ItemProperty -Path $RegPath -ErrorAction "SilentlyContinue" } else { $Msg = "Unable to read MDT Registry path properties at '$RegPath'. Ensure the Microsoft Deployment Toolkit is installed and try again." throw [System.IO.DirectoryNotFoundException]::New($Msg) } # Attempt to load the module $MdtInstallDir = Resolve-Path -Path $MdtReg.Install_Dir $MdtModule = [System.IO.Path]::Combine($MdtInstallDir, "bin", "MicrosoftDeploymentToolkit.psd1") if (Test-Path -Path $mdtModule -ErrorAction "SilentlyContinue") { try { Write-Verbose -Message "Loading MDT module from: $MdtInstallDir." $params = @{ Name = $MdtModule ErrorAction = "Stop" Force = if ($Force) { $true } else { $false } } Import-Module @params Write-Output -InputObject $true } catch { throw $_ } } else { $Msg = "Unable to find the MDT PowerShell module at $MdtModule. Ensure the Microsoft Deployment Toolkit is installed and try again." throw [System.IO.FileNotFoundException]::New($Msg) } } |