Windows-Server-2008
權限問題?Putty + Plink + Pageant + Powershell + 計劃任務
背景
我有以下組件:
- 一個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**(詳細)選項,然後檢查事件日誌。