Powershell远程配置文件

时间:2010-06-06 17:02:41

标签: powershell powershell-remoting

在本地计算机上使用Enter-PSSession打开远程PowerShell会话时,如何在远程计算机上的配置文件中使用某个功能。

5 个答案:

答案 0 :(得分:16)

由JonZ和x0n:

  

将pssessions与默认会话配置一起使用时,不会运行任何配置文件脚本。

     

使用Enter-PSSession启动远程交互式会话时,会加载远程配置文件。此外,仅加载$pshome中的计算机级配置文件。

如果要预先配置会话(加载自定义函数,管理单元,模块等),请将配置文件脚本添加到新的会话配置(用于在启动脚本中初始化它们)远程会话配置)。

Register-PSSessionConfiguration cmdlet在本地计算机上创建并注册新的会话配置。使用Get-PSSessionConfiguration查看现有会话配置。 Get-PSSessionConfiguration和Register-PSSessionConfiguration都需要提升权限(使用“以管理员身份运行”选项启动PowerShell)。

在目标计算机中,profile.ps1包含您的所有功能:

Register-PSSessionConfiguration -Name WithProfile -StartupScript $PsHome\Profile.ps1

要使用此预配置会话,您可以从本地计算机输入:

Enter-PSSession -ComputerName $computername -ConfigurationName WithProfile

Enter-PSSession -ComputerName $computername -ConfigurationName WithProfile -Credential youradminuser@yourtargetdomain

(其中$computername是您注册pssession配置的远程服务器的主机名。)

PowerShell远程处理的一个很好的来源是Administrator's Guide to Powershell Remoting

<强>参考文献:
Powershell Remoting: Use Functions loaded in Powershell remote Profile? http://jrich523.wordpress.com/2010/07/21/update-creating-a-profile-for-a-remote-session/

了解和使用PowerShell配置文件
http://blogs.technet.com/b/heyscriptingguy/archive/2013/01/04/understanding-and-using-powershell-profiles.aspx

About_Profiles(Microsoft Docs) https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.core/about/about_profiles

六种不同的Windows PowerShell配置文件路径并使用

当前用户,当前主持人 - 控制台
$ Home [我的] Documents \ WindowsPowerShell \ Profile.ps1

当前用户,所有主持人
$ Home [我的] Documents \ Profile.ps1

所有用户,当前主持人 - 控制台
$ PSHome的\ Microsoft.PowerShell_profile.ps1

所有用户,所有主机
$ PSHome的\ Profile.ps1

当前用户,当前主持人 - ISE
$ Home [我的] Documents \ WindowsPowerShell \ Microsoft.PowerShellISE_profile.ps1

所有用户,当前主持人 - ISE
$ PSHome的\ Microsoft.PowerShellISE_profile.ps1

Windows PowerShell配置文件
http://msdn.microsoft.com/en-us/library/bb613488%28VS.85%29.aspx

此配置文件适用于所有用户和所有shell。
%windir%\ system32 \ WindowsPowerShell \ v1.0 \ profile.ps1

此配置文件适用于所有用户,但仅适用于Microsoft.PowerShell shell。
%windir%\ system32 \ WindowsPowerShell \ v1.0 \ Microsoft.PowerShell_profile.ps1

此配置文件仅适用于当前用户,但会影响所有shell。
%UserProfile%\ My Documents \ WindowsPowerShell \ profile.ps1

此配置文件仅适用于当前用户和Microsoft.PowerShell shell。
%UserProfile%\ My Documents \ WindowsPowerShell \ Microsoft.PowerShell_profile.ps1

PowerShell核心配置文件 https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.core/about/about_profiles

此个人资料适用于所有用户和所有主机。
$ env:ProgramFiles \ PowerShell \ 6 \ profile.ps1

此配置文件适用于所有用户,但仅适用于当前主机。
$ env:ProgramFiles \ PowerShell \ 6 \ Microsoft.PowerShell_profile.ps1

此配置文件仅适用于当前用户,但会影响所有主机。
$ env:USERPROFILE \ Documents \ PowerShell \ profile.ps1

此配置文件仅适用于当前用户和Microsoft.PowerShell shell。
$ env:USERPROFILE \ Documents \ PowerShell \ Microsoft.PowerShell_profile.ps1

答案 1 :(得分:5)

杰森, 在我的情况下,当我远程连接到另一台计算机时,我想让我的Powershell配置文件关注我。

我创建了一个包装函数Remote,它接受一个计算机名,创建一个会话,将你的配置文件加载到会话中,并使用enter-pssession。

以下是代码:

function Remote($computername){
if(!$Global:credential){
$Global:credential =  Get-Credential
}
$session = New-PSSession -ComputerName $computername -Credential $credential
Invoke-Command -FilePath $profile -Session $session
Enter-PSSession -Session $session
}

您可以修改Invoke-Command -FilePath参数以获取您喜欢的任何文件。

答案 2 :(得分:1)

答案 3 :(得分:0)

你做不到。使用enter-pssession启动远程交互式会话时,会加载远程配置文件。此外,仅加载$ pshome中的计算机级配置文件。如果您希望远程功能可用,则必须在远程会话配置的启动脚本中初始化它们。看一下远程服务器上的get / set-pssessionconfiguration。

答案 4 :(得分:0)

还有另一种在远程会话上使用配置文件的方法:

  1. 将选定的配置文件复制到文档文件夹中的远程服务器。例如:

0001_initial

  1. 输入PSSession

Copy-Item -Path $profile.CurrentUserAllHosts -Destination \\computername\C$\Users\MyAccountName\Documents

  1. 不要提供您的个人资料

Enter-PSSession -ComputerName ComputerName

此解决方案的缺点:

  • 您必须将个人资料一次复制到要拥有个人资料的所有计算机上
  • 每次输入PSSession时,您必须点按配置文件的来源

此解决方案的优点:

  • 不需要功能,您只需像往常一样输入PSSession
  • 您不要更改默认会话配置
  • 改变所有用户的个人资料

(感谢Jeffery Hicks for the tip about the dot sourcing