powershell - 使用 Powershell 从变量中搜索字符串
问题描述
我正在尝试从变量中搜索字符串。
我将 Azure 活动日志转储到一个变量中,并尝试为该日志找到特定的行。下面是我的代码。
$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/databases/resume/action ”
运行上述脚本时,我没有得到任何输出。
请帮助我。
解决方案
您似乎正在从 Azure 活动资源日志中搜索授权操作属性。如果是这种情况,那么您不需要进行任何字符串搜索,只需引用该Authorization.Action
属性即可。Get-AzLog
会给你一个System.Object[]
,它可以正常地用Foreach-Object
or查询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
。
如果要修改此查询以搜索特定操作,可以使用 过滤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
推荐阅读
- flutter - Flutter v1.12.13+hotfix.5 FocusNode 意外行为
- java - @JsonSerialize - 如何在运行时创建包装器并为对象字段使用默认序列化?
- php - 通过字符串 laravel 并获取值
- php - 文件中的包含数组不适用于 php 7.4
- swift - 根据@State 属性设置变量
- c# - 使用 SVG 库在 C# 中渲染 SVG 总是用黑色填充形状
- node.js - 多个文件同时操作?节点.js
- reactjs - 如何在应用程序 React.js 中搜索所有硬编码文本?
- json - 将 txt 文件转换为 JSON
- javascript - HttpInterceptor 在拦截器中调用另一个服务并等待响应