Вы должны быть в состоянии сделать это с Newtonsoft JSON (В теории вы должны быть в состоянии сделать это для всего вывода из Get-AzureRmNetworkSecurityGroup)
Чтобы попробовать это, я сначала взял ваш SubnetsText в строку.
string nsg =
"[{\"TapConfigurations\":[],\"HostedWorkloads\":[],\"Id\":\"/subscriptions/xxxx-xxxx-xxx-xxx-xxxxxx/resourceGroups/vm-test-group/providers/Microsoft.Network/networkInterfaces/testvm1VMNic\"}]";
Затем я создал новую динамическую переменную под названием X и проанализировал JSON в ней как JArray.
dynamic x = JArray.Parse(nsg);
Я создал новую строку с именем id и принял значение Id. Я также создал новый список с именем idList
string id = x[0].Id.ToString();
var idList = new List<string>();
Наконец, я заполнил idList значениями id, используя .Split () и .ToList ()
idList = id.Split('/').ToList();
При записи x [0]. Идя в консоль, я получаю:
/ подписок / хххх-хххх-хххххх-хххххх / resourceGroups / VM-тест-группа / поставщики / Microsoft.Network / networkInterfaces / testvm1VMNic
И когда я получаю конкретное значение, которое я хочу из списка (в этом случае я хочу имя интерфейса, которое является восьмым элементом), я записываю idList [8] в консоль и получаю:
testvm1VMNic
Console.WriteLine(x[0].Id);
Console.WriteLine(idList[1]); // subscriptions
Console.WriteLine(idList[2]); // xxxx-xxxx-xxx-xxx-xxxxxx
Console.WriteLine(idList[3]); // resourceGroups
Console.WriteLine(idList[4]); // vm-test-group
Console.WriteLine(idList[5]); // providers
Console.WriteLine(idList[6]); // Microsoft.Network
Console.WriteLine(idList[7]); // networkInterfaces
Console.WriteLine(idList[8]); // testvm1VMNic
Примечание: это в c # (так как именно здесь я работал над похожим инструментом), но вы сможете сделать это аналогичным образом в Powershell, если сможете получить доступ к Powershell Gallery