Powershell
如何在遠端 Powershell 會話中保留憑據?
我有一個 Azure 文件共享,並希望在我的 Azure VM 中使用它 - 在使用 cmdkey 將憑據保存在 VM 上並使用 net use 掛載之後。這是通過在 Windows Server 2012 R2 上的本地 Powershell 會話中執行這些命令來測試的。
但我需要將此步驟添加到 Azure 部署腳本。一個 Azure Powershell 腳本從我的筆記型電腦上執行,連接到 Azure 訂閱並使用大量變數從頭開始建構 VM。
想出使用 Invoke-Command 將變數從 Azure Powershell 腳本傳遞到新創建的 VM 上的遠端 Powershell 會話。
$Session = New-PSSession -ConnectionUri $Uri -Credential $DomainCredential $ScriptBlockContent = { Param ($Arg1,$Arg2,$Arg3) cmdkey /add:$Arg1 /user:$Arg2 /pass:$Arg3} Invoke-Command -Session $Session -ScriptBlock $ScriptBlockContent -ArgumentList ($Share,$AccountName,$Key)
和錯誤:
PS C:\> Invoke-Command -Session $Session -ScriptBlock $ScriptBlockContent -ArgumentList ($Share,$AccountName,$Key) CMDKEY: Credentials cannot be saved from this logon session.
換成 cmdkey /list 來檢查語法,沒有錯誤。
PS C:\> Invoke-Command -Session $Session -ScriptBlock $ScriptBlockContent Currently stored credentials: * NONE *
Windows Update PowerShell 模組 (Invoke-WUInstall) 存在類似問題(並且無法修復),該模組在 VM 上的本地 Powershell 會話上執行良好,但在通過遠端 Powershell 啟動時不會更新。
有什麼辦法可以解決這個問題?
由於 Windows 處理身份驗證的方式,無法使用 CMDKEY 通過遠端 PowerShell 會話設置憑據,因此在使用 CMDKEY 時必須以互動方式完成。
從尋找與您類似的答案的執行緒中引用Don Jones :
這是 Cmdkey 命令的一個限制——不是真正的 PowerShell 東西。但這與 Remotig 處理憑據的方式有關。遠端會話實際上並沒有獲得憑證,它獲得了委託票證,因此沒有實際保存的令牌。這都是設計使然,而不是您可以重新配置的東西。