在Powershell控制台的许多更改只会在当前会话有效。一旦关闭当前控制台,你自定义地所有别名、函数、和其它改变将会消失,除非将更改保存在windows环境变量中。这也就是为什么我们需要profile来保存一些基本的初始化工作。
四中不同的profile脚本
Powershell支持四种可以用来初始化任务的profile脚本。应用之前要弄清楚你的初始化是当前用户个人使用,还是所有用户。如果是个人使用,可以使用”当前用户profile“,但是如果你的初始化任务是针对所有用户,可是使用“所有用户profile”。
Profile | 描述 | 位置 |
所有用户 | 所有用户共有的profile | $pshome\profile.ps1 |
所有用户(私有) | powershell.exe 中验证。 | $pshome\Microsoft.PowerShell_profile.ps1 |
当前用户 | 当前用户的profile | $((Split-Path $profile -Parent)+ “\profile.ps1”) |
当前用户(私有) | 当前用户的profile;只在Powershell.exe中验证 | $profile |
我们注意到上面的四种profile有两个private。一旦声明为private,只有个microsoft的Powershell自身才会去调用,不会对其它引用powershell的组件有效。
创建自己的profile
Profile脚本并不是强制性的,换言之,profile可有可无。下面会很方便的创建自己的profile。 在控制台执行: notepad $((Split-Path $profile -Parent) + “profile.ps1”) 如果不存在profile默认会创建,在打开的记事本中输入: Set-Alias edit notepad.exe
也就是给notepad添加edit别名,保存关闭,之后重启控制台,输入: edit $((Split-Path $profile -Parent) + “profile.ps1”)
控制台会调用记事本打开之前的profile,可见edit别名已经生效。
创建全局profile
创建全局的profile也是很容易的,如上,只是文件的位置稍有改变; 需要注意的是,创建全局profile需要管理员权限,没有管理员权限,该文件或者文件夹拒绝访问。还有一点也须注意:在vista系统中,即使你拥有管理员权限,但是没有通过administrator登录,并且系统没有禁用UAC,也是拒绝更改的。除非你鼠标右键单击Powershell快捷方式,以管理员权限运行。
请尊重原作者和编辑的辛勤劳动,欢迎转载,并注明出处!
创建自己的profile并不成功啊。
notepad $((Split-Path $profile -Parent) + “profile.ps1”)
Set-Alias edit notepad.exe写到记事本
edit $((Split-Path $profile -Parent) + “profile.ps1”)执行错误,edit并没有被定义
但是notepad $(($pshome) + “\profile.ps1”)是可以的
Profile文件是在控制台打开的时候启动运行的。你必须重新打开一次控制台来测试是否有效。
原文中有个反斜杠被 过滤掉了,没有正确显示出来。应该是notepad $((Split-Path $profile -Parent) + “\profile.ps1”), 否则你生成的文件在上一级目录中,文件名也不对,当然就没有效果。但重复这个命令是可以打开看到的。
诶? 为什么我这个可以 ,不需要加\啊:
notepad $((Split-Path $profile -Parent) + “profile.ps1”)
===>
C:\Users\w0nd\Documents\WindowsPowerShellprofile.ps1
非常精彩的讲解。可惜很多地方的反斜杠被过滤之后,这个系列的很多处都出现了这样的错误,没有一一修改过来。
还是没有太明白,具体所有用户的文件在哪里呢。
来个例子会好点,谢谢楼主。
谢谢,已经用上了。https://www.osi.xin/article/show26.html