使用 Powershell 从变量中搜索字符串

Search String from a variable using Powershell

我正在尝试从变量中搜索字符串。

我正在将 Azure Activity 日志转储到一个变量中,并尝试为该日志查找特定的行。下面是我的代码。

$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

我正在尝试从日志

中搜索这一行“Action : Microsoft.Sql/servers/databases/resume/action

虽然运行上面的脚本我没有得到任何输出。

请帮我解决这个问题。

您似乎正在从 Azure Activity 资源日志中搜索 授权操作 属性。如果是这种情况,那么您不需要进行任何字符串搜索,只需引用 Authorization.Action 属性。 Get-AzLog will give you a System.Object[], which can just be queried normally with Foreach-Object or Where-Object。您可以使用 (Get-AzLog).GetType().FullName 查找此类型信息。

你可以运行这个查询来得到你所有的结果 Foreach-Object:

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

这将从开始时间 2020-04-01T00:30 开始 运行 的所有日志中为您提供 Authorization.Action 属性。

如果要修改此查询以搜索特定操作,可以使用 Where-Object 进行过滤,然后从结果中 select Authorization.Action

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