
我喜歡早上新機器的氣味。
我正在自動化機器建立工作流程,該工作流程涉及我的基礎架構中的多個獨立系統,其中一些涉及 Solaris 主機上已有 15 年歷史的 Perl 腳本、PXE 引導 Linux 系統以及 Windows Server 2008 上的 Powershell。
我可以為每個單獨的部分編寫腳本,並且整合 Linux 和 Unix 自動化相當簡單,但我不知道如何將 Powershell 腳本與其餘進程可靠地結合在一起。
我更喜歡這個過程在 Linux 主機上開始,因為我想像它最終會作為一個運行在 Apache 伺服器上的 Web 應用程序,但如果它需要在 Windows 上開始,我對此猶豫不決。
我理想地想要類似的東西執行程式Linux 可以在 Windows 上運行,但這個方向的答案似乎是西格溫,儘管我非常感謝他們付出的所有努力,但從來沒有感覺不錯, 如果你明白我的意思。它對於桌面來說非常棒,並且提供了很多功能,但我覺得 Windows 伺服器應該像 Windows 伺服器一樣對待,而不是混蛋的 Unix 機器(順便說一句,這也是我反對 OSX 伺服器的論點,它們是實際上Unix)。不管怎樣,我不想選擇 Cygwin,除非這是最後也是唯一的選擇。
所以我想我要問的是是否有一種方法可以從 Linux 在 Windows 機器上執行作業。沒有西格溫。我願意接受各種想法和建議,包括「你看白痴,每個人都使用 Cygwin,所以忍住並處理它」。先致謝!
答案1
我花了幾個小時研究這個問題,最終歸結為兩個問題可行的選項(有很多不可行的選項):
- 建立一個包含託管 WebAPI 的 IIS 服務的 Windows 盒子,該 WebAPI 已進行域化並以使得來自其中的 WinRM 會話能夠正常工作的方式進行設定。
- 西格溫
使用第二個選項時,您將不得不透過 GNU/Posix 抽象層來取得實際的 Windows 位元。這確實限制了你可以用它做的事情。
第一個選項幾乎建立了一個基於 Web 的抽象層,您可以在完整的本機堆疊 Windows 安裝之上自行編寫。如果您願意投入工作,Linux 主伺服器只需執行一堆curl 呼叫即可完成需要做的事情。當腳本是「即發即忘」時,這種方法效果最好,因為建立回呼系統需要付出更多的努力。
答案2
您還可以購買跨平台調度或工作流程自動化軟體,這些軟體可以根據先前的操作甚至返回的結果在許多主機上啟動本機腳本。大型企業使用 Tivoli、UC4、Espresso(現在是 CA dSeries)等軟體來執行此操作,我在需要執行此類操作的大型企業中使用過它。僅供參考,這些通常對 Oracle 工作等內容有本地支持,讓您了解您可能正在查看的價格標籤。
(在我過去的工作中,他們也使用Cygwin反正,以便當工作負載在平台之間移動時,他們可以使用相同的 Perl 腳本而無需修改。很有意思。
您也可以嘗試建立自己的,正如 @sysadmin1138 所建議的;這將是一個有趣的項目,甚至可能最終足夠強大,可用,並且當金融導出第一次嘗試失敗時,不會在凌晨 2 點給你傳呼。
答案3
我將使用 Powershell v3.0 中引入的 Powershell Web Access 功能。這允許您從 Linux 主機使用 Powershell 腳本。
答案4
之後你想感覺多噁心,因為總是有 telnet :)
說真的,為什麼需要 Linux 伺服器來呼叫 PowerShell 腳本呢?您能否重新設計工作流程,以便 Linux 伺服器只需透過 tftp 將正確的 boot.wim 映像傳遞到 PXE 啟動的主機?過去我很幸運,在 Windows 檔案伺服器上保留了包含不同應答檔案的 Windows 映像,並使用 Linux 主機上的 tftpd 提供了自訂 WinPE 啟動映像。然後,您可以讓應答檔案呼叫正確的 PowerShell 腳本,而不必像 Cygwin 那樣處理跨平台問題。