我想清除几乎所有别名定义的 PowerShell 会话,除了常见的别名,如 cd、sort、mkdir,...
完成会话后,我想恢复所有以前已知的别名。
无需卸载模块或取消注册 CmdLets。我只想为我的会话清除别名命名空间。
我可以在这样的列表中指定允许的别名:
$AllowedAliases = @(
"cd", "mkdir", "rm", "rmdir",
"cd", "mkdir", "rm", "rmdir",
"where", "select",
"sort"
)
如何保存别名并恢复它们?
或者
我怎样才能开始一个干净的 PoSh 并只加载基本别名?
到目前为止我测试过的内容:
以下几行来自我的示例模块,名为poc.psm1
.
$Aliases = @()
function Register-PoC
{ foreach ($a in (Get-Item Alias:))
{ $script:Aliases += $a
Write-Host "$($a.Name) => $($a.ReferencedCommand) ($($a.Visibility))"
Remove-Item "Alias:$($a.Name)" -Force
}
}
function Unregister-PoC
{ foreach ($a in $script:Aliases)
{ Write-Host "$($a.Name) <= $($a.ReferencedCommand)"
if (Test-Path "Alias:$($a.Name)")
{ Write-Host "$($a.Name) exists." }
else
{ Set-Alias -Name $a.Name -Value $a.ReferencedCommand -Scope $a.Visibility }
}
if (Test-Path Alias:quit) { Remove-Item Alias:quit }
Remove-Module PoC
}
Export-ModuleMember -Function 'Register-PoC'
Export-ModuleMember -Function 'Unregister-PoC'
Register-PoC
Set-Alias -Name quit -Value Unregister-PoC -Description "Unload this module." -Scope Global
使用示例:
Import-Module .\poc.psm1
dir Alias:
quit
dir Alias:
不幸的是, dir Alias: 在调用我的脚本后不为空...
另一件事是,我应该保留这些别名的一些设置,因为手动测试显示,它dir
的行为不像以前的 dir:
Remove-Item dir
Set-Alias dir Get-Item
dir
Cmdlet Get-Item an der Befehlspipelineposition 1
Geben Sie Werte für die folgenden Parameter an:
Path[0]:
因此,如果非将默认路径设置为别名,则dir
接缝会附加默认路径。Get-Item