我想在我的PowerShell配置文件加载脚本中包含某些,这使我可以轻松浏览不同的文件夹(不同的代码存储库)。
我已经看过使用New-PSDrive的示例,但我认为别名是一种更平滑的方式。只有的别名感觉更好。
我正在寻找类似的东西:
(在profile.ps1中)
New-Item alias:foo -value c:\repos\my\code\here
...稍后在powershell控制台中......:
cd $foo
瞧!我现在站在c:\repos\my\code\here
目录。
什么是正确的方法?
编辑:我已经将Martins的回答标记为非常直接,但我建议您也阅读Matt的回答,它有一些很好的观点。< / p>
答案 0 :(得分:8)
我会创建一个包含所有存储库的$repos
哈希表:
$repos = @{
angular = 'c:\repos\my\angular\here'
typescript = 'c:\repos\my\typescript\here'
csharp = 'c:\repos\my\csharp\here'
}
将它放在$profile
中,您可以更改目录:
cd $repos.angular
甚至使用制表符!
答案 1 :(得分:4)
$var = 'c:\repos\my\code\here'
cd $var
答案 2 :(得分:3)
什么是正确的方法?
没有正确或错误的方法。别名很有用,但它们只适用于通过其他名称调用其他cmdlet。您无法更改设置或添加参数等。
要考虑的其他事项是在个人资料中的自定义函数中使用Push-Location
和Pop-Location
!这样你就可以改变到你需要的地方,然后回到你完成的地方。
function myfolder{
Push-Location c:\temp
}
function imdone{
Pop-Location
}
使用更改目录将myfolder
调用到c:\temp
。做你的东西......甚至改成其他目录。 imdone
会在您致电myfolder
之前将您带回之前的位置。添加更多目录以进行翻转可能会使此复杂化,但您可以将堆栈命名为返回。 Push和Pop非常强大。
这可以很容易地与Martin's answer结合使用,以获得更加强大的配置文件,从而更容易进行集中更改。
即使您不具备Push-Location
和Pop-Location
的功能,您也可以在功能中使用cd "path"
并根据需要命名。
function tmp{cd "c:\temp"}
请注意,不要使用可能已经使用的名称。您最终可能会遇到precedence issue
答案 3 :(得分:0)
使用了Martin's和Matt's提供的解决方案 和 创建了以下解决方案,可以轻松导航到我的存储库并返回到原始位置。
$repos = @{
play= 'H:\0_PlayGround\play'
training= 'H:\0_PlayGround\training-tracker'
}
function goTo(){
param (
[parameter (Mandatory=$true, position=0, ParameterSetName='path')]
[string ]$path
)
Push-Location ($path)
}
function goBack{
Pop-Location
}
使用:
进行调用goto $repos.play
goback