У меня есть, на мой взгляд, плохо выглядящий код, поскольку в настоящее время я обновляю свойства в каждом конкретном случае с помощью оператора switch
. Вместо этого я хотел бы динамически обновить свойство, если $Key
с тем же именем, что и свойство, можно найти в $PSBoundParameters
. Обратите внимание, что каждый данный $Key
предполагается также существующим как свойство в объекте InputObject
.
Мое текущее решение:
foreach ($Key in $PSBoundParameters.Keys) {
switch ($Key) {
{ $_ -Match "^TimeToLive$"} { $InputObject.RecordData.TimeToLive = $PSBoundParameters[$Key] }
{ $_ -Match "^AllowUpdateAny$"} { $InputObject.RecordData.AllowUpdateAny = $PSBoundParameters[$Key] }
{ $_ -Match "^IPv4Address$"} { $InputObject.RecordData.IPv4Address = $PSBoundParameters[$Key] }
{ $_ -Match "^IPv6Address$"} { $InputObject.RecordData.IPv6Address = $PSBoundParameters[$Key] }
{ $_ -Match "^HostNameAlias$"} { $InputObject.RecordData.HostNameAlias = $PSBoundParameters[$Key] }
{ $_ -Match "^PtrDomainName$"} { $InputObject.RecordData.PtrDomainName = $PSBoundParameters[$Key] }
{ $_ -Match "^MailExchange$"} { $InputObject.RecordData.MailExchange = $PSBoundParameters[$Key] }
{ $_ -Match "^Preference$"} { $InputObject.RecordData.Preference = $PSBoundParameters[$Key] }
{ $_ -Match "^DomainName$"} { $InputObject.RecordData.DomainName = $PSBoundParameters[$Key] }
{ $_ -Match "^Priority$"} { $InputObject.RecordData.Priority = $PSBoundParameters[$Key] }
{ $_ -Match "^Weight$"} { $InputObject.RecordData.Weight = $PSBoundParameters[$Key] }
{ $_ -Match "^Port$"} { $InputObject.RecordData.Port = $PSBoundParameters[$Key] }
}
}
Псевдокод того, что я хочу, чтобы мое решение выглядело так:
Для каждого $Key
в $PSBoundParameters
Установите $InputObject.RecordData
свойство имени $Key
в значение текущей пары ключ / значение
Любое улучшение моего текущего решения высоко ценится. Спасибо.