【发布时间】:2016-12-08 19:44:30
【问题描述】:
我遇到了一个有趣的问题。也许你们这些好人可以帮助我了解这里发生了什么。如果有更好的方法,我会全力以赴。
我正在 Azure 上运行 DSC 配置,并且想要映射驱动器。我读过这真的不是 DSC 的用途,但我不知道在 DSC 之外使用 Azure Scalesets 执行此操作的任何其他方式。这是我遇到问题的脚本部分:
Script MappedDrive
{
SetScript =
{
$pass = "passwordhere" | ConvertTo-SecureString -AsPlainText -force
$user = New-Object -TypeName System.Management.Automation.PSCredential -ArgumentList "username",$pass
New-PSDrive -Name W -PSProvider FileSystem -root \\azurestorage.file.core.windows.net\storage -Credential $user -Persist
}
TestScript =
{
Test-Path -path "W:"
}
GetScript =
{
$hashresults = @{}
$hashresults['Exists'] = test-path W:
}
}
我也在 SetScript 部分尝试过这段代码:
(New-Object -ComObject WScript.Network).MapNetworkDrive('W:','\\azurestorage.file.core.windows.net\storage',$true,'username','passwordhere')
我还尝试了一个简单的 net use 命令来映射驱动器,而不是花哨的 New-Object 或 New-PSDrive cmdlet。同样的行为。
如果我手动运行这些命令(New-Object/Net Use/New-PSDrive),如果我使用单独的驱动器号运行它,机器将映射驱动器。不知何故,驱动器正在尝试映射但没有映射。
我已完成的故障排除:
- 我的环境中没有域。我只是尝试创建一个规模集并运行 DSC 以使用在创建存储帐户时授予的存储帐户凭据来配置计算机。
- 我正在使用存储帐户用户 ID 和访问密钥(随机生成的密钥,通常使用存储帐户的名称作为用户)提供给我的用户名和密码。
- Azure 在运行 DSC 模块时未引发错误(事件日志中没有错误,仅供参考 - 资源执行序列正确列出了 DSC 文件中的所有序列。)
- 当我登录机器并检查驱动器是否已映射时,我遇到了我想要的驱动器号 (W:) 上的断开连接的网络驱动器。
- 如果我打开 Powershell,我会收到错误消息:“尝试对 'FileSystem' 提供程序执行 InitializeDefaultDrives 操作失败。”
- 如果我运行“Get-PSDrive”,W: 驱动器不会出现。
- 如果我在 Powershell 控制台中手动运行 SetScript 代码,则映射的驱动器在不同的驱动器号下可以正常工作。
- 如果我尝试断开 W: 驱动器,我会收到“此网络连接不存在”。
- 我认为 DSC 可能需要一些时间才能进行映射并添加了睡眠定时器,但这不起作用。同样的行为。
【问题讨论】:
标签: powershell azure azure-powershell dsc