是否可以在不使用 -expandproperty 角色的情况下过滤“角色”属性?第一组语句向我展示了我需要什么,除了我无法过滤 Roles -eq "db_owner" 和 users -ne "user3"
#import-module dbatools
$servers = server1,server2
Get-DbaDatabase -SqlInstance $servers -Status Normal | Select SQLInstance, Name, Owner,Roles, Users
Results:
SqlInstance : server1
Name : testdb
Owner : sa
Roles : {db_accessadmin, db_backupoperator, db_datareader, db_datawriter, db_ddladmin, db_denydatareader, db_denydatawriter,
db_owner, db_securityadmin, public}
Users : {user1,user2,user3}
如果我运行另一个语句
Get-DbaDatabase -SqlInstance $servers -Status Normal | select -expandproperty Roles| Where Name -eq 'db_owner'
,db_owner 的属性现在称为“名称”,它将返回“角色”-eq db_owner 的结果。
但是,它现在缺少我在第一个语句中需要的其他属性。我是否必须使用数组来存储每个语句中的值,然后将结果连接在一起,或者是否有另一种方法来过滤“角色”中的属性值?
“角色”名称 MemberType 定义的属性
角色属性 Microsoft.SqlServer.Management.Smo.DatabaseRoleCollection 角色 {get;}
IsPublic IsSerial Name BaseType
-------- -------- ---- --------
True False PSCustomObject System.Object