找回密码
 新建账号

Powershell Invoke-Command Enter-PSSession New-PSSession $PROFILE

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

手机版|轻松E站

GMT+8, 2024/11/21 14:27

快速回复 返回顶部 返回列表