2015-02-23 47 views
1

我正尝试使用PowerShell脚本创建workin环境(PATH和别名)。未从脚本设置Powershell别名

powershell.exe -Command c:\workspace\script\profile.ps1 -NoExit 

剧本里面,我设置了一个别名:

Set-Alias npp "C:\Program Files (x86)\Notepad++\notepad++.exe" 

然而,开始新的终端(通过ConEmu)后,别名没有定义(如环境中的其他设置的设置是否正确)。

任何提示如何通过脚本设置别名?

回答

0

这就是profiles的用途。在您的个人资料目录($env:USERPROFILE\Documents\WindowsPowerShell)中创建一个文件profile.ps1,并将别名定义放在那里。无论何时启动PowerShell或ISE实例,都会读取配置文件。

您在常规脚本中定义的别名是易失性的,即只有在运行脚本的PowerShell进程存在时才存在。

+0

虽然如此,但我想避免使用配置文件。脚本必须签名。证书由管理员拥有,标准用户拥有加密的主文件夹。这归结为无法签署配置文件。 – jarekrozanski 2015-02-23 23:05:02

+0

我很困惑。如何在'$ env:USERPROFILE \ Documents \ WindowsPowerShell'中为脚本签发问题,而不是'C:\ workspace \ script'中的脚本? – 2015-02-24 17:26:12

0

只是为了显示更简单的方法来编辑或创建个人资料

notepad $profile 

如果配置脚本没有被创建之前 - 只需拨打

new-item -itemtype file -path $profile 
notepad $profile 
0

有两个值得关注的事情:

  • 您必须指定-Command "file"作为最后参数由于以下几点:

    如果命令的值是一个字符串,命令必须在命令的最后一个参数,因为该命令后,输入任何字符被解释为命令参数。

    不这样做意味着-NoExit参数被忽略,并且您新启动的进程立即退出,并将所有新的别名与它一起使用。

    换句话说,确保启动PowerShell中这样说:

    powershell.exe -NoExit -Command c:\workspace\script\profile.ps1 
    
  • 在脚本中定义的别名意味着它们在Script范围,而不是Global范围为配置文件定义并(读得到的帮助about_Scopes欲知更多信息)。然后

    的诀窍是创建别名的时候来定义范围:

    Set-Alias npp "C:\Program Files (x86)\Notepad++\notepad++.exe" -Scope Global 
    

    现在只要脚本运行的别名应该是可用的。