【问题标题】:Azure Powershell Script Force FTPS Set-AzWebApp : Cannot convert 'System.Object[]' to the type 'System.String' required by parameterAzure Powershell 脚本强制 FTPS Set-AzWebApp:无法将“System.Object[]”转换为参数所需的“System.String”类型
【发布时间】:2021-06-08 14:08:25
【问题描述】:

我目前正在尝试在 Azure 中运行一个脚本,该脚本将通过我们所有的 Web 应用程序并打开 FTPS。

这是我目前拥有的

$Subscriptions = Get-AzSubscription
   foreach ($sub in $Subscriptions) {
       Get-AzSubscription -SubscriptionName $sub.Name | Set-AzContext
       $GetName = (Get-AzWebApp).Name
       $GetRG = (Get-AzWebApp).ResourceGroup
     Set-AzWebapp -Name $GetName -ResourceGroupName $GetRG -FtpsState FtpsOnly
       }

Set-AzWebApp:无法将“System.Object[]”转换为参数“Name”所需的类型“System.String”。指定的 方法不受支持。

我目前收到此错误,我不理解为 .Name 和 .ResourceGroup,据我了解,它已经是字符串。我对powershell非常陌生,因此将不胜感激任何帮助。谢谢大家!

【问题讨论】:

    标签: azure powershell azure-web-app-service azure-automation


    【解决方案1】:

    您的示例调用 Az-WebApp 没有参数,它获取订阅中的所有应用 - 这是一个集合 - 然后尝试获取该结果的名称,这就是导致错误的原因。

    您需要遍历订阅中的每个应用程序以及遍历每个订阅,如下所示:

       # Get all subscriptions and iterate them
       Get-AzSubscription | ForEach-Object {
           Set-AzContext -SubscriptionName $_.Name
           
           # Get all web apps in the subscription and iterate them
           Get-AzWebApp | ForEach-Object {
               Set-AzWebApp -Name $_.Name -ResourceGroupName $_.ResourceGroup -FtpsState FtpsOnly
           }
    
       }
    

    【讨论】:

    • 这很有意义,并且确实有效,非常感谢! foreach-object 命令现在更有意义了!
    • 您也可以使用foreach 样式循环,这更像是一个管道。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-10-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多