我尝试在使用Powershell配置虚拟机时装载Azure文件共享。
我使用的是net use
,其值是在单击文件共享中的“Connect”时门户中提供的。我还使用cmdkey
保留了存储帐户凭据。
共享确实显示,但由于用户名或密码不正确而“断开连接”。
如果我RDP到服务器并自己运行脚本,则文件共享挂载不会出现问题。
我在脚本中添加了whoami
,以查看调配虚拟机时脚本在什么上下文下运行,它显示为“nt authority\system”
我尝试在使用Powershell配置虚拟机时装载Azure文件共享。
我使用的是net use
,其值是在单击文件共享中的“Connect”时门户中提供的。我还使用cmdkey
保留了存储帐户凭据。
共享确实显示,但由于用户名或密码不正确而“断开连接”。
如果我RDP到服务器并自己运行脚本,则文件共享挂载不会出现问题。
我在脚本中添加了whoami
,以查看调配虚拟机时脚本在什么上下文下运行,它显示为“nt authority\system”
2条答案
按热度按时间wfypjpf41#
经过大量时间的搜索和尝试,以下是我最终所做的:
Powershell脚本
此脚本由VM扩展运行。它为文件共享添加凭据并装载驱动器。
警告:它必须由用户使用脚本运行。默认情况下,VM扩展作为系统运行。请参阅下面的解决方案。
以其他用户身份执行脚本:普塞克
我最终使用psexec来执行上面的脚本,作为将要使用虚拟机并需要挂载驱动器的用户。它不是现成的,所以在运行脚本时需要下载它(见下文)。PsExec是PsTools套件的一部分。
VM扩展定义
为了在创建VM时运行脚本,我使用了bicep模板来定义VM扩展。第一个是下载powerhsell脚本的链接,第二个是指向psexec的exe的链接。我使用github托管这两个文件。它们将自动下载,并通过
commandToExecute
命令可用。下面定义了一些变量:accountName
和accountPassword
是要使用该驱动器的用户的凭据。pexxcrt22#
据我所知,这是不可能的。要在此方案中访问Map的驱动器,需要将凭据(即存储帐户名称和密钥)存储在用于登录VM的用户帐户的凭据管理器存储中。
请参阅类似的question。