Powershell

將 SecureString 密碼從 CMD 文件發送到 Powershell

  • October 9, 2017

我有一個 CMD 文件,我必須從中執行傳遞使用者名和密碼的 Powershell 腳本:即:PowerShell -文件“%1”-電腦“%2”-使用者名“%3”-密碼“%4”。是否有從 CMD 向 powershell 腳本發送 SecureString 密碼的方法?

讓我再補充幾點,讓我的困境更清楚:所以每當我執行這個包含上述 Powershell 命令的 CMD 文件時,我都會在命令行上傳遞所有參數的值(%1% 到 %4%) . 現在,當我傳遞這些參數時,它們以明文形式傳遞,並且所有內容都以 ID 4688 並啟用了高級審計記錄到事件監視器中。我想要的是在這種情況下不可見的密碼。

不,SecureString 是一個 Powershell 結構,在舊版 cmd/batch 環境中沒有任何意義。

如果您不希望密碼可見,則需要找到另一種傳遞密碼的方式,而不是直接在命令中傳遞(這可能意味著修改您的 Powershell 腳本以接受純文字密碼參數)。

我見過人們做的最常見的事情是將PSCredential對象導出到文件中Export-CliXml,然後在呼叫腳本函式(通過Import-CliXml)之前將其導入到變數中,然後將變數傳遞給函式。這種方法的警告是導出的文件不可移植。XML 中的加密與執行導出的使用者和機器相關*。*

**編輯:**這是您可以更改 CMD 腳本以適應傳遞 PSCredential 的方法。我會在這裡假設相對路徑只是為了讓事情更短。

在您的腳本開始之前,您需要將憑證導出到文件中。

# interactively prompt for the credential
$cred = get-credential

# export the credential object to a file
$cred | Export-Clixml .\mycred.xml

現在在您的 CMD 腳本中,您基本上將呼叫 Powershell 的方式從使用更改-File為使用-Command,以便您可以在將憑證文件傳遞給腳本之前將其導入回變數。

powershell.exe -C "$cred = Import-Clixml .\mycred.xml; .\%1 -Computer %2 -Credential $cred"

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