public/functions/Remove-PowerStubDirectAlias.ps1
|
<#
.SYNOPSIS Removes a direct alias for a PowerStub stub. .DESCRIPTION Removes a PowerShell function that was created as a shortcut for a specific stub. Also removes the alias from the saved configuration so it won't be recreated when the module loads. .PARAMETER AliasName The name of the alias to remove. .EXAMPLE Remove-PowerStubDirectAlias -AliasName dv Removes the 'dv' alias that was created for a stub. .OUTPUTS None #> function Remove-PowerStubDirectAlias { [CmdletBinding()] param( [Parameter(Mandatory = $true, Position = 0)] [string]$AliasName ) # Check if the alias exists in our config $directAliases = Get-PowerStubConfigurationKey 'DirectAliases' if (-not $directAliases -or -not $directAliases.ContainsKey($AliasName)) { throw "Direct alias '$AliasName' not found in PowerStub configuration." } # Remove the global function if it exists $existingCmd = Get-Command $AliasName -ErrorAction SilentlyContinue if ($existingCmd -and $existingCmd.CommandType -eq 'Function') { Remove-Item "function:$AliasName" -ErrorAction SilentlyContinue Write-Verbose "Removed function '$AliasName'" } # Remove from config $directAliases.Remove($AliasName) Set-PowerStubConfigurationKey 'DirectAliases' $directAliases Write-Verbose "Removed direct alias '$AliasName' from configuration" } |