Строка поиска из переменной с использованием Powershell - PullRequest
1 голос
/ 01 апреля 2020

Я пытаюсь найти строку из переменной.

Я сбрасываю Azure Журналы активности в переменной и пытаюсь найти конкретную c строку для этого журнала. Вот мои коды ниже.

$log=Get-AzLog -ResourceId "/subscriptions/SubscriptionID/resourceGroups/ResourceGroupName/providers/Microsoft.Sql/servers/qcsqldw/databases/DatabaseName" -StartTime 2020-04-01T00:30 
$find=$log | Select-String  -Pattern 'Microsoft.Sql/servers/databases/resume/action' 
Write-Output $find

Я пытаюсь найти эту строку " Действие: Microsoft.Sql / servers / database / resume / action " из журнала

Во время выполнения вышеуказанного скрипта я не получил никакого вывода.

Пожалуйста, помогите мне в этом.

1 Ответ

1 голос
/ 01 апреля 2020

Похоже, вы ищете свойство Авторизация в журналах ресурсов Azure. Если это так, то вам не нужно выполнять поиск строк, а просто ссылаться на свойство Authorization.Action. Get-AzLog даст вам System.Object[], который можно просто запросить с помощью Foreach-Object или Where-Object. Вы можете узнать информацию этого типа с помощью (Get-AzLog).GetType().FullName.

Вы можете выполнить этот запрос, чтобы получить все свои результаты с помощью Foreach-Object:

Get-AzLog -ResourceId $id -StartTime 2020-04-01T00:30 | ForEach-Object {$_.Authorization.Action}

, который даст вам свойство Authorization.Action из всех ваших журналов, которые запускались со времени запуска 2020-04-01T00:30.

Если вы хотите изменить этот запрос для поиска определенного действия c, вы можете отфильтровать с помощью Where-Object, а затем выбрать Authorization.Action из результатов:

(Get-AzLog -ResourceId $id -StartTime 2020-04-01T00:30 | Where-Object {$_.Authorization.Action -eq "Microsoft.Sql/servers/databases/resume/action"}).Authorization.Action
...