Windows-Server-2008

權限問題?Putty + Plink + Pageant + Powershell + 計劃任務

  • July 18, 2013

背景

我有以下組件:

  • 一個windows server 2008 R2盒子
  • 管理員帳戶(我的)
  • 域上的服務帳戶是框的管理員
  • 安裝 Putty(包括用於命令行的 plink 和作為 ssh 公鑰生成的 Pageant)
  • 在 SSH 會話期間使用的命令的文本文件
  • 一個執行 plink 的 powershell 腳本,它使用 Start-Process 通過命令行呼叫 plink,告訴它使用 Ageant 進行 PuTTy 連接和 commands.txt 用於命令。
  • 作為我的使用者帳戶執行的計劃任務

目標

最終,讓計劃任務作為服務帳戶執行,它呼叫powershell作為服務帳戶,它執行程序並執行ssh命令。

問題

  • 當我從 powershell 命令提示符作為我的使用者帳戶執行此腳本時,它會執行。
  • 當我以我的使用者帳戶身份從計劃任務執行此腳本時,具有最高權限,並告訴它保存我的憑據,它“不執行”。
  • 通過“不執行”,這意味著它似乎產生了一個 plink.exe 的實例,這是我認為問題發生的地方(我在控制台上看不到的東西掛起)。

問題

  • 有人有一個更優雅但使用相同或相似工具的整體解決方案嗎?
  • 我的 powershell 腳本是否應該呼叫 cmd.exe 以便我至少可以將標準輸出擷取到我的日誌文件中?

劇本

如果有幫助:

#Starts the vcenter2 server.
#if the server is already started, it will tell you so.

#Stop an error from occurring when a transcript is already stopped
$ErrorActionPreference="SilentlyContinue"
Stop-Transcript | out-null

#Reset the error level before starting the transcript
$ErrorActionPreference="Continue"
Start-Transcript -path C:\Scripts\logs\StartTheVCenter2Server.log -append

#Run plink and reference the commands file to start up the server
Start-Process "C:\Program Files (x86)\PuTTY\plink.exe" -Argumentlist "-agent -m C:\Scripts\idrac_powerup_commands.txt root@[servernameredacted]" -wait -RedirectStandardOutput "C:\Scripts\logs\plinklog.log"

#Clean-up
Stop-Transcript

想法?我可能會嘗試使用 Invoke-Command 來看看我是否可以讓它至少將輸出重定向到我的日誌中。

謝謝!

plink.exe我看到的“掛起”的一般原因是提示將主機密鑰添加到系統資料庫。不過,我認為主機密鑰已經在您的系統資料庫中。我會添加-batch參數plink,看看你是否得到了徹底的失敗與掛起。至少,這應該讓你走上正確的道路。

您的Plink呼叫正在使用**-agent** (pageant) 進行身份驗證,但您尚未明確啟動該服務,因此這可能是問題所在,請將您的私鑰導出到無密碼密鑰文件並使用**-i** (identity)直接引用它) 參數,以查看是否是身份驗證有問題。還臨時添加一個**-v**(詳細)選項,然後檢查事件日誌。

引用自:https://serverfault.com/questions/476593