3

我创建了需要从 Azure 文件存储下载一些文件的 VM。我正在寻找一种自动化的方法,我正在尝试 Azure VM Run 命令脚本。

第一步 CmdKey 一切正常,但下一步是:

net use Z: \\my123storageaccount.file.core.windows.net\databases /u:AZURE\my123storageaccount sskhgkghgkuytiytru...==

这些消息失败。

当我登录该虚拟机并在 PowerShell 窗口中运行该命令时,它可以正常工作而不会出现任何错误。

可能有帮助的一件事是错误中的存储帐户名称正在修剪我拥有的第一个字母。例如,如果它在错误中被称为 MyStorageAccount,它会说 yStorageAccount.file.core.windows.net

任何帮助

4

4 回答 4

1

对我来说,问题在于,根据Azure 文档,“脚本在 Windows 上作为系统运行”。因此,当您以普通用户身份登录时,该用户没有保存凭据,也无法查看已安装的驱动器内容。

要解决此问题,您可以使用psexec(来自PSToolspackage)以您的普通用户身份运行。例如:

psexec.exe \\your-ip -u your-user -p your-pass cmdkey /add:...
psexec.exe \\your-ip -u your-user -p your-pass net use Z: \my123storageaccount.file.core.windows.net\databases /u:AZURE\my123storageaccount sskhgkghgkuytiytru...==

注意:由于伏都教黑魔法,您必须使用形式psexec.exe \\your-ip而不是仅仅psexec.exe作为系统用户,否则可能会惹恼比利·戈茨(Billy Goates)。

于 2019-11-27T17:05:17.360 回答
0

您可以像这样复制文件。可以使用 Azure 门户中共享的上下文菜单中的“连接”从 Azure 复制 powershell 命令。如果这不起作用可能是连接性或可能与 SMB 相关

$buildSource = 'M:\build\'

$acctKey = ConvertTo-SecureString -String "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" -AsPlainText -Force
$credential = New-Object System.Management.Automation.PSCredential -ArgumentList 
"Azure\wserverBuild", $acctKey
New-PSDrive -Name M -PSProvider FileSystem -Root "\\wserverBuild.file.core.windows.net\build" -Credential $credential -Persist

Copy-Item  'M:\build\' -Destination 'C:build' -Recurse
于 2018-08-17T07:21:54.733 回答
0

如果您转到存储帐户-> 文件,则可以复制映射驱动器所需的 powershell 命令。

在此处输入图像描述

于 2018-08-17T10:16:55.753 回答
0

更新

在我这边,我可以使用 Azure VM 运行命令脚本从 Azure 文件存储下载一些文件。

主要步骤如下:

  • 从我的存储帐户文件连接复制脚本。

  • 将脚本粘贴到 Azure 虚拟机-运行命令-RunPowerShellScript-PowerShellScript。

在此处输入图像描述

根据this doc,运行命令需要Microsoft.Compute/virtualMachines/runCommand/actionContributor角色及更高角色拥有的权限。请检查这一点。

此外,登录 Azure VM 时检查 Azure VM 代理,从任务管理器中查找进程名称 WindowsAzureGuestAgent.exe。

参考:Azure 虚拟机代理概述

于 2018-08-17T08:50:29.333 回答