相当于 $profile 脚本的 Enter-PSSession
Enter-PSSession equivalent of $profile script
在我的本地 PC 和本地我管理的服务器上,我经常使用 $profile 脚本来 set/output 基本信息。例如 运行ning Set-Location 将当前路径设置为包含脚本的文件夹,也许还有一些 Write-Host 条目显示最常用脚本及其预期参数的基本作弊 sheet .
有谁知道在使用 Enter-PSSession 与远程服务器交互连接时做类似事情的方法吗?
据我所知,远程会话没有可用的 $profile 文件,所以我不能只在其中添加命令(并且在本地服务器上交互使用的 $profile 不会被调用你远程进入同一台服务器)。
在本地,我已将功能添加到我的本地配置文件中,以便更快地连接到特定服务器,例如:
function foo{
$host.ui.RawUI.WindowTitle = "Foo"
Enter-PSSession -computername foo.local.mydomain.com -authentication credssp -credential mydomain\adminuser
}
这对连接我来说工作正常(例如,我输入 foo,然后输入我的密码,然后我就进去了),但我仍然被扔到 C:\Users\adminuser\Documents.
我尝试在连接后向函数中添加诸如 Set-Location 命令之类的东西,但是在本地上下文(文件夹不存在)中得到 运行 然后它连接到服务器。我什至尝试将命令通过管道传递给 Enter-PSSession,但不出所料,这也不起作用。
显然,像 Invoke-Command 这样的东西允许我在连接后向 运行 指定命令,但这不会(据我所知)给我留下一个交互式会话,这是主要的目标。
在 Enter-PSSession
将您的主机连接到远程会话后,您无法真正自动执行任何发生的事情 - 但您可以执行所有您想要的代码在远程会话 before 调用 Enter-PSSession
:
function DumpMeInto {
param([string]$Path)
# Create remote session (you'll be prompted for credentials at this point)
$session = New-PSSession -ComputerName foo.local.mydomain.com -Authentication credssp -Credential mydomain\adminuser
# Run Set-Location in remote runspace
Invoke-Command -Session $session -ScriptBlock { Set-Location $args[0] } -ArgumentList $Path
# ... and then enter the session
Enter-PSSession -Session $session
}
现在您可以执行 DumpMeInto C:\temp
并且它应该将您带到 foo.local.mydomain.com
上的远程会话,其工作目录设置为 c:\temp
在我的本地 PC 和本地我管理的服务器上,我经常使用 $profile 脚本来 set/output 基本信息。例如 运行ning Set-Location 将当前路径设置为包含脚本的文件夹,也许还有一些 Write-Host 条目显示最常用脚本及其预期参数的基本作弊 sheet .
有谁知道在使用 Enter-PSSession 与远程服务器交互连接时做类似事情的方法吗?
据我所知,远程会话没有可用的 $profile 文件,所以我不能只在其中添加命令(并且在本地服务器上交互使用的 $profile 不会被调用你远程进入同一台服务器)。
在本地,我已将功能添加到我的本地配置文件中,以便更快地连接到特定服务器,例如:
function foo{
$host.ui.RawUI.WindowTitle = "Foo"
Enter-PSSession -computername foo.local.mydomain.com -authentication credssp -credential mydomain\adminuser
}
这对连接我来说工作正常(例如,我输入 foo,然后输入我的密码,然后我就进去了),但我仍然被扔到 C:\Users\adminuser\Documents.
我尝试在连接后向函数中添加诸如 Set-Location 命令之类的东西,但是在本地上下文(文件夹不存在)中得到 运行 然后它连接到服务器。我什至尝试将命令通过管道传递给 Enter-PSSession,但不出所料,这也不起作用。
显然,像 Invoke-Command 这样的东西允许我在连接后向 运行 指定命令,但这不会(据我所知)给我留下一个交互式会话,这是主要的目标。
在 Enter-PSSession
将您的主机连接到远程会话后,您无法真正自动执行任何发生的事情 - 但您可以执行所有您想要的代码在远程会话 before 调用 Enter-PSSession
:
function DumpMeInto {
param([string]$Path)
# Create remote session (you'll be prompted for credentials at this point)
$session = New-PSSession -ComputerName foo.local.mydomain.com -Authentication credssp -Credential mydomain\adminuser
# Run Set-Location in remote runspace
Invoke-Command -Session $session -ScriptBlock { Set-Location $args[0] } -ArgumentList $Path
# ... and then enter the session
Enter-PSSession -Session $session
}
现在您可以执行 DumpMeInto C:\temp
并且它应该将您带到 foo.local.mydomain.com
上的远程会话,其工作目录设置为 c:\temp