private List<PSResourceProviderOperation> ProcessProviderOperationsWithWildCard(string actionSearchString)
{
// Filter the list of all operation names to what matches the wildcard
WildcardPattern wildcard = new WildcardPattern(actionSearchString, WildcardOptions.IgnoreCase | WildcardOptions.Compiled);
List<ProviderOperationsMetadata> providers = new List<ProviderOperationsMetadata>();
string provider = this.OperationSearchString.Split(Separator).First();
if (provider.Equals(WildCardCharacter))
{
// 'Get-AzureRmProviderOperation *' or 'Get-AzureRmProviderOperation */virtualmachines/*'
// get operations for all providers
providers.AddRange(this.ResourcesClient.ListProviderOperationsMetadata());
}
else
{
// 'Get-AzureRmProviderOperation Microsoft.Compute/virtualmachines/*' or 'Get-AzureRmProviderOperation Microsoft.Sql/*'
providers.Add(this.ResourcesClient.GetProviderOperationsMetadata(provider));
}
return providers.SelectMany(p => GetPSOperationsFromProviderOperationsMetadata(p)).Where(operation => wildcard.IsMatch(operation.Operation)).ToList();
}