gpt4 book ai didi

powershell - 迭代 Azure 中的 VM 列表

转载 作者:行者123 更新时间:2023-12-03 03:14:53 24 4
gpt4 key购买 nike

我在 Auzre 上托管了大约 10 个虚拟机,我需要遍历每个虚拟机,然后在每个虚拟机上执行 powershell 脚本,比如“Set-Date”

连接到每个虚拟机、执行 ps 脚本然后断开连接的最佳方式是什么?

最佳答案

您可以通过扩展使用 PowerShell 远程处理或自定义脚本在远程虚拟机上执行 PowerShell 代码。

对于这两种解决方案,您都可以使用 PowerShell 命令 Get-AzureVM 获取 VM 列表。使用循环来迭代这些虚拟机。我在这里跳过这一部分,因为迭代是 PowerShell 基础知识。

1。 PowerShell 远程处理

为此,您需要在远程虚拟机上启用 PowerShell 远程处理,并为 PowerShell 远程处理打开一个端口。两者都是新虚拟机的默认设置。

优点:此解决方案对于与远程虚拟机的交互式 session 非常方便。此解决方案的缺点是,您需要对每个虚拟机进行身份验证,并且必须在执行时保持连接。

对于每个虚拟机,您都可以执行类似的操作。这是一个简短的示例,其中我在远程虚拟机上安装了 ADDS。

# Prepare credentials for remote session.
$secpasswd = ConvertTo-SecureString $AdminPassword -AsPlainText -Force
$credentialDC1 = New-Object System.Management.Automation.PSCredential ($AdminUsername, $secpasswd)

$EndpointDC = Get-AzureWinRMUri -ServiceName testlab-dc -Name dc1
#$EndpointDC = Get-AzureVM -ServiceName testlab-dc -Name dc1 | Get-AzureEndpoint -Name WinRmHTTPs

$psso = New-PSSessionOption -SkipCACheck
$sessionDC = New-PSSession -ComputerName testlab-dc.cloudapp.net -Port $EndpointDC.Port -Credential $credentialDC1 -UseSSL -SessionOption $psso

Invoke-Command -Session $sessionDC -ScriptBlock {

# Set-Date or other command
# or for example
# Install-WindowsFeature AD-Domain-Services

}

Remove-PSSession -Session $sessionDC

2。通过扩展自定义脚本

在这里,您可以将 PowerShell 文件上传到 BLOB 存储中,然后在虚拟机上执行该文件。要求是 VM 代理必须安装在 VM 上。 (库中新虚拟机的默认设置。)

优点:您不需要对每个虚拟机进行身份验证,也不需要在执行时保持连接。缺点:您必须准备单独的PowerShell文件才能上传。获取结果是异步的。

示例:

# Upload PowerShell file
Set-AzureStorageBlobContent -Container extensions -File "Install-ADForest.ps1" -Blob "Install-ADForest.ps1"

# Install AD services and forrest
Get-AzureVM -ServiceName demoext -Name demoext |
Set-AzureVMCustomScriptExtension -ContainerName extensions -FileName "Install-ADForest.ps1" |
Update-AzureVM

容器必须存在。在上传文件之前创建该容器。

关于powershell - 迭代 Azure 中的 VM 列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29742361/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com