更改 Powershell $profile 目录

更改 Powershell $profile 目录

我想知道如何改变我的 $profile 变量指向的位置。

PS H:\> $profile
H:\WindowsPowerShell\Microsoft.PowerShell_profile.ps1

H:\ 是网络共享,因此当我创建我的配置文件并加载 powershell 时,我得到以下信息:

安全警告 仅运行您信任的脚本。虽然来自 Internet 的脚本很有用,但此脚本可能会损害您的计算机。是否要运行 H:\WindowsPowerShell\Microsoft.PowerShell_profile.ps1?[D] 不运行 [R] 运行一次 [S] 暂停 [?] 帮助(默认为“D”):

根据微软的说法,$profile 的位置是由 %USERPROFILE% 环境变量决定。 这不是真的:

PS H:\> $env:userprofile
C:\Users\username

例如,我有一台 XP 机器,按照我想要的方式运行:

PS H:\> $profile
C:\Documents and Settings\username\My Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1
PS H:\> $env:userprofile
C:\Documents and Settings\username
PS H:\> $env:homedrive
H:
PS H:\> $env:homepath
\

以下是 Vista 机器的相同输出,其中 $profile 指向错误的位置:

PS H:\> $profile
H:\WindowsPowerShell\Microsoft.PowerShell_profile.ps1
PS H:\> $env:userprofile
C:\Users\username
PS H:\> $env:homedrive
H:
PS H:\> $env:homepath
\

由于 $profile 实际上不是由 %USERPROFILE% 决定的,我该如何更改它?显然,涉及更改 homedrive 或 homepath 的任何操作都不是我想要的解决方案。

答案1

正如@FrankMerrow 所说,Stack Overflow 问题你会找到答案,但正确答案是来自 Neck Beard 的那个,我将把它复制到这里。

正如 @woter324 指出的那样,执行命令$profile | select *将显示 PowerShell 获取配置文件的路径。如MS 文档

配置文件按优先顺序列出。第一个配置文件具有最高优先级。

<username>$> $profile | select *

AllUsersAllHosts       : C:\Windows\System32\WindowsPowerShell\v1.0\profile.ps1
AllUsersCurrentHost    : C:\Windows\System32\WindowsPowerShell\v1.0\Microsoft.PowerShell_profile.ps1
CurrentUserAllHosts    : C:\Users\<username>\Documentos\WindowsPowerShell\profile.ps1
CurrentUserCurrentHost : C:\Users\<username>\Documentos\WindowsPowerShell\Microsoft.PowerShell_profile.ps1
Length                 : <will vary>

以上是我的,我想你会得到类似的东西

CurrentUserAllHosts    : H:\WindowsPowerShell\profile.ps1
CurrentUserCurrentHost : H:\WindowsPowerShell\Microsoft.PowerShell_profile.ps1

为了编辑这些路径,你有两种方法

通过 regedit

Personal编辑您将在下方找到的名称的密钥HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\用户 Shell 文件夹

通过 PowerShell

我没有测试这个,在链接的线程中,一个用户说它必须进行调整才能工作,但我想它应该很容易通过。

问题

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

无论哪种方式,您都必须重新启动 Power Shell(或 Windows 终端)才能使其生效。然后,您可以使用 再次检查$profile | select *

答案2

你也可以查看这篇文章堆栈溢出。迄今为止提供的最佳解决方案(对于我几乎相同的问题)是将 $profile.AllUsersAllHosts 更改为“dot source”您自己选择的另一个文件。

到目前为止我还没有看到任何迹象表明您可以更改 $profile 本身的默认值。

答案3

我在 Windows 10 上遇到了同样的问题。我可以通过更改 来修复LocationDocument Properties

我的$profile被​​ UNC 路径引用(例如\\server\path\to\my\document\WindowsPowerShell\Microsoft.PowerShell_profile.ps1)。当 Powershell 尝试执行此操作时,我收到了安全警告。

修复这个问题:

  1. 创建到网络文件夹的映射驱动器。
  2. 转到This PC并右键单击Documents文件夹并选择Properties

    文件夹

  3. 将位置更新为映射驱动器路径

    位置设定

  4. 单击“确定”或“应用”。

答案4

我在 VMware Fusion 虚拟机中使用 Windows XP 和 Windows 8 时遇到了类似的问题:

PS C:> $profile
\\vmware-host\Shared Folders\<user>\Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1

一旦我停止“桌面”镜像(我保留了共享文件夹),问题就解决了:

PS C:> $profile
C:\Documents and Settings\Administrator\My Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1

相关内容