Powershell
將 SecureString 密碼從 CMD 文件發送到 Powershell
我有一個 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"