2017-06-28 81 views
1

我的場景:通過遠程桌面連接登錄到遠程機器並以管理員身份打開命令提示符並在命令提示符下執行一些管理命令。PowerShell:如何從PowerShell以管理員身份運行遠程命令提示符命令?

我想通過我的本地機器的PowerShell自動化上述情況。

下面是我做的步驟:

  1. 要檢查我的PowerShell腳本的工作,我手動登錄到遠程機器(管理中房),並執行該命令Start-Process cmd -ArgumentList '/c cmdcommand > output.txt -Verb runas。這是在遠程機器上按預期工作,因爲我正在獲得所需的輸出。
  2. 現在,我試圖通過Invoke-Command -ComputerName computername - ScriptBlock {Start-Process cmd -ArgumentList '/c cmdcommand > output.txt -Verb runas} -Credentials $cred從本地powershell腳本執行此命令。我沒有得到任何輸出。
  3. 但是,當我嘗試執行上述命令而沒有runas參數時,我得到輸出說這個特定的命令需要管理員憑據,這是預期的。 Invoke-Command -ComputerName computername - ScriptBlock {Start-Process cmd -ArgumentList '/c cmdcommand > output.txt} -Credentials $cred

我在這裏錯過了什麼嗎?

回答

0

執行:

Enable-PSRemoting -Force 

在升高提示你的目標電腦上。然後Restart-Service WinRM

Enter-PSSession -ComputerName $rpc -Credential (Get-Credential) 
+0

感謝您的評論。我首先爲遠程通信調用了windows.powershell會話,並且通過該會話,我能夠以客戶機的管理員身份執行遠程命令。 –

0

如果你能夠遠程爲默認端點Microsoft.PoweShell,這意味着執行用戶在目標計算機的管理員。

但是在這裏,我懷疑你指定的cmdcommand實際上是在執行一些針對遠程資源的執行,因此它將成爲雙重希望問題。

如果是這樣,下面的文章將爲您解決問題。

其全部關於Credential Delegation

+0

謝謝@Prasoon的評論。我修改了我的腳本$ session = New-PSSession -ComputerName $ remoteComputer -ConfigurationName Windows.PowerShell'並在invoke命令中使用這個會話解決了我的問題。我的理解是,如果我們不明確使用會話,默認會話將windows.powershell。我不知道這是如何工作的。對此有何解釋? –

+0

默認端點是'Microsoft.PowerShell',可能在您的環境中,您可能有一個名爲'Windows.PowerShell'的端點。要查看可用端點,請登錄到目標機器並查看Get-PSSessionConfiguration cmdlet的結果。 –

相關問題