我正在尝试设置PowerShell配置文件,以便我的所有计算机都有一个共同的配置文件。我正在让每台机器的配置文件在我的保管箱中运行一个脚本,这样我就可以更轻松地更新所有这些脚本了。
我认为问题是我不太了解点源语法,但事实证明PowerShell真的不喜欢我的文档文件夹的路径有撇号。完整路径是:
d:\Owen's Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1
如果我删除该文件,PowerShell启动正常(当然,没有我想要的修改。)如果我创建该文件,我在PowerShell启动时出现错误:
The string starting:
At line:1 char:75
+ . 'D:\Owen`'s Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1 <<<< '
is missing the terminator: '.
At line:1 char:76
+ . 'D:\Owen`'s Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1' <<<<
+ CategoryInfo : ParserError: (:String) [], ParentContainsErrorRecordException
+ FullyQualifiedErrorId : TerminatorExpectedAtEndOfString
这不是我的错,因为脚本本身是空的。删除空文件会使其消失,创建新文件会使错误返回。当然微软预计有撇号的配置文件路径?
更新 污物。 Looks like an old issue.也许没有解决方法。 :(
更新2 我在Twitter上与@Lee_Holmes进行了对话。显然它已被修复了一些超级棒的内部Microsoft版本,但没有可用的修补程序,也没有修复时间表,因为PSH现在是Windows组件。这使得Roman Kuzmin的回答低于最合适的答案(使用其中一个全局配置文件),或者可能“重命名你的My Documents文件夹”,这个文件尚未被提及。
答案 0 :(得分:3)
报告了类似的错误,并且可能会承认: Powershell errors with apostrophe in path
错误消息不同,由于PowerShell版本不同,更有可能。
也许没有直接的解决方法:这个错误的电话不在我们的控制之下。如果重命名麻烦的目录不是一个选项,那么可能是配置文件的替代位置可能是合适的解决方案。尝试将您的个人资料设为$PsHome
。
> man about_profiles
...
For example, the Windows PowerShell console supports the following basic
profile files. The profiles are listed in precedence order. The first
profile has the highest precedence.
Description Path
----------- ----
Current User, Current Host $Home\[My ]Documents\WindowsPowerShell\Profile.ps1
Current User, All Hosts $Home\[My ]Documents\Profile.ps1
All Users, Current Host $PsHome\Microsoft.PowerShell_profile.ps1
All Users, All Hosts $PsHome\Profile.ps1
...
最后两个个人资料位置应该适合您(除非$PsHome
包含问题字符)。
答案 1 :(得分:0)
尝试使用以下转义序列:
d:\Owen`'s Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1