internal/functions/Get-CFXFSLogixPath.ps1
function Get-CFXFSLogixPath { [CmdletBinding()] param ( [Parameter(Mandatory = $true)] [string[]] $FSLogixProfileRootPath, # FSLogix Folder Name Pattern [Parameter(Mandatory = $false)] [string] $FSLogixFolderPattern, # FSLogix VHDX Name Pattern [Parameter(Mandatory = $false)] [string] $FSLogixVHDXPattern, # Username used for logon (SAMAccountName) [Parameter(Mandatory = $true)] [string] $Username, # Active Directory SID of the user [Parameter(Mandatory = $true)] [string] $SID ) begin { # Calculate Profile Folder name $profileFolderName = $FSLogixFolderPattern -replace "%SID%",$SID -replace "%username%",$Username if($profileFolderName -like "*%*") {throw "Could replace all maps in ($FSLogixFolderPattern). Please only use %SID% or %Username%."} # Calculate profile virtual disk name $profileVHDXName = $FSLogixVHDXPattern -replace "%SID%",$SID -replace "%username%",$Username if($profileVHDXName -like "*%*") {throw "Could replace all maps in ($FSLogixFolderPattern). Please only use %SID% or %Username%."} } process{ $paths = foreach ($provider in $FSLogixProfileRootPath){ $path = Join-PSFPath $provider $profileFolderName $profileVHDXName Write-PSFMessage -Level Verbose -Message "Calculated FSLogix path for $username on $provider as: $path" if(Test-Path $path){ throw"$path already exists." } $path } $paths } } |