PSSession 作為登錄使用者
我正在嘗試設置一個 Powershell 腳本,該腳本將監視在我們的一個建構伺服器上執行的 VirtualBox VM(即“Builder4”)。它偶爾會失去連接,我已經有一個腳本(伺服器上的本地)重新載入網路適配器,但我想讓它完全自動化。
我的 PSSession 已通過伺服器正確驗證,連接成功,我可以從伺服器執行命令,進行互動式會話(Enter-PSSession)等。但是,這是一個“新”會話,所以我無法管理任何已經執行的虛擬機。
伺服器設置是具有單個帳戶的 Windows Server 2012 機器。該帳戶位於伺服器本地,而不是位於公司域中(“pc-name\user”與“company.na.com\user”),並且只要伺服器正在執行,它就會保持登錄狀態。通常我們通過 RemoteDesktop 連接到伺服器。即使我使用相同的 pc 名稱、使用者名和憑據連接到 PSSession,它似乎也沒有連接到伺服器上的現有登錄名,儘管我唯一支持這一點的證據是
VBoxManage list runningvms
返回一個空列表。例如,執行以下(“test.ps1”的基本內容):whoami VBoxManage list vms echo ----- VBoxManage list runningvms
給出以下輸出:
從遠端會話
PS ...> test.ps1 win-*******\jenkins "Builder1" {vm-hash-code} "Builder2" {vm-hash-code} "Builder3" {vm-hash-code} "Builder4" {vm-hash-code} "Builder5" {vm-hash-code} "Builder6" {vm-hash-code} ----- PS ...>
從伺服器(本地)
PS ...> test.ps1 win-*******\jenkins "Builder1" {vm-hash-code} "Builder2" {vm-hash-code} "Builder3" {vm-hash-code} "Builder4" {vm-hash-code} "Builder5" {vm-hash-code} "Builder6" {vm-hash-code} ----- "Builder1" {vm-hash-code} "Builder2" {vm-hash-code} "Builder3" {vm-hash-code} "Builder4" {vm-hash-code} "Builder5" {vm-hash-code} PS ...>
正如
whoami
建議的那樣,我似乎以正確的帳戶/使用者登錄。但是,正如VBoxManage list runningvms
建議的那樣,Windows 將其視為“不同的使用者”(因為runningvms
是特定於使用者的)。無論如何都可以連接到現有登錄名而不用註銷並使用 CLI 重新登錄?每當啟動新的遠端會話(或在物理機上解鎖)時,遠端桌面似乎只需切換會話控制即可工作,所以我想這個功能是存在的。
為了完成和澄清,我需要通過 CLI 遠端連接到現有的登錄會話,而不僅僅是現有使用者。到目前為止,我還沒有能夠做到這一點。
PSSession 使用 WinRM 在遠端伺服器上執行 PS 命令。這裡的會話只是建立的會話,與RD會話無關。
如果您需要提取對正在執行的 RD/終端會話唯一的變數資訊,您可以查看 PSExec。
我將重申一些現有資訊,但希望這可以澄清事情。
您的問題不在於腳本將 PSSession 視為不同的使用者。在遠端連接方面,Windows 是基於會話的。一個使用者可能在一台伺服器上擁有多個會話,並且具有無法輕鬆相互互動的單獨程序。有一些工具可以在會話之間進行訪問,這些工具是與會話 0 中執行的系統服務互動所必需的。出於安全目的,這些會話是隔離的。遠端桌面將連接到您正在執行的會話,以允許您管理正在執行的虛擬機。
PSSession 也不是完整的互動式登錄。它不會創建一個完整的視窗“會話”。
tasklist
您可以通過使用或query session
從您的 PSSession 內部看到我在說什麼。您將看到控制台的會話 0 和另一個會話 ID,但您的 PSSession 沒有。它還會在您目前所在的會話旁邊顯示一個箭頭。在 PSSession 中時,它將是services
會話。現在,為了能夠讓您的虛擬機遠端顯示,您可以嘗試從 PSSession 內部啟動它們。然後,您可以稍後連接並檢查它們,同時重新連接到控制台會話。