Определите поддающиеся фильтрованию атрибуты возвращенного объекта Powershell

Попробуйте/etc/ssh/ssh_config вместо конфигурации sshd. Эти настройки, кажется, для ssh клиента, не демона.

4
задан 6 August 2013 в 16:23
2 ответа

Конечно, это то, для чего предназначен Get-Member ???

<object> | Get-Member -MemberType Property

... или я упустил суть?

3
ответ дан 3 December 2019 в 03:07

Some-CmdLet | Выберите * | Select -First 1

Передаст вам все свойства первого объекта, возвращаемого командлетом, но не обязательно все свойства, которые могут содержать объекты, возвращаемые командлетом.

Многие, если не большинство командлетов возвращают динамические объекты, в которых свойство просто не существует (в отличие от свойства, существующего, но с нулевым или пустым значением), если это свойство не заполнено каким-либо провайдером, из которого получены данные.

Edit2: Кроме того, вы можете попробовать что-то вроде этого:

PS C:\> ForEach($P In $(Get-ADUser ryan -Properties *).PSObject.Properties) { $P.Name }
AccountExpirationDate
accountExpires
AccountLockoutTime
AccountNotDelegated
AllowReversiblePasswordEncryption
BadLogonCount
badPwdCount
c
CannotChangePassword
CanonicalName
....
userAccountControl
userCertificate
UserPrincipalName
uSNChanged
uSNCreated
whenChanged
whenCreated
PropertyNames
PropertyCount

Вы действительно не можете увидеть, что командлет может вернуть, прежде чем вы его даже запустите, из-за объектов динамического возврата ... до запуска неизвестно, что именно он вернет. Например, объект, возвращаемый Get-ADUser, может иметь или не иметь свойство «EmployeeID» в зависимости от того, заполнен он в AD или нет. Я не имею в виду, что свойство будет иметь значение $ Null или [String] :: Empty, я имею в виду, что это свойство буквально не будет существовать для этого объекта.

Если вы используете Set-StrictMode, это особенно очевидно, поскольку он будет лаять на вас за попытку отфильтровать несуществующее свойство объекта, даже если свойство существует на некоторых, но не на других объектах в общем возвращаемом наборе.

Чтобы уточнить мою точку зрения ... когда я создаю командлет, у меня может быть логика в моем командлете, где, если определенное условие истинно, я могу добавить определенное новое свойство к объекту, который должен быть возвращен, или в противном случае свойство не возвращается ...

if($x = $true) 
{    
    $object | Add-Member -Type NoteProperty -Name $name -Value $y 
}
Else
{
    # In this case, $object will NOT have the above property!
}
3
ответ дан 3 December 2019 в 03:07

Теги

Похожие вопросы