Adiciona um membro personalizado definido pelo usuário a uma instância de um objeto do Windows PowerShell.

Sintaxe

Add-Member [-MemberType] {<AliasProperty> | <CodeProperty> | <Property> | <NoteProperty> | <ScriptProperty> | <Properties> | <PropertySet> | <Method> | <CodeMethod> | <ScriptMethod> | <Methods> | <ParameterizedProperty> | <MemberSet> | <Event> | <All>} [-Name] <string> -InputObject <psobject> [[-Value] <Object>] [[-SecondValue] <Object>] [-Force] [-PassThru] [<CommonParameters>]

Descrição

O cmdlet Add-Member adiciona um membro personalizado definido pelo usuário a uma instância de um objeto do Windows PowerShell. Ele permite que você adicione os seguintes tipos de membros: AliasProperty, CodeProperty, NoteProperty, ScriptProperty, PropertySet, CodeMethod, MemberSet e ScriptMethod. Defina o valor inicial de membro usando o parâmetro Value. No caso de AliasProperty, ScriptProperty, CodeProperty e CodeMethod, forneça informações adicionais usando o parâmetro SecondValue.

Os membros adicionais são adicionados à determinada instância do objeto que você envia para Add-Member ou especifica usando o parâmetro InputObject. O membro adicional estará disponível somente enquanto essa instância existir. Você pode usar o cmdlet Export-Clixml para salvar a instância, incluindo os membros adicionais, em um arquivo. As informações armazenadas nesse arquivo podem ser usadas pelo cmdlet Import-Clixml para recriar a instância do objeto.

Parâmetros

-Force

Adiciona um novo membro mesmo se já houver outro com o mesmo nome. Não funciona para membros de núcleo de um tipo.

Necessário?

false

Posição?

named

Valor padrão

Aceitar entrada do pipeline?

false

Aceitar caracteres curinga?

false

-InputObject <psobject>

Especifica o objeto ao qual o novo membro será adicionado. Insira uma variável que contenha os objetos ou digite um comando ou uma expressão que obtenha os objetos.

Necessário?

true

Posição?

named

Valor padrão

Aceitar entrada do pipeline?

true (ByValue)

Aceitar caracteres curinga?

false

-MemberType <PSMemberTypes>

Especifica o tipo do membro a ser adicionado. Esse parâmetro é obrigatório.

Os valores válidos para este parâmetro são:

-- AliasProperty: uma propriedade que define um novo nome para uma propriedade existente.

-- CodeMethod: um método que faz referência a um método estático de uma classe do Microsoft .NET Framework.

-- CodeProperty: uma propriedade que faz referência a uma propriedade estática de uma classe do .NET Framework.

-- MemberSet: uma coleção predefinida de propriedades e métodos, como PSBase, PSObject e PSTypeNames.

-- Method: um método do objeto .NET Framework subjacente.

-- NoteProperty: uma propriedade com um valor estático.

-- ParameterizedProperty: uma propriedade que utiliza parâmetros e valores de parâmetros.

-- Property: uma propriedade do objeto .NET Framework subjacente.

-- PropertySet: uma coleção predefinida de propriedades do objeto.

-- ScriptMethod: um método cujo valor é a saída de um script.

-- ScriptProperty: uma propriedade cujo valor é a saída de um script.

-- All: obtém todos os tipos de membro.

-- Methods: obtém todos os tipos de métodos do objeto (por exemplo, método, codemethod, scriptmethod)

-- Properties: obtém todos os tipos de propriedades do objeto (por exemplo, property, codeproperty, aliasproperty, scriptproperty).

Nem todos os objetos possuem todos os tipos de membro. Se você especificar um tipo de membro que o objeto não possui, o Windows PowerShell devolverá um erro.

O tipo de membro Evento não é válido para Add-Member.

Necessário?

true

Posição?

1

Valor padrão

Aceitar entrada do pipeline?

false

Aceitar caracteres curinga?

true

-Name <string>

Especifica o nome do membro a ser adicionado.

Se você omitir o nome do parâmetro "Name", o valor do parâmetro -Name deverá ser o segundo valor do parâmetro não nomeado no comando. Se você incluir o nome do parâmetro, os parâmetros poderão aparecer em qualquer ordem.

Necessário?

true

Posição?

2

Valor padrão

Aceitar entrada do pipeline?

false

Aceitar caracteres curinga?

false

-PassThru

Transmite o objeto estendido recentemente para o pipeline. Por padrão, esse cmdlet não gera saída.

Necessário?

false

Posição?

named

Valor padrão

Aceitar entrada do pipeline?

false

Aceitar caracteres curinga?

false

-SecondValue <Object>

Especifica as informações adicionais opcionais sobre os membros AliasProperty, ScriptProperty, CodeProperty ou CodeMethod. Se usado ao adicionar um AliasProperty, esse parâmetro deverá ser um tipo de dados. Uma conversão (cast) para o tipo de dado especificado é adicionada ao valor do AliasProperty. Por exemplo, se você adicionar um AliasProperty que forneça um nome alternativo para uma propriedade da cadeia de caracteres, também poderá especificar um parâmetro SecondValue do System.Int32 para indicar que o valor dessa propriedade deve ser convertido em um inteiro quando acessado usando o AliasProperty correspondente.

Você pode usar o parâmetro SecondValue para especificar um ScriptBlock adicional ao acrescentar um membro ScriptProperty. Naquele caso, o primeiro ScriptBlock, especificado no parâmetro Value, é usado para obter o valor de uma variável. O segundo ScriptBlock, especificado no parâmetro SecondValue, é usado para definir o valor de uma variável.

Necessário?

false

Posição?

4

Valor padrão

Aceitar entrada do pipeline?

false

Aceitar caracteres curinga?

false

-Value <Object>

Especifica o valor inicial do membro adicionado. Se você adicionar um membro AliasProperty, CodeProperty ou CodeMethod, poderá fornecer, opcionalmente, informações adicionais usando o parâmetro SecondValue.

Necessário?

false

Posição?

3

Valor padrão

Aceitar entrada do pipeline?

false

Aceitar caracteres curinga?

false

<CommonParameters>

Esse cmdlet oferece suporte aos parâmetros comuns: -Verbose, -Debug, -ErrorAction, -ErrorVariable, -OutBuffer e -OutVariable. Para obter mais informações, consulte about_Commonparameters.

Entradas e saídas

O tipo de entrada é o tipo dos objetos que você pode canalizar para o cmdlet. O tipo de retorno é o tipo dos objetos que o cmdlet retorna.

Entradas

System.Management.Automation.PSObject

É possível enviar qualquer tipo de objeto para Add-Member.

Saídas

None ou System.Object

Quando você usa o parâmetro PassThru, Add-Member retorna o objeto estendido recentemente. Caso contrário, esse cmdlet não gera nenhuma saída.

Observações

Você pode adicionar membros somente aos objetos PSObject. Para determinar se um objeto é um PSObject, use o operador “is”. Por exemplo, para testar um objeto armazenado na variável $obj, digite "$obj -is [PSObject]".

Os nomes dos parâmetros MemberType, Name, Value e SecondValue são opcionais. Se você omitir os nomes dos parâmetros, os valores dos parâmetros não nomeados deverão aparecer nesta ordem: MemberType, Name, Value, SecondValue. Se você incluir os nomes dos parâmetros, estes poderão aparecer em qualquer ordem.

Exemplo 1

C:\PS>$a = (get-childitem)[0]

C:\PS> $a | add-member -membertype noteproperty -name Status -value done

C:\PS> $a | get-member -type noteproperty

   TypeName: System.IO.DirectoryInfo

Name          MemberType   Definition
----          ----------   ----------
PSChildName   NoteProperty System.String PSChildName=Co
PSDrive       NoteProperty System.Management.Automation
PSIsContainer NoteProperty System.Boolean PSIsContainer
PSParentPath  NoteProperty System.String PSParentPath=M
PSPath        NoteProperty System.String PSPath=Microso
PSProvider    NoteProperty System.Management.Automation
Status        NoteProperty System.String Status=done

Descrição
-----------
Estes comandos adicionam a propriedade de nota Status a um objeto DirectoryInfo retornado por Get-ChildItem e atribuem a ele um valor "done". 

O primeiro comando obtém o primeiro objeto que Get-Childitem retorna (índice 0).

O segundo comando adiciona a propriedade de nota.

O terceiro comando usa um operador de pipeline (|) para enviar o objeto atualizado para o cmdlet Get-Member. A saída mostra que a propriedade foi adicionada.






Exemplo 2

C:\PS>$a = (get-childitem)[0]

C:\PS> $a | add-member -membertype aliasproperty -name FileLength -value Length 

C:\PS> $a.filelength

Descrição
-----------
Estes comandos adicionam uma propriedade de alias FileLength a um objeto DirectoryInfo retornado por Get-ChildItem. A nova propriedade é um alias para a propriedade Length. 

O primeiro comando obtém o primeiro objeto que Get-Childitem retorna (índice 0).

O segundo comando adiciona a propriedade de alias.

O terceiro comando retorna o valor da nova propriedade FileLength.






Exemplo 3

C:\PS>$a = "a string"

C:\PS> $a = $a | add-member -membertype noteproperty -name StringUse -value Display -passthru

C:\PS> $a.StringUse

Descrição
-----------
Estes comandos adicionam a propriedade StringUse a uma cadeia de caracteres. Como a cadeia de caracteres não é um objeto PSObject, você deve incluir o parâmetro PassThru no comando para salvar a cadeia de caracteres estendida na variável. O último comando no exemplo exibe a nova propriedade.






Exemplo 4

C:\PS>$a = "this is a string"

C:\PS> $a = add-member -inputobject $a -membertype scriptmethod -name words `
-value {$this.split()} -passthru

C:\PS> $a.words()

Descrição
-----------
Estes comandos adicionam um método de script a um objeto da cadeia de caracteres. O método de script expõe o método Split() da classe System.String .NET Framework Class Library, para facilitar o retorno de palavras individuais em uma cadeia de caracteres ao chamar um método nomeado "Words" no objeto da cadeia de caracteres. Lembre-se de que o parâmetro PassThru é especificado para forçar Add-Member a retornar o objeto da cadeia de caracteres estendida como saída para ser armazenado em uma variável $a.






Exemplo 5

C:\PS>$event = get-eventlog -logname system -newest 1

C:\PS> $event.TimeWritten | get-member

C:\PS> add-member -inputobject $event -membertype aliasproperty -name When `
-value TimeWritten -secondvalue System.String

C:\PS> $event.When | get-member

Descrição
-----------
Estes comandos adicionam a AliasProperty a um objeto EventLogEntry retornado pelos cmdlets Get-EventLog. A AliasProperty é nomeada "When" e é um alias da propriedade TimeWritten do objeto. O parâmetro SecondValue é utilizado para especificar que o valor da propriedade deve ser convertido para o tipo System.String quando acessado usando a AliasProperty; a propriedade TimeWritten é um objeto DateTime.

O primeiro comando usa o cmdlet Get-EventLog para recuperar o evento mais recente do log de eventos System e o armazena na variável $event. 

O segundo comando acessa a propriedade TimeWritten daquele evento e a envia para o cmdlet Get-Member para demonstrar que a propriedade é um tipo DateTime. Add-Member é usado para adicionar um membro AliasProperty à instância do objeto EventLogEntry armazenado na variável $event. O parâmetro Name é usado para definir o nome do novo membro para “When”; o parâmetro Value é usado para especificar que é um alias da propriedade TimeWritten. O parâmetro SecondValue é utilizado para indicar que, quando esse novo membro for usado, o valor que ele retorna deverá ser convertido de seu tipo para System.DateTime original para um tipo System.String. 

O terceiro comando acessa o novo membro e o envia para o cmdlet Get-Member, a fim de confirmar que é do tipo System.String.






Exemplo 6

C:\PS>function Copy-Property ($From, $To)

{
  foreach ($p in Get-Member -InputObject $From -MemberType Property)
  {
     Add-Member -InputObject $To -MemberType NoteProperty -Name $p.Name 
     -Value $From.$($p.Name) -Force

     $To.$($p.Name) = $From.$($p.Name)
   }
}

Descrição
-----------
Essa função copia todas as propriedades de um objeto para outro objeto.

O primeiro comando na função declara o nome da função e lista seus parâmetros. 

O loop Foreach usa o cmdlet Get-Member para obter cada uma das propriedades do objeto From. Os comandos em cada loop Foreach são executados em série em cada uma das propriedades.

O comando Add-Member adiciona a propriedade do objeto From para o objeto To como uma NoteProperty. Ele usa o parâmetro Force para permitir que o comando adicione membros com o mesmo nome de membro.

O último comando na função dá à nova propriedade o mesmo nome da propriedade original.






See Also




Sumário