是否可以将$ profile的默认值更改为新值?

时间:2011-02-23 18:42:42

标签: powershell

所以我不想在这里创建我的个人资料文件:

C:\Users\fmerrow\Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1

我的意思是不要误会我的意思,这不是世界末日,我可以忍受它。但是,我喜欢保持root“我的文档”合理精益,每次我开始使用新的应用程序时,我真的不想在那里创建一个目录。

我一直在寻找可能隐藏此设置的地方,但到目前为止还没有运气。它似乎不在注册表或任何$PsHome文件中。

我是否必须学会忍受这个? 。 。 。或者有没有办法改变将永久“粘附”在这个系统上的$ profile的值?也就是说,要更改$profile的“默认值”?

我到目前为止所考虑的最好的方法是忽略$profile,而是将一些代码放在$profile.AllUsersAllHosts中来源/执行我想要放置的文件而不是默认值$ profile location。

欢迎评论和/或其他建议。

8 个答案:

答案 0 :(得分:16)

我唯一能想到的是在PowerShell调用中“点源”你的个人资料。

例如:

powershell -noprofile -noexit -command "invoke-expression '. ''C:\My profile location\profile.ps1''' "

通过更改invoke-expression命令指向的脚本,您可以将“配置文件”放在任何您想要的位置。然后,创建启动PowerShell的快捷方式,并将目标设置为上述命令。

答案 1 :(得分:7)

在powershell中运行此命令尝试联结:

cmd /c mklink /J c:\Users\Name\Documents\WindowsPowerShell\ d:\Powershell\Engine\Profile\

有关联结的详细信息,请参阅here

答案 2 :(得分:6)

您也可以将个人资料文件放在此处

C:\Windows\System32\WindowsPowerShell\v1.0\profile.ps1

如果您想为所有配置文件和脚本分隔一个位置,可以将上面的profile.ps1文件修改为

 $profile = "NewLocation\profile.ps1"
. $profile

确保您使用的是哪种类型的个人资料,请参阅此处的详细信息

https://technet.microsoft.com/en-ca/library/dd819434.aspx

答案 3 :(得分:4)

我认为您在现有资料中获取“新”资料的解决方案可能与您将获得的一样好。

答案 4 :(得分:2)

您可以通过更改个人文件夹路径$Profile.CurrentUser*

来更改Environment.GetFolderPath(Environment.SpecialFolder.Personal)路径

通过regedit

HKEY_CURRENT_USER \ Software \ Microsoft \ Windows \ CurrentVersion \ Explorer \ User Shell Folders

在“名称”列下,选择Personal并将值添加到您想要个人资料的位置。

或通过PowerShell

New-ItemProperty 'HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders' Personal -Value 'Your New Path Here' -Type ExpandString -Force

您必须重新启动才能生效。

答案 5 :(得分:1)

根据脚本专家文章Understanding the Six PowerShell Profiles$profile$PsHome\Microsoft.PowerShell_profile.ps1扩展而来; $pshome是powershell安装目录和只读变量;根据{{​​3}}帖子中的帖子,微软告诉我们这不能改变。

答案 6 :(得分:0)

这可能更像是一种解决方法,但我所做的是在PowerShell正在查看的位置创建WindowsPowerShell目录的符号链接副本。这更像是一种绑带技术。

答案 7 :(得分:0)

此解决方案的灵感来自RootLoop的答案:

通过导航到$ PROFILE定义的位置来访问您的个人资料。然后,将其复制到要存储它的位置(C:/NewLocation/profile.ps1)。用文本替换原始配置文件的内容:

$profile = "C:\NewLocation\profile.ps1"
. $profile

请记住,配置文件只是打开PowerShell时运行的脚本。上面的脚本将首先将$ profile设置为新位置,因此对$ profile变量的任何引用仍将像移动它一样工作。下一行代码将使用名为dot sourcing的语法调用新配置文件。实际上,。 $ profile line只是运行新的个人资料代码。

接下来,您可以通过隐藏Powershell文件夹来减少“我的文档”目录中的混乱。只需右键单击文件夹,选择“属性”,然后在常规选项卡下,选择“隐藏”。