在本地计算机上使用Enter-PSSession
打开远程PowerShell会话时,如何在远程计算机上的配置文件中使用某个功能。
答案 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)
还有另一种在远程会话上使用配置文件的方法:
0001_initial
Copy-Item -Path $profile.CurrentUserAllHosts -Destination \\computername\C$\Users\MyAccountName\Documents
Enter-PSSession -ComputerName ComputerName
此解决方案的缺点:
此解决方案的优点: