Private/New-MdtDrive.ps1
function New-MdtDrive { <# .SYNOPSIS Creates a new persistent PS drive mapped to an MDT share. .NOTES Author: Aaron Parker Twitter: @stealthpuppy .PARAMETER Path A path to a Microsoft Deployment Toolkit share. .PARAMETER Drive A PS drive letter to map to the MDT share. #> [CmdletBinding(SupportsShouldProcess = $true)] [OutputType([System.String])] param ( [Parameter(Mandatory = $false, Position = 0)] [ValidateNotNullOrEmpty()] [System.String] $Drive = "DS099", [Parameter(Mandatory = $true, Position = 1)] [ValidateNotNullOrEmpty()] [System.String] $Path ) # Set a description to be applied to the new MDT drive $Description = "MDT drive created by $($MyInvocation.MyCommand)" if ($mdtDrives = Get-MdtPersistentDrive | Where-Object { ($_.Path -eq $Path) -and ($_.Description -eq $Description) }) { Write-Verbose -Message "Found MDT drive: $($mdtDrives[0].Name)" $output = $mdtDrives[0].Name } else { if ($PSCmdlet.ShouldProcess("$($Drive): to $($Path)", "Mapping")) { $params = @{ Name = $Drive PSProvider = "MDTProvider" Root = $Path #NetworkPath = $Path Description = $Description ErrorAction = "Stop" } New-PSDrive @params | Add-MDTPersistentDrive # Return the MDT drive name $psDrive = Get-MdtPersistentDrive | Where-Object { $_.Path -eq $Path -and $_.Name -eq $Drive } Write-Verbose -Message "Found: $($psDrive.Name)" $output = $psDrive.Name } } Write-Output -InputObject $output } |