如何在远程Powershell会话中保留凭据?

我有一个Azure文件共享,并希望从我的Azure虚拟机中使用这个 – 使用cmdkey在虚拟机上保留凭据并使用net进行安装。 这是通过在Windows Server 2012 R2的本地PowerShell会话中运行这些命令来testing的。

但是我需要将这一步添加到Azure部署脚本中。 Azure Powershell脚本从我的笔记本电脑运行,连接到Azure订阅,并使用大量variables从头开始构build虚拟机。

想通过使用Invoke-Command将variables从Azure Powershell脚本传递到新创build的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. 

replace为cmdkey / list以检查语法,并且没有错误。

 PS C:\> Invoke-Command -Session $Session -ScriptBlock $ScriptBlockContent Currently stored credentials: * NONE * 

使用Windows Update PowerShell模块(Invoke-WUInstall),在VM的本地Powershell会话上运行得很好,但是通过远程Powershell启动时没有更新。

任何方式来解决这一个?

由于Windows如何处理身份validation,因此无法使用CMDKEY通过远程PowerShell会话设置凭据,所以在使用CMDKEY时必须以交互方式完成。

引用Don Jones的话来寻找类似于你的答案:

这是Cmdkey命令的一个限制 – 不是PowerShell的东西。 但是这与Remotig处理证书的方式有关。 远程会话实际上没有获得一个凭证,它得到一个委托票,所以没有令牌实际保存。 这是全部devise,而不是你可以重新configuration。