Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Powershell Azure应用程序服务ApiApp_Powershell_Azure_Azure Web App Service_Azure Api Apps - Fatal编程技术网

Powershell Azure应用程序服务ApiApp

Powershell Azure应用程序服务ApiApp,powershell,azure,azure-web-app-service,azure-api-apps,Powershell,Azure,Azure Web App Service,Azure Api Apps,我正在尝试使用PowerShell在Azure应用程序服务中创建API应用程序 默认情况下,我调用的cmdlet始终创建Web应用。如果可能,我想知道如何将类型/种类指定为Api-App,而不是Web-App New-AzureRmWebApp -Name $name -Location $location -AppServicePlan $plan -ResourceGroupName $resourceGroup 从我的阅读来看,两者之间除了图标没有太大的不同,如果这就是我的应用程序的全部

我正在尝试使用PowerShell在Azure应用程序服务中创建API应用程序

默认情况下,我调用的cmdlet始终创建Web应用。如果可能,我想知道如何将类型/种类指定为
Api-App
,而不是
Web-App

New-AzureRmWebApp -Name $name -Location $location -AppServicePlan $plan -ResourceGroupName $resourceGroup
从我的阅读来看,两者之间除了图标没有太大的不同,如果这就是我的应用程序的全部内容,那么将类型设置为“Api应用程序”值得吗

我使用的是AzureRM PowerShell模块的5.4.0版

> Get-Module "AzureRM"

ModuleType Version    Name                                                 
---------- -------    ----
Script     5.4.0      AzureRM

New AzureRmWebApp
中不支持明确指示是API应用程序还是Web应用程序的参数。资源提供程序仍然是
Microsoft.Web
。并且在ARM模板中没有指示类型的参数

这两种类型在技术上仍然以相同的方式工作。不同之处在于用途、图标、操作系统运行选择和调试功能(请参阅此处)

您可能希望通过标记来在这两种类型之间进行分类,这将有助于在您的资源组有许多web资源的情况下进行管理

您可以通过Azure门户或Visual Studio创建API应用程序


另外,请查看Azure API管理,以获得API包装而非Azure应用程序服务的更大灵活性。

只需调用
新AzureRmResource
,然后传入
-种类“API”

# CREATE "just-an-api" API App

$ResourceLocation = "West US"
$ResourceName = "just-an-api"
$ResourceGroupName = "demo"
$PropertiesObject = @{
    # serverFarmId points to the App Service Plan resource id
    serverFarmId = "/subscriptions/SUBSCRIPTION-GUID/resourceGroups/demo/providers/Microsoft.Web/serverfarms/plan1"
}

New-AzureRmResource -Location $ResourceLocation `
    -PropertyObject $PropertiesObject `
    -ResourceGroupName $ResourceGroupName `
    -ResourceType Microsoft.Web/sites `
    -ResourceName "just-an-api/$ResourceName" `
    -Kind 'api' `
    -ApiVersion 2016-08-01 -Force
…它产生了一个API应用程序,
Microsoft.Web/sites
resource类型,属于
API
类型:

等一下。。你是怎么想到这些的


访问并导航到现有的API应用程序,通过将PowerShell选项卡与JSON资源定义中的所需值相结合来构建PowerShell语法。

哎哟,我把
kind
属性放错了位置。固定的!这是参数的一部分,而不是属性包。我的不好。是否也可以为新API应用指定应用服务计划?我认为斜杠前面的名称部分可能允许您指定计划名称(类似于dbserver/dbname),但它每次都会生成一个名为Default1的新应用程序服务计划。示例中的-ResourceName“just-an-api/$ResourceName”的行为与我的测试中显示的-ResourceName“$ResourceName”的行为相同。斜杠后面的名称部分被忽略。有一个
-Plan
参数。使用
获取帮助New AzureRmResource-Full
@evilSnobu感谢您的评论。我确实看到了Plan参数,描述是一个哈希表:“一个表示资源计划属性的哈希表。”所以这不是一个简单的字符串,它接受应用服务计划的名称,我对如何将应用服务计划表示为哈希表感到困惑。我在网上找不到任何例子来说明如何或何时使用这个参数。我认为这不是要使用的正确参数。您知道如何将应用程序服务计划表示为哈希表,我可以将其传递给此参数吗?谢谢你的帮助!你完全正确。我有点忘乎所以,没有测试。是的,它确实是一个哈希表,但是
-Plan
不是您需要的(我的错)<代码>计划是一个非常容易引起误解的参数名称,它与应用程序服务计划完全无关。在属性包中使用
serverFarmId
。请参阅我的最新答案。