Private/New-ISInstanceShortcut.ps1
function New-ISInstanceShortcut { [CmdletBinding()] param ( # XML node from ISPSInstance.config [Parameter( Mandatory = $true, Position = 0, ValueFromPipelineByPropertyName = $true, HelpMessage = "XML node from ISPSInstance.config")] [ValidateNotNullOrEmpty()] $Node, # The directory of the source component [Parameter( Mandatory = $true, Position = 1, ValueFromPipelineByPropertyName = $true, HelpMessage = "The directory of the source component")] [ValidateNotNullOrEmpty()] [string] $SourceDirectory, # The directory of the destination instance [Parameter( Mandatory = $true, Position = 2, ValueFromPipelineByPropertyName = $true, HelpMessage = "The directory of the destination instance.")] [ValidateNotNullOrEmpty()] [string] $DestinationDirectory ) begin { } process { Write-Verbose "Creating new shortcut" $ShortcutName = $Node.ShortcutName if ($ShortcutName -notmatch '.+\.(?:lnk|url)$') { $ShortcutName = $ShortcutName + ".lnk" } if ($ShortcutName -match '.+\.lnk$') { $ShortcutTarget = Join-Path $ComponentDirectory $Node.Target if ($Node.StartupArgument) { $ShortcutArguments = $Node.StartupArgument -f (Join-Path $InstanceDirectory $Node.ConfigurationFile) } } elseif ($ShortcutName -match '.+\.url$') { $ShortcutTarget = $Node.Target $ShortcutArguments = $null } $ShortcutDestination = Join-Path $InstanceDirectory $ShortcutName CreateShortcut $ShortcutTarget $ShortcutDestination $ShortcutArguments } end { } } |