-ResourceGroupName
является частью набора параметров, что означает, что при использовании он должен быть включен вместе с другими обязательными параметрами, которые принадлежат к его набору.
В документации here показаны два набора параметров с этим параметром.
#Parameter Set: Get resource by name and group
Get-AzureRmResource [-ApiVersion <System.String> ] [-ExpandProperties] [-ExtensionResourceName <System.String> ] [-ExtensionResourceType <System.String> ] [-IsCollection] [-ODataQuery <System.String> ] [-Pre] [-ResourceGroupName <System.String> ] [-ResourceName <System.String> ] [ <CommonParameters>]
#Parameter Set: Get resource by name, group and type
Get-AzureRmResource -ResourceGroupName <System.String> -ResourceName <System.String> -ResourceType <System.String> [-ApiVersion <System.String> ] [-ExpandProperties] [-ExtensionResourceName <System.String> ] [-ExtensionResourceType <System.String> ] [-ODataQuery <System.String> ] [-Pre] [ <CommonParameters>]
На основании параметров, используемых в вашем скрипте, он не может определить, какой набор использовать.
Либо добавьте больше параметров в свою команду, чтобы сузить набор, который нужно использовать.
Пример 1: Получить ресурс
Эта команда получает ресурс из microsoft.web/сайтов типа, названный ContosoWebsite под ResourceGroup11.
Windows PowerShell
PS C:\> Get-AzureRmResource -ResourceType "microsoft.web/sites" -ResourceGroupName "ResourceGroup11" -ResourceName "ContosoWebsite"
ИЛИ
использовать набор, который принимает параметры, где область является более узкой
Например:
Get-AzureRmResourceGroup
возвращает объект, как это
PS C:\> Get-AzureRmResourceGroup
ResourceGroupName : xxxxxxxxxxxxxxxxx
Location : xxxxxxxxxxxx
ProvisioningState : Succeeded
Tags :
ResourceId : /subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/xxxxxxxxxxxxxxxxxxx
Вы можете попробовать передать ResourceId
следующему командлету.
#Parameter Set: Get a single resource by its Id.
Get-AzureRmResource -ResourceId <String> [-ApiVersion <System.String> ] [-ExpandProperties] [-ODataQuery <System.String> ] [-Pre] [ <CommonParameters>]
Вы команда будет выглядеть следующим образом:
$resources = Get-AzureRMResourceGroup | % { Get-AzureRMResource -ResourceId $_.ResourceId}
$resources
$ ресурсы = Get-AzureRMResourceGroup | Get-AzureRMResource это не требует ввода конвейера. Поскольку, как только вы его запускаете, он выдает ошибки для каждой отдельной группы ресурсов, а затем Get-AzureRMResource просто перечисляет все ресурсы, как это было бы самостоятельно.На мой взгляд, это ошибка в этом командлете. – Mitul
Я сказал * ЕСЛИ * он берет трубчатый вход. проверьте документацию, а свойства в наборе действительно берут входные данные по каналу по свойству. – Nkosi
Моя проблема заключается в том, что командлет foreach должен работать, даже если командлет не принимает объект конвейера. В примере примера справки 'help get-azureRMresource' вы можете перечислить все ресурсы с помощью' Get-AzureRMResource -ResourceGroupName ContosoRG01' и они не предоставляют никакого имени или чего-либо еще. Который говорит мне, что документация здесь не так. – Mitul