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

Fra*_*row 17 powershell

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

C:\Users\fmerrow\Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1
Run Code Online (Sandbox Code Playgroud)

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

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

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

我到目前为止所考虑的最好的方法是忽略$profile并改为将一些代码放入$profile.AllUsersAllHosts源/执行我的文件中,而不是从默认的$ profile位置.

欢迎提出意见和/或其他建议.

坦率

zda*_*dan 17

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

例如:

powershell -noprofile -noexit -command "invoke-expression '. ''C:\My profile location\profile.ps1''' "
Run Code Online (Sandbox Code Playgroud)

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

  • 作为参考,双重ticky('')是单个ticky内部tickies的转义序列.我花了一秒钟来弄清楚发生了什么. (4认同)
  • @Frank,这就是为什么我建议创建一个可以放在桌面或开始菜单上的快捷方式. (3认同)
  • -file 参数将为您点源文件 (3认同)

Roo*_*oop 8

您也可以在此处输入个人资料文件

C:\Windows\System32\WindowsPowerShell\v1.0\profile.ps1
Run Code Online (Sandbox Code Playgroud)

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

 $profile = "NewLocation\profile.ps1"
. $profile
Run Code Online (Sandbox Code Playgroud)

确保您使用的配置文件类型,请在此处查看详细信息

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


Jos*_*ond 8

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

通过导航到 $PROFILE 定义的位置来访问您的个人资料。(对我来说,该位置恰好是C:\Users\<username>\Documents\PowerShell\Microsoft.PowerShell_profile.ps1。然后,继续将自定义配置文件的内容移动到您想要的任何位置,(C:/NewLocation/profile.ps1,让我们假设)。将原始配置文件的内容(文件C:\Users\<username>\Documents\PowerShell\Microsoft.PowerShell_profile.ps1)替换为文本:

$profile = "C:\NewLocation\profile.ps1"
. $profile
Run Code Online (Sandbox Code Playgroud)

请记住,配置文件只是一个在您打开 powershell 后立即运行的脚本。上面的脚本将首先将 $profile 设置到新位置,因此对 $profile 变量的任何引用仍然有效,就像您移动它一样。下一行代码将使用称为点源的语法调用新的配置文件。实际上,. $profile 行只是运行您的新配置文件代码。

在这在您的系统上起作用之前,您可能必须放松执行策略。有关详细信息,请参阅https://superuser.com/questions/106360/how-to-enable-execution-of-powershell-scripts 。

接下来,您可以通过隐藏 Powershell 文件夹来减少“我的文档”目录中的混乱。只需右键单击该文件夹,选择“属性”,然后在常规选项卡下选择“隐藏”。瞧!- 您已经有效地创造了您移动个人资料位置的错觉,而无需对系统设置进行太多修改!


小智 7

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

cmd /c mklink /J c:\Users\Name\Documents\WindowsPowerShell\ d:\Powershell\Engine\Profile\
Run Code Online (Sandbox Code Playgroud)

有关交汇点的更多信息,请参见此处.

  • 这对我有用!我什至不需要使用连接点。一个简单的符号目录有效:`mklink /D` (2认同)

Mik*_*ard 6

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

  • 我简直不敢相信 MS 对这个位置进行了硬编码!我们应该如何将我们的开发内容与其他所有内容分开? (4认同)

Nec*_*ard 5

您可以$Profile.CurrentUser*通过更改个人文件夹路径来更改路径Environment.GetFolderPath(Environment.SpecialFolder.Personal)

通过 regedit

HKEY_CURRENT_USER \ Software \ Microsoft \ Windows \ CurrentVersion \ Explorer \ User Shell文件夹

在“名称”列下,选择Personal值并将其更改为所需的配置文件。

或通过 PowerShell

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

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

  • regedit 选项运行得非常好,我在 PowerShell 选项上遇到了几个错误,但它已修复。 (2认同)