Private/New-MdtPackagesFolder.ps1
Function New-MdtPackagesFolder { <# .SYNOPSIS Creates a folder in the MDT Packages node. .NOTES Author: Aaron Parker Twitter: @stealthpuppy .PARAMETER Drive An existing PS drive letter mapped to an MDT deployment share. .PARAMETER Path A new folder to create below the Packages node in the MDT deployment share. #> [CmdletBinding(SupportsShouldProcess = $True)] Param ( [Parameter(Mandatory = $True, Position = 0, ValueFromPipeline = $True)] [ValidateNotNullOrEmpty()] [String] $Drive, [Parameter(Mandatory = $True, Position = 1, ValueFromPipeline = $True)] [ValidateNotNullOrEmpty()] [String] $Path ) # Test path and create if it does not already exist If ((Test-Path -Path "$($Drive):\Packages\$Path" -Type 'Container')) { Write-Verbose "Path exists: $($Drive):\Packages\$Path" Write-Output $True } Else { # If path with multiple folders specified, create each one $folders = $Path -split "\\" $parent = "$($Drive):\Packages" # Walkthrough each folder in the path to create ForEach ($folder in $folders) { If (!(Test-Path -Path "$parent\$folder" -Type 'Container')) { If ($pscmdlet.ShouldProcess("$parent\$folder", "Creating")) { Try { New-Item -Path $parent -Enable "True" -Name $folder ` -Comments "Created by 'New-MdtPackagesFolder'" ` -ItemType "Folder" } Catch { Throw "Failed to create Packages folder." } } } $parent = "$parent\$folder" # Return status from New-Item Write-Output $? } } } |