winforms 在模块中找到Azure Powershell命令,但无法加载模块

pkln4tw6  于 2023-03-19  发布在  Shell
关注(0)|答案(2)|浏览(181)

我已经在winform中使用Az模块来控制Azure Winform,但在从winform执行脚本时出错。

Using objPS As PowerShell = PowerShell.Create()
    'Create the Selected Snapshot to VM OS Disk
    Dim strPowerShellScriptCreateOsDisk = "$storageType = 'StandardSSD_LRS'
                                           $location = 'Southeast Asia'
                                           $diskSizeGB = 64
                                           $snapshot = Get-AzSnapshot -ResourceGroupName '" & gstrResourceGroupName & "' -SnapshotName '" & gstrSelectedSnapshot & "' 
                                                             $osDisk = New-AzDisk -DiskName '" & gstrSelectedSnapshot & "_" & gstrVmName & "' -Disk `
                                                             (New-AzDiskConfig -AccountType $storageType -DiskSizeGB $diskSizeGB `
                                                             -Location $location -CreateOption Copy `
                                                             -SourceResourceId $snapshot.Id) `
                                                             -ResourceGroupName '" & gstrResourceGroupName & "'"

            'Swap the Created VM OS Disk to Virtual Machine
            Dim strPowerShellScriptSwapOsDisk = "$vm = Get-AzVM -ResourceGroupName '" & gstrResourceGroupName & "' -Name '" & gstrVmName & "'
                                             $disk = Get-AzDisk -ResourceGroupName '" & gstrResourceGroupName & "' -Name '" & gstrSelectedSnapshot & "_" & gstrVmName & "' 
                                             Set-AzVMOSDisk -VM $vm -ManagedDiskId $disk.Id -Name $disk.Name 
                                             Update-AzVM -ResourceGroupName '" & gstrResourceGroupName & "' -VM $vm"

            'Delete the Replaced Old Disk from Azure Storage
            Dim strPowerShellScriptDeleteDisk = "Remove-AzDisk -ResourceGroupName '" & gstrResourceGroupName & "' -DiskName '" & strOldDisk & "' -Force"

            objPS.AddScript(strPowerShellScriptConnectAccount + vbNewLine + strPowerShellScriptCreateOsDisk + vbNewLine + strPowerShellScriptSwapOsDisk + vbNewLine + strPowerShellScriptDeleteDisk)

            ' Check if objResult is Nothing then Ignore
            For Each objResult As PSObject In objPS.Invoke()
                If objResult IsNot Nothing Then Debug.WriteLine(objResult.ToString())
            Next
        End Using

它在我的计算机上工作,但当我将exe发布到另一台计算机时,该功能不再工作。我得到这些错误
在模块“Az. Accounts”中找到了“Disconnect-AzAccount”命令,但无法加载该模块。有关详细信息,请运行“Import-Module Az. Accounts”。
以及
在模块“Az. Compute”中找到了“Get-AzSnapshot”命令,但无法加载该模块。有关详细信息,请运行“Import-Module Az.Compute”
但我确保目标计算机Azure powershell、az模块、.net core和.net framework已安装并更新。是否需要在目标计算机中安装任何操作?

aelbi1ox

aelbi1ox1#

此错误似乎是由于潜在的模块不兼容而发生的。请在此处检查可能的原因:症状:无法在Windows PowerShell中加载Az模块。请运行文档中提供的所有故障排除程序以进行交叉检查,并在安装所有最新模块后重新启动系统。
其他参考文献:

如果尝试了上述步骤后问题仍然存在,请告知我们,我们可以进一步调查。感谢您的耐心等待!

9o685dep

9o685dep2#

大多数情况下,问题是因为不允许从运行脚本的计算机执行脚本。如果尝试从Powershell伊势构建命令,则在帮助工具中可以看到“运行”选项被禁用。这是因为Powershell的当前策略不是由用户启动的,因此命令的执行受到限制
尝试运行以下命令来解决此问题,如果此命令不起作用,则问题可能是模块的问题,请首先尝试执行策略

设置执行策略远程签名-作用域当前用户

谢谢

相关问题