PowerShell實現自動化加域並加密憑據

困擾了一個禮拜的加域問題,今天終於給拿下,想分享下這個過程。
shell

上個禮拜有User向領導抱怨他們的VM測試環境,須要不時的revert回去,須要從新加域。因爲這邊就只有個人帳號有加域的權限,且我還不具有委派權限給其餘帳號來加域。很明顯,若是我哪天休假,或者我不在office時候,User就應不了急。手動讓我key密碼的過程影響了user的工做效率,因而我想辦法來解決這個問題。bash

方案一:將.bat腳本轉換爲.exe可執行文件dom

第一個方案是以前一個同事幫我想出來的,使用早期加域使用的netdom命令寫成bat文件,而後使用一款名爲「Bat_To_Exe_Converter」的免費工具將bat轉換爲exe文件,以此來將顯示在bat中的明文來做隱藏。ide

測試了幾臺機器還比較順利,可是我的以爲轉換出來的exe文件執行起來有時並不那麼流暢,既然Microsoft有PowerShell的命令,這個裏面必定能夠大做文章,因而開始個人PowerShell之路。工具

在開始以前,我貼出bat文件用到的加域命令。測試

@ehco off
echo You login account: %username%

echo Start Joindomain...
netdom join %computername% /domain:contoso.com /UserD:contoso.com\jason /PasswordD:P@ssword
ehco.
pause

方案二: PowerShell加密憑據加密

以前短暫接觸過PowerShell,好比處處AD的用戶和計算機等等,可是總體來講對PowerShell不是很熟悉。因而花了幾天功夫去找各種文檔。
blog

核心思想就是要可以將明文密碼加密來使用,且還要可以跨計算機和用戶來加密使用。文檔

一樣貼出個人PowerShell代碼,便於理解。get

個人環境有兩臺VM。

PC1: SHSV2018

PC2:    SHSV2019

首先我將在PC1上創建一個share folder,設置權限爲Everyone讀取,裏面將存儲加密後的密碼文件,文件命名爲Password.txt。

加密過程代碼,使用128位AES加密。加密一個明文密碼並保存文件到PC1上

$File = "\\SHSV2018\SharePath\Password.txt"
[Byte[]] $key = (1..16)
$Password = "P@ssword" | ConvertTo-SecureString -AsPlainText -Force
$Password | ConvertFrom-SecureString -key $key | Out-File $File

從PC1訪問加密密碼文件

$File = "\\SHSV2018\SharePath\Password.txt"
[Byte[]] $key = (1..16)
Get-Content $File | ConvertTo-SecureString -Key $key

wKioL1g2uKWz6BzVAAFZlAwEfUk723.png

從PC2訪問加密密碼文件

$File = "\\SHSV2018\SharePath\Password.txt"
[Byte[]] $key = (1..16)
Get-Content $File | ConvertTo-SecureString -key $key


wKiom1g2uc3gKq--AADFEasogeo219.png

經過以上兩個截圖能夠看出,遠程訪問加密文件並實現解密已經能夠成功實現。下一步就將整個加域的過程。

 $File = "\\SHSV2018\SharePath\Password.txt「
 [Byte[]] $key = (1..16)
 $encpasswd = Get-Content $File
 $ss = ConvertTo-SecureString -String $encpasswd -Key $key
 $cred = New-Object System.Management.Automation.PSCredential 'contoso\jason', $ss
 Add-Computer -DomainName contoso.com -Credential $cred

保存整段代碼爲AddJoindomain.ps1,右鍵選擇「Run with PowerShell」來執行整段代碼,實現加域過程。


wKioL1g2vD2AGSfFAAB-0jJUMaE931.png


參考以下文章來重點理解PowerShell加密的過程。

http://www.adminarsenal.com/admin-arsenal-blog/secure-password-with-powershell-encrypting-credentials-part-1/

相關文章
相關標籤/搜索