如果我的配置文件路径包含撇号,如何创建PowerShell配置文件?

时间:2010-12-21 16:01:18

标签: powershell

我正在尝试设置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文件夹”,这个文件尚未被提及。

2 个答案:

答案 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