【问题标题】:Unable to copy files using Azure Custom script extension无法使用 Azure 自定义脚本扩展复制文件
【发布时间】:2018-02-26 15:54:26
【问题描述】:

我想在预配 Azure 虚拟机后安装 NAGIOS 等工具。我想使用“Azure 自定义脚本”来安装这些工具。下面是我正在使用的代码。

作为自定义脚本发送的 Powershell 脚本:

new-item "C:\newfile.txt" -Type file
copy-item -Path "\\xxx.xx.x.x\c$\Nagios for windows" -Destination "C:\nagios" -Recurse
Start-Process "c:\nagios\NSCP-0.4.3.143-x64.msi" /qn -Wait

问题: 第一行代码正在运行(我将其作为健全性检查以确认脚本确实在运行)。但是,第二行和第三行不起作用(最重要的部分)。我也没有在日志中看到任何错误。有人可以帮帮我吗?

【问题讨论】:

  • 它将如何访问网络共享?
  • 我建议从 VM 内部运行这些命令,以便进一步排除故障。一旦您确认命令在 VM 中运行时有效,您就可以通过 CSE(自定义脚本扩展)实现它们
  • VM 暴露在互联网上。我可以看到在虚拟机中下载的脚本。我已经手动执行了脚本(通过 CSE 在 VM 中下载)并且它可以工作。但是,当 CSE 运行脚本时,只执行第一行,其他两行不执行。
  • 我怀疑这些行确实被执行但失败了?您可以将 -Debug 开关添加到 cmdlet 并查看日志显示的内容...此外,CSE 将在本地系统帐户下运行 - 该帐户是否有权访问另一台计算机上的管理文件共享?

标签: azure-virtual-machine azure-powershell


【解决方案1】:

作为一种解决方法,您可以将文件上传到 Azure 存储帐户(Blob、容器),然后使用 PowerShell 下载它。

你可以像这样创建容器:

然后通过 Azure 门户上传文件到该 blob。

然后你可以使用 PowerShell 命令来下载它:

Invoke-WebRequest -Uri https://jasondisk2.blob.core.windows.net/msi/01.PNG -outfile 'C:\'

您可以将此命令添加到 Azure 自定义脚本扩展。

希望这会有所帮助。

【讨论】:

  • 好的,我会尝试这个工作,让你知道它是否有效。但是,将 exec 文件保存在存储中会花费我很多钱,而且每次配置新服务器时我都必须下载该文件。我的解决方案是将 exe 文件从跳转主机复制到服务器,这将在同一个 VNET 中。
  • @ManjunathRao 好的,请尝试一下,Azure 存储帐户很便宜。您也可以使用跳转主机来复制该文件。如果您需要更多帮助,请告诉我:)
  • 解决方法是成功的,但是,我想使用“copy-item”将 MSI 文件从我的跳转服务器复制到新服务器。
【解决方案2】:

刚刚遇到这个。

为了深化故障排除方法,我建议您尝试将脚本作为“系统”帐户运行。你可以使用psexec tool from the sysinternal suite

您可以从提升的 cmd.exe(以管理员身份运行)使用“psexec /s powershell”启动新的 powershell 会话,并以“系统”身份运行您的脚本。

我假设您会看到下载将失败,因为在 jumphost 上的 c$ 文件共享上缺少“系统”权限。

然后您可以继续在 jumphost 上创建一个可供“所有人”访问的新共享,并尝试从那里下载 Nagios 软件。避免共享/文件夹/文件名中的任何空格和特殊字符也很好,因为它总是在脚本级别上认为不必要的“复杂”。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-03-09
    • 2021-06-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多