我期待在本機網路(工作組,無網域加入)中的目標電腦上執行特殊命令。
這些機器之前已經進行了配置Enable-PSremoting
等,以允許Windows遠端管理,以便我們可以在目標機器上執行以下命令。
這些命令工作正常,只是如果我想啟動一些特殊命令(例如 start-process),它們不會作為本地計算機執行。
例如,如果我在本機電腦上執行:
> Start-Process -Filepath "cmd.exe"
它啟動cmd進程。如果我遠端操作,就像這樣
Invoke-Command -Computername "my-target-ip" -ScriptBlock {Start-Process -Filepath "cmd.exe"} -Credential get-credential
cmd視窗不在目標機器上執行。
這將允許我在目標電腦上安裝一些特殊的軟體包,這些軟體包需要一些自動 GUI 配置,並且不能僅透過 powershell 進行,例如透過 GUI 暫停更新和設定標準瀏覽器應用程式。否則,一些正常的配置可以正常工作(防火牆設定、寫入檔案、啟用網路配置等)
非常感謝。
答案1
Invoke-Command
適用於非互動式命令。 IIRC,使用它你不會得到互動式提示,當然,如果你想在遠端電腦上啟動一個程序,它應該在啟動之前就存在於那裡。
如果您想在遠端電腦上使用互動式會話,您應該使用Enter-PSSession
反而:
Enter-PSSession -Computer "remote" -Credential (Get-Credential)
在此會話中,如果您確實需要,您應該能夠啟動 cmd 提示符號。
如果您需要執行許多非互動式的相關命令New-PSSession
,則 cmdlet 以及Invoke-Command -Session $session
.