gpt4 book ai didi

powershell - 用于复制所有 Web 应用程序设置的 Azure Runbook powershell 脚本

转载 作者:行者123 更新时间:2023-12-03 05:07:57 25 4
gpt4 key购买 nike

我尝试将以下脚本作为 Runbook 运行,以将所有设置从一个 Web 应用复制到另一个 Web 应用,但出现以下错误。

try
{
$acct = Get-AzureRmSubscription
}
catch
{
Login-AzureRmAccount
}

$fromResourceGroup = 'resourceG1'
$fromSite = 'website1'
$toResourceGroup = 'resourceG2'
$toSite = 'website2'

$props = (Invoke-AzureRmResourceAction -ResourceGroupName $fromResourceGroup -ResourceType Microsoft.Web/sites/Config -Name $fromSite/appsettings -Action list -ApiVersion 2015-08-01 -Force).Properties

$hash = @{}
$props | Get-Member -MemberType NoteProperty | % { $hash[$_.Name] = $props.($_.Name) }

Set-AzureRMWebApp -ResourceGroupName $toResourceGroup
-Name $toSite -AppSettings $hash

异常(exception):

Get-Member : You must specify an object for the Get-Member cmdlet.
At line:18 char:10
+ $props | Get-Member -MemberType NoteProperty | % { $hash[$_.Name] = $ ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : CloseError: (:) [Get-Member], InvalidOperationException
+ FullyQualifiedErrorId : NoObjectInGetMember,Microsoft.PowerShell.Commands.GetMemberCommand

Set-AzureRMWebApp : The term 'Set-AzureRMWebApp' is not recognized as the name of a cmdlet, function, script file, or
operable program. Check the spelling of the name, or if a path was included, verify that the path is correct and try
again.
At line:20 char:1
+ Set-AzureRMWebApp -ResourceGroupName $toResourceGroup
+ ~~~~~~~~~~~~~~~~~
+ CategoryInfo : ObjectNotFound: (Set-AzureRMWebApp:String) [], CommandNotFoundException
+ FullyQualifiedErrorId : CommandNotFoundException

-Name : The term '-Name' is not recognized as the name of a cmdlet, function, script file, or operable program. Check
the spelling of the name, or if a path was included, verify that the path is correct and try again.
At line:21 char:9
+ -Name $toSite -AppSettings $hash
+ ~~~~~
+ CategoryInfo : ObjectNotFound: (-Name:String) [], CommandNotFoundException
+ FullyQualifiedErrorId : CommandNotFoundException

最佳答案

自动化 Runbook 使用不同的登录策略,因此您不应仅将 PowerShell 脚本复制到 Runbook 并期望它以与本地运行方式完全相同的方式运行。

您会看到命令Login-AzureRmAccount将弹出一个窗口,要求输入用户名和密码。但是,在自动化运行手册中,它不能。因此,您需要执行其他操作才能正确登录。

  1. 为您的自动化创建一个新的 Active Direcotry 用户。

    a.登录Azure Classic Portal .

    b.选择Active Directory,然后单击您的默认 Active Directory。

    c.单击用户,然后单击添加用户。对于用户类型,选择组织中的新用户。它不能是拥有现有 Microsoft 帐户的用户,因为尝试登录 Runbook 时会失败。

    d.在用户配置文件上,对于角色,服务管理员就足够了,但如果您愿意,可以选择全局管理员。不要启用多重身份验证。如果再次这样做,尝试登录 Runbook 时将会失败。

    e.记下用户的全名和临时密码。

    f.返回经典门户,点击设置> 管理员> 添加。输入您在上面获得的用户名,然后选择您的订阅。

    g。注销 Azure,然后使用刚刚创建的帐户重新登录。系统将提示您更改用户密码。

    注意:如果您已有“非 Microsoft”且禁用了 MFA 的用户帐户,则可以跳过此步骤。欲了解更多信息,请参阅Configuring Azure Automation

  2. 为您的 Runbook 创建 PS 凭据 Assets 。

    a.登录Azure Portal ,然后选择您的自动化。

    b.在自动化帐户设置边栏选项卡中,单击 Assets > 凭据

    enter image description here

    c.单击添加凭据,输入名称、用户名和密码(您在上一步中创建的用户名和密码),然后单击创建

    enter image description here

  3. 不应简单地使用 Login-AzureRmAccount,您应该使用以下命令进行登录。

    $cred = Get-AutomationPSCredential -Name "<your credential name>"
    Login-AzureRmAccount -Credential $cred

关于powershell - 用于复制所有 Web 应用程序设置的 Azure Runbook powershell 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35486796/

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