Swo*_*gan 11 windows powershell user-profile
我想知道如何更改 $profile 变量指向的位置。
PS H:\> $profile
H:\WindowsPowerShell\Microsoft.PowerShell_profile.ps1
Run Code Online (Sandbox Code Playgroud)
H:\ 是网络共享,所以当我创建我的配置文件并加载 powershell 时,我得到以下信息:
安全警告只运行您信任的脚本。虽然来自 Internet 的脚本很有用,但此脚本可能会损害您的计算机。是否要运行 H:\WindowsPowerShell\Microsoft.PowerShell_profile.ps1?[D] 不运行 [R] 运行一次 [S] 暂停 [?] 帮助(默认为“D”):
根据微软的说法,$profile 的位置由 %USERPROFILE% 环境变量决定。这不是真的:
PS H:\> $env:userprofile
C:\Users\username
Run Code Online (Sandbox Code Playgroud)
例如,我有一台 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
\
Run Code Online (Sandbox Code Playgroud)
这是 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
\
Run Code Online (Sandbox Code Playgroud)
由于 $profile 实际上不是由 %USERPROFILE% 决定的,我该如何更改它?显然,任何涉及更改 homedrive 或 homepath 的事情都不是我正在寻找的解决方案。
小智 15
正如 @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>
Run Code Online (Sandbox Code Playgroud)
以上是我的,我想你会得到类似的东西
CurrentUserAllHosts : H:\WindowsPowerShell\profile.ps1
CurrentUserCurrentHost : H:\WindowsPowerShell\Microsoft.PowerShell_profile.ps1
Run Code Online (Sandbox Code Playgroud)
为了编辑这些路径,您有两种方法
编辑您在HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell 文件夹Personal下找到的名称的项
我没有测试这个,在链接的线程中,用户说它必须进行调整才能工作,但我认为它应该很容易通过。
问题
New-ItemProperty
'HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders'
Personal -Value 'Your New Path Here' -Type ExpandString -Force
Run Code Online (Sandbox Code Playgroud)
无论哪种方式,您都必须重新启动 Power Shell(或 windows 终端)才能生效。然后您可以使用 再次检查$profile | select *。
小智 6
我使用的是 Windows 10,也遇到了同样的问题。我能够通过更改Locationin来修复它Document Properties。
我的$profile被 UNC 路径引用(例如\\server\path\to\my\document\WindowsPowerShell\Microsoft.PowerShell_profile.ps1)。当 Powershell 尝试执行此操作时,我收到了安全警告。
要解决此问题:
我遇到了与 OP 相同的问题,并且由于严重锁定的环境,我无法更改 PS 执行策略,并且无法选择从 DFS 网络共享移动我的整个配置文件,但我需要一个$Profile.
该配置文件是从多个地方读取的,由以下人员发现:
$profile | select *
Run Code Online (Sandbox Code Playgroud)
它应该返回您的配置文件的位置,相对于您正在运行的 PowerShell 版本。
您应该能够将其放置在这些位置中的任何一个位置。有一个偏好的顺序 - 但我不记得它是什么。更重要的是,它让您可以选择本地位置,这意味着您不会遇到阻止脚本从 UNC 路径运行的问题。
对我来说,我能够将我的Microsoft.VScode_profile.ps1文件放在里面C:\Program Files\PowerShell-7.0.2-win-x64\(我运行 PS 7.0.2 的地方)。
小智 5
您也可以在Stack Overflow上查看这篇文章。迄今为止提供的最佳解决方案(对于我几乎相同的问题)是将 $profile.AllUsersAllHosts 更改为“点源”您自己选择的另一个文件。
到目前为止,我没有看到任何迹象表明您可以更改 $profile 本身的默认值。
| 归档时间: |
|
| 查看次数: |
19108 次 |
| 最近记录: |