Можно ли отфильтровать свойство "Роли" без использования -expandproperty Роли? Первый набор операторов показывает мне, что мне нужно, за исключением того, что я не могу фильтровать роли -eq "db_owner" и пользователей -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 теперь называется «Name», и он будет возвращать результаты, где «Roles» -eq db_owner.
Однако теперь он пропускает другие свойства, которые мне нужны из первого оператора. Нужно ли использовать массив для хранения значений каждого оператора, а затем объединить результаты вместе или есть другой способ отфильтровать значение свойства внутри «Роли»?
Свойство «Роли» Имя Имя элемента Определение
Свойство Roles Microsoft.SqlServer.Management.Smo.DatabaseRoleCollection Roles {get;}
IsPubli c Имя IsSerial BaseType
-------- --- ----- ---- --------
True False PSCustomObject System.Object