Powershell 在本地系统运行时,会自动搜索并且加载 $PROFILE 指定的配置文件,实际上包含四个文件,分别是- $PROFILE.AllUsersAllHosts
复制代码- $PROFILE.AllUsersCurrentHost
复制代码- $PROFILE.CurrentUserAllHosts
复制代码- $PROFILE.CurrentUserCurrentHost
复制代码 分别代表四个配置文件的文件路径,如果这些文件存在, Powershell 会自动加载它们,利用这些文件可以让 Powershell 预先做一些操作,比如在 Powershell 5.1 中系统预置了 curl 别名命令,但这个命令又和 curl.exe 参数不一样,它是一个别名,实际上是 Invoke-WebRequest,底层还依赖 Internet Explorer,很容易造成困惑,甚至造成意外,比如在 Windows Server Core 会因为没有 Internet Explrer 导致 curl 别名用不了,不好用又占了 curl ,要想使用真正的 curl 就只能带扩展名调用,想要干掉这个别名命令,可以在配置文件中删除它。
在 Powershell 中输入- $PROFILE.CurrentUserCurrentHost
复制代码 可以看到当前用户当前命令行程序的配置文件路径是- C:\Users\Wuxiancheng\Documents\PowerShell\Microsoft.PowerShell_profile.ps1
复制代码 打开这个文件,如果文件不存在,先创建文件,然后打开,输入以下命令,保存。- Remove-Item -Path Alias:\curl -ErrorAction Ignore
复制代码 以后当前用户再打开当前命令程序运行 Powershell 就没有 curl 这个别名了。
$PROFILE 只对本地电脑有效,如果基于 WinRM 服务通过 Powershell Remoting New-PSSession Enter-PSSession Get-PSSession Invoke-Command 等命令进入远端电脑会话在远端电脑上执行 Powershell 命令,$PROFILE 并不存在,想要让 Powershell 在连接远程会话时自动加载文件执行一些命令,可以使用以下命令指定远程会话启动时加载的脚本文件。- Set-PSSessionConfiguration -Name microsoft.powershell -StartupScript C:\Users\Wuxiancheng\Documents\PowerShell\Microsoft.PowerShell_profile.ps1
复制代码 如果 New-PSSession, Enter-PSSession, Invoke-Command 没有指定 -ConfigurationName 参数,会自动使用 microsoft.powershell 作为 -ConfigurationName 的值,所以改 microsoft.powershell 就可以了,如果要使用其它的会话配置,指定对应的名称就可以了。
可以使用以下命令查看系统中有哪些会话配置,注意,以下命令要在服务端系统中运行,而不是在客户端电脑上运行。- Get-PSSessionConfiguration
复制代码 下一次使用 New-PSSession 打开远程会话就会自动执行 -StartupScript 所指定文件中的命令了。如果设置没有生效,在服务端系统中重新启动一下 WinRM 服务就可以了。- Restart-Service -Name WinRM
复制代码 参考资料 Powershell Session Configurations Powershell Session Configuration Files |
|