Получить или установить несуществующие свойства объекта PowershellC#

Место общения программистов C#
Anonymous
Получить или установить несуществующие свойства объекта Powershell

Сообщение Anonymous »

Если я создам хеш-таблицу в Powershell, я смогу получать/устанавливать значения с помощью псевдосвойств
$h = @{ }

$h.a
# returns $null

# add a key/value with key 'a'
$h.a = 'abc'
$h.a
# returns 'abc'

Это не ограничивается Hashtable, если я теперь использую Get-ADUser,
# get the main properties of user 'foo'
$user = Get-ADUser foo
$user | gm

TypeName: Microsoft.ActiveDirectory.Management.ADUser

Name MemberType Definition
---- ---------- ----------
Contains Method bool Contains(string propertyName)
Equals Method bool Equals(System.Object obj)
GetEnumerator Method System.Collections.IDictionaryEnumerator GetEnumerator()
GetHashCode Method int GetHashCode()
GetType Method type GetType()
ToString Method string ToString()
Item ParameterizedProperty Microsoft.ActiveDirectory.Management.ADPropertyValueCollection Item(string propertyName) {get;}
DistinguishedName Property System.String DistinguishedName {get;set;}
Enabled Property System.Boolean Enabled {get;set;}
GivenName Property System.String GivenName {get;set;}
Name Property System.String Name {get;}
ObjectClass Property System.String ObjectClass {get;set;}
ObjectGUID Property System.Nullable`1[[System.Guid, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]] ObjectGUID {get;set;}
SamAccountName Property System.String SamAccountName {get;set;}
SID Property System.Security.Principal.SecurityIdentifier SID {get;set;}
Surname Property System.String Surname {get;set;}
UserPrincipalName Property System.String UserPrincipalName {get;set;}

Я могу установить/обновить свойства, отсутствующие в $user
$user.telephoneNumber = '+330000000'
$user | gm

TypeName: Microsoft.ActiveDirectory.Management.ADUser

Name MemberType Definition
---- ---------- ----------
Contains Method bool Contains(string propertyName)
Equals Method bool Equals(System.Object obj)
GetEnumerator Method System.Collections.IDictionaryEnumerator GetEnumerator()
GetHashCode Method int GetHashCode()
GetType Method type GetType()
ToString Method string ToString()
Item ParameterizedProperty Microsoft.ActiveDirectory.Management.ADPropertyValueCollection Item(string propertyName) {get;}
DistinguishedName Property System.String DistinguishedName {get;set;}
Enabled Property System.Boolean Enabled {get;set;}
GivenName Property System.String GivenName {get;set;}
Name Property System.String Name {get;}
ObjectClass Property System.String ObjectClass {get;set;}
ObjectGUID Property System.Nullable`1[[System.Guid, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]] ObjectGUID {get;set;}
SamAccountName Property System.String SamAccountName {get;set;}
SID Property System.Security.Principal.SecurityIdentifier SID {get;set;}
Surname Property System.String Surname {get;set;}
telephoneNumber Property System.String telephoneNumber {get;set;}
UserPrincipalName Property System.String UserPrincipalName {get;set;}

Теперь у меня есть новый номер телефона недвижимости и новое свойство(?) ModifiedProperties типа HashSet, не видимое в Get-Member, только в $user | Format-List * -Force содержит список установленных/обновляемых свойств, независимо от того, присутствует ли он в результате Get-ADUser.
Очевидно, будь то для hastables или результата Get-ADUser, неизвестный мне механизм позволяет перехватывать операции получения/установки неизвестных/несуществующих свойств для выполнения специальной обработки.
Я хотел бы узнать, как это сделать.
Я хотел бы узнать, как это сделать. то же самое. где я могу найти такую ​​информацию?
контекст
Name Value
---- -----
PSVersion 5.1.19041.6456
PSEdition Desktop
PSCompatibleVersions {1.0, 2.0, 3.0, 4.0...}
BuildVersion 10.0.19041.6456
CLRVersion 4.0.30319.42000
WSManStackVersion 3.0
PSRemotingProtocolVersion 2.3
SerializationVersion 1.1.0.1

Вернуться в «C#»