在我的本地 PC 和本地管理的服務器上,我經常使用 $profile 腳本來設定/輸出基本資訊。例如,運行 Set-Location 來設定包含腳本的檔案夾的當前路徑,也許還有一些 Write-Host 條目來顯示最常用腳本及其預期引數的基本備忘單。
有誰知道使用 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 這樣的東西可以讓我指定在連接后運行的命令,但這不會(據我所知)給我留下一個互動式會話,這是主要目標。
uj5u.com熱心網友回復:
您無法真正自動執行將主機連接到遠程會話后 Enter-PSSession發生的任何事情- 但您可以在呼叫之前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
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/414553.html
標籤:
下一篇:如何從組中洗掉所有用戶
