Compartilhar via


4. Tipos

Nota editorial

Importante

A Especificação da Linguagem do Windows PowerShell 3.0 foi publicada em dezembro de 2012 e é baseada no Windows PowerShell 3.0. Essa especificação não reflete o estado atual do PowerShell. Não há nenhum plano para atualizar essa documentação para refletir o estado atual. Esta documentação é apresentada aqui para referência histórica.

O documento de especificação está disponível como um documento do Microsoft Word do Centro de Download da Microsoft em: https://www.microsoft.com/download/details.aspx?id=36389 esse documento do Word foi convertido para apresentação aqui no Microsoft Learn. Durante a conversão, algumas alterações editoriais foram feitas para acomodar a formatação para a plataforma Docs. Alguns erros de digitação e pequenos foram corrigidos.

No PowerShell, cada valor tem um tipo e os tipos se enquadram em uma das duas categorias principais: tipos de valor e tipos de referência. Considere o tipo int, que é típico de tipos de valor. Um valor do tipo int é completamente independente; todos os bits necessários para representar esse valor são armazenados nesse valor e cada padrão de bit nesse valor representa um valor válido para seu tipo. Agora, considere o tipo de matriz int[], que é típico de tipos de referência. Um valor chamado de um tipo de matriz pode conter uma referência a um objeto que realmente contém os elementos da matriz ou a referência nula cujo valor é $null. A distinção importante entre as duas categorias de tipo é melhor demonstrada pelas diferenças em sua semântica durante a atribuição. Por exemplo

$i = 100 # $i designates an int value 100
$j = $i # $j designates an int value 100, which is a copy

$a = 10,20,30 # $a designates an object[], Length 3, value 10,20,30
$b = $a # $b designates exactly the same array as does $a, not a copy
$a[1] = 50 # element 1 (which has a value type) is changed from 20 to 50
$b[1] # $b refers to the same array as $a, so $b[1] is 50

Como podemos ver, a atribuição de um valor de tipo de referência envolve uma cópia superficial; ou seja, uma cópia da referência ao objeto em vez de seu valor real. Por outro lado, uma cópia profunda também requer a criação de uma cópia do objeto.

Um tipo de numérico é aquele que permite a representação de valores inteiros ou fracionários e que dá suporte a operações aritméticas nesses valores. O conjunto de tipos numéricos inclui o tipo inteiro (§4.2.3) e o tipo real (§4.2.4), mas não inclui bool (§4.2.1) ou char (§4.2.2). Uma implementação pode fornecer outros tipos numéricos (como byte assinado, inteiro sem sinal e inteiros de outros tamanhos).

Uma coleção é um grupo de um ou mais itens relacionados, que não precisam ter o mesmo tipo. Exemplos de tipos de coleção são matrizes, pilhas, filas, listas e tabelas de hash. Um programa pode enumerar (ou iterar) sobre os elementos em uma coleção, obter acesso a cada elemento um de cada vez. As maneiras comuns de fazer isso são com a instrução foreach (§8.4.4) e o cmdlet forEach-Object . O tipo de um objeto que representa um enumerador é descrito em §4.5.16.

Neste capítulo, há tabelas que listam os membros acessíveis para um determinado tipo. Para métodos, o Tipo é escrito com o seguinte formato: returnType/argumentTypeList. Se a lista de tipos de argumento for muito longa para caber nessa coluna, ela será mostrada na coluna Finalidade.

Outros tipos inteiros são SByte, Int16, UInt16, UInt32e UInt64, tudo no namespace System.

Muitas classes de coleção são definidas como parte dos namespaces System.Collections ou System.Collections.Generic. A maioria das classes de coleção implementa as interfaces ICollection, IComparer, IEnumerable, IList, IDictionarye IDictionaryEnumerator e seus equivalentes genéricos.

Você também pode usar nomes abreviados para alguns tipos. Para obter mais informações, consulte about_Type_Accelerators.

4.1 Tipos especiais

4.1.1 O tipo nulo

Esse tipo não pode ser instanciado. Ele fornece um meio de descartar um valor explicitamente usando o operador de conversão (§7.2.9).

4.1.2 O tipo nulo

O tipo nulo tem uma instância, a variável automática $null (§2.3.2.2.2), também conhecida como o valor nulo. Esse valor fornece uma maneira de expressar "nada" em contextos de referência. As características desse tipo não são especificadas.

4.1.3 O tipo de objeto

Cada tipo no PowerShell, exceto o tipo nulo (§4.1.2) é derivado direta ou indiretamente do objeto type, portanto, o objeto é o tipo base final de todos os tipos não nulos. Uma variável restrita (§5.3) para digitar objeto realmente não é restrita, pois pode conter um valor de qualquer tipo.

4.2 Tipos de valor

4.2.1 Boolean

O tipo booliano é bool. Há apenas dois valores desse tipo, False e True, representados pelas variáveis automáticas $false e $true, respectivamente (§2.3.2.2).

No PowerShell, bool é mapeado para System.Boolean.

4.2.2 Caractere

Um valor de caractere tem o tipo char, que é capaz de armazenar qualquer ponto de código Unicode codificado em UTF-16 de 16 bits.

O tipo char tem os seguintes membros acessíveis:

Membro Variante de membro Tipo Finalidade
MaxValue Propriedade estática (somente leitura) carvão O maior valor possível do tipo char
ValorMínimo Propriedade estática (somente leitura) char O menor valor possível do tipo char
IsControl Método estático bool/char Testa se o caractere é um caractere de controle
IsDigit Método estático bool/char Testa se o caractere é um dígito decimal
IsLetter Método estático bool/char Testa se o caractere é uma letra alfabética
IsLetterOrDigit Método estático bool/char Testa se o caractere é um dígito decimal ou uma letra alfabética
IsLower Método estático bool/char Testa se o caractere é uma letra alfabética minúscula
IsPunctuation Método estático bool/char Testa se o caractere é um sinal de pontuação
IsUpper Método estático bool/char Testa se o caractere é uma letra alfabética maiúscula
IsWhiteSpace Método estático bool/char Testa se o caractere é um caractere de espaço em branco.
ToLower Método estático char/string Converte o caractere em letras minúsculas
ToUpper Método estático char/string Converte o caractere em letras maiúsculas

Windows PowerShell: char é mapeado para System.Char.

4.2.3 Inteiro

Há dois tipos de inteiros com sinal, ambos usam a representação complementar de dois para valores negativos:

  • Digite int, que usa 32 bits, dando-lhe um intervalo de -2147483648 a +2147483647, inclusive.
  • Digite long, que usa 64 bits, dando-lhe um intervalo de -9223372036854775808 a +9223372036854775807, inclusive.

O type int tem os seguintes membros acessíveis:

Membro Variante de membro Tipo Finalidade
ValorMáximo Propriedade estática (somente leitura) int O maior valor possível do tipo int
ValorMínimo Propriedade estática (somente leitura) int O menor valor possível do tipo int

O tipo long tem os seguintes membros acessíveis:

Membro Variante de membro Tipo Finalidade
Valor Máximo Propriedade estática (somente leitura) longo O maior valor possível do tipo long
Valor Mínimo Propriedade estática (somente leitura) longo O menor valor possível do tipo long

Há um tipo de inteiro sem sinal:

  • Tipo byte, que usa 8 bits, fornecendo um intervalo de 0 a 255, inclusive.

O tipo byte tem os seguintes membros acessíveis:

Membro Variante de membro Tipo Finalidade
ValorMáximo Propriedade estática (somente leitura) byte O maior valor possível do tipo byte
MinValue Propriedade estática (somente leitura) byte O menor valor possível do tipo byte

No PowerShell, byte, int e long são mapeados para System.Byte, System.Int32 e System.Int64, respectivamente.

4.2.4 Número real

4.2.4.1 float e double

Há dois tipos de reais (ou de ponto flutuante):

  • O tipo float usa a representação de precisão única do IEEE de 32 bits.
  • O tipo double usa a representação de precisão dupla IEEE de 64 bits.

Um nome de terceiro tipo, single, é um sinônimo do tipo float; float é usado em toda essa especificação.

Embora o tamanho e a representação dos tipos float e double sejam definidos por essa especificação, uma implementação pode usar precisão estendida para resultados intermediários.

O tipo float tem os seguintes membros acessíveis:

Membro Variante de membro Tipo Finalidade
ValorMáximo Propriedade estática (somente leitura) float O maior valor possível do tipo float
Valor Mínimo Propriedade estática (somente leitura) float O menor valor possível do tipo float
NaN Propriedade estática (somente leitura) float O valor da constante não é um número
NegativeInfinity Propriedade estática (somente leitura) float O infinito negativo do valor constante
PositiveInfinity Propriedade estática (somente leitura) float O valor constante de infinito positivo

O tipo double tem os seguintes membros acessíveis:

Membro Tipo de Membro Tipo Finalidade
ValorMáximo Propriedade estática (somente leitura) double O maior valor possível do tipo double
ValorMínimo Propriedade estática (somente leitura) double O menor valor possível do tipo double
NaN Propriedade estática (somente leitura) double O valor da constante não é um número
NegativeInfinity Propriedade estática (somente leitura) double O infinito negativo do valor constante
PositiveInfinity Propriedade estática (somente leitura) double O valor constante de infinito positivo

No PowerShell, float e double são mapeados para System.Single e System.Double, respectivamente.

4.2.4.2 decimais

O tipo decimal usa uma representação de 128 bits. No mínimo, ele deve dar suporte a uma escala de modo que 0 <= <= pelo menos 28 e um intervalo de valores -79228162514264337593543950335 a 79228162514264337593543950335. A representação real decimal é definida pela implementação.

O tipo decimal tem os seguintes membros acessíveis:

Membro Variante de membro Tipo Finalidade
ValorMáximo Propriedade estática (somente leitura) decimal O maior valor possível do tipo decimal
MinValue Propriedade estática (somente leitura) decimal O menor valor possível do tipo decimal

Nota

Números reais decimais têm uma característica chamada de escala, que representa o número de dígitos à direita do ponto decimal. Por exemplo, o valor 2,340 tem uma escala de 3, na qual os zeros finais são significativos. Quando dois números reais decimais são adicionados ou subtraídos, a escala do resultado é a maior das duas escalas. Por exemplo, 1,0 + 2.000 é 3.000, enquanto 5.0 - 2.00 é 3.00. Quando dois números reais decimais são multiplicados, a escala do resultado é a soma das duas escalas. Por exemplo, 1,0 * 2.000 é 2.0000. Quando dois números reais decimais são divididos, a escala do resultado é a escala do primeiro menos a escala do segundo. Por exemplo, 4.00000/2.000 é 2.00. No entanto, uma escala não pode ser menor do que a necessária para preservar o resultado correto. Por exemplo, 3.000/2.000, 3.00/2.000, 3.0/2.000 e 3/2 são todos 1,5.

No PowerShell, decimal é mapeado para System.Decimal. A representação de decimal é a seguinte:

  • Quando considerada como uma matriz de quatro int valores, ela contém os seguintes elementos:
    • O índice 0 (bits 0-31) contém os 32 bits de ordem inferior do coeficiente do número decimal.
    • O índice 1 (bits 32-63) contém os 32 bits médios do coeficiente decimal.
    • O índice 2 (64-95 bits) contém a ordem superior de 32 bits do coeficiente decimal.
    • O índice 3 (bits 96-127) contém o bit de sinal e a escala, da seguinte maneira:
      • os bits 0 a 15 são zero
      • bits 16-23 contém a escala como um valor 0-28
      • 24-30 bits são zero
      • bit 31 é o sinal (0 para positivo, 1 para negativo)

4.2.5 O tipo switch

Esse tipo é usado para restringir o tipo de um parâmetro em um comando (§8.10.5). Se um argumento com o nome do parâmetro correspondente estiver presente, o parâmetro é testado como $true; caso contrário, é testado como $false.

No PowerShell, switch é mapeado para System.Management.Automation.SwitchParameter.

4.2.6 Tipos de enumeração

Um tipo de enumeração é aquele que define um conjunto de constantes nomeadas que representam todos os valores possíveis que podem ser atribuídos a um objeto desse tipo de enumeração. Em alguns casos, o conjunto de valores é tal que apenas um valor pode ser representado por vez. Em outros casos, o conjunto de valores são poderes distintos de dois e, usando o operador -bor (§7,8,5), vários valores podem ser codificados no mesmo objeto.

O ambiente do PowerShell fornece vários tipos de enumeração, conforme descrito nas seções a seguir.

4.2.6.1 Tipo Action-Preference

Esse tipo definido pela implementação tem os seguintes membros acessíveis mutuamente com valor exclusivo:

Membro Tipo de Membro Finalidade
Continuar Constante de enumeração O runtime do PowerShell continuará processando e notificará o usuário de que ocorreu uma ação.
Consulta Constante de enumeração O runtime do PowerShell interromperá o processamento e perguntará ao usuário como ele deve continuar.
SilentlyContinue Constante de enumeração O runtime do PowerShell continuará sendo processado sem notificar o usuário de que ocorreu uma ação.
Parar Constante de enumeração O runtime do PowerShell interromperá o processamento quando uma ação ocorrer.

No PowerShell, esse tipo é System.Management.Automation.ActionPreference.

4.2.6.2 tipo Confirm-Impact

Esse tipo definido pela implementação tem os seguintes membros acessíveis mutuamente com valor exclusivo:

Membro Variante de membro Finalidade
Alto Constante de enumeração A ação executada tem um alto risco de perder dados, como reformatar um disco rígido.
Baixo Constante de enumeração A ação executada tem um baixo risco de perda de dados.
Médio Constante de enumeração A ação executada tem um risco médio de perder dados.
Nenhum Constante de enumeração Não confirme nenhuma ação (suprime todas as solicitações de confirmação).

No PowerShell, esse tipo é System.Management.Automation.ConfirmImpact.

4.2.6.3 Tipo File-Attributes

Esse tipo definido pela implementação tem os seguintes membros acessíveis, que podem ser combinados:

Membro Variante de membro Finalidade
Arquivos Constante de enumeração O status do arquivo. Os aplicativos usam esse atributo para marcar arquivos para backup ou remoção.
Comprimido Constante de enumeração O arquivo é compactado.
Dispositivo Reservado para uso futuro.
Diretório Constante de enumeração O arquivo é um diretório.
Criptografado Constante de enumeração O arquivo ou diretório é criptografado. Para um arquivo, isso significa que todos os dados no arquivo são criptografados. Para um diretório, isso significa que a criptografia é o padrão para arquivos e diretórios recém-criados.
Escondido Constante de enumeração O arquivo está oculto e, portanto, não está incluído em uma listagem de diretório comum.
Normal Constante de enumeração O arquivo é normal e não tem nenhum outro conjunto de atributos. Esse atributo é válido somente se usado sozinho.
NotContentIndexed Constante de enumeração O arquivo não será indexado pelo serviço de indexação de conteúdo do sistema operacional.
Offline Constante de enumeração O arquivo está offline. Os dados do arquivo não estão disponíveis imediatamente.
ReadOnly Constante de enumeração Ele é somente leitura.
ReparsePoint Constante de enumeração O arquivo contém um ponto de nova análise, que é um bloco de dados definidos pelo usuário associado a um arquivo ou diretório.
SparseFile Constante de enumeração O arquivo é um arquivo esparso. Arquivos esparsos normalmente são arquivos grandes cujos dados são na maioria zeros.
Sistema Constante de enumeração O arquivo é um arquivo do sistema. O arquivo faz parte do sistema operacional ou é usado exclusivamente pelo sistema operacional.
Temporário Constante de enumeração O arquivo é temporário. Os sistemas de arquivos tentam manter todos os dados na memória para acesso mais rápido em vez de liberar os dados de volta para o armazenamento em massa. Um arquivo temporário deve ser excluído pelo aplicativo assim que ele não for mais necessário.

No PowerShell, esse tipo é System.IO.FileAttributes com o atributo FlagsAttribute.

4.2.6.4 Tipo Regular-Expression-Option

Esse tipo definido pela implementação tem os seguintes membros acessíveis, que podem ser combinados:

Membro Variante de membro Propósito
IgnoreCase Constante de enumeração Especifica que a correspondência diferencia maiúsculas e minúsculas.
Nenhum Constante de enumeração Especifica que nenhuma opção está definida.

Uma implementação pode fornecer outros valores.

No PowerShell, esse tipo é System.Text.RegularExpressions.RegexOptions com FlagsAttributede atributo. Os seguintes valores extras são definidos: Compiled, CultureInvariant, ECMAScript, ExplicitCapture, IgnorePatternWhitespace, Multiline, RightToLeft, Singleline.

4.3 Tipos de referência

4.3.1 Cadeias de caracteres

Um valor de cadeia de caracteres é do tipo string e é uma sequência imutável de zero ou mais caracteres do tipo char, cada um contendo um ponto de código Unicode de 16 bits codificado em UTF-16.

O tipo string tem os seguintes membros acessíveis:

Membro Tipo de Membro Tipo Propósito
Length Propriedade da instância int (somente leitura) Obtém o número de caracteres na cadeia de caracteres
ToLower Método de instância string Cria uma nova cadeia de caracteres que contém o equivalente em letras minúsculas
ToUpper Método de instância string Cria uma nova cadeia de caracteres que contém o equivalente em letras maiúsculas

No PowerShell, string é mapeado para System.String.

4.3.2 Matrizes

Todos os tipos de matriz são derivados do tipo Array. Esse tipo tem os seguintes membros acessíveis:

Membro Variante de membro Tipo Finalidade
Length Propriedade da instância (somente leitura) int Número de elementos na matriz
Posição Propriedade da instância (somente leitura) int Número de dimensões na matriz
Copiar Método estático vazio/ver coluna Propósito

Copia um intervalo de elementos de uma matriz para outra. Há quatro versões, onde source é a matriz de origem, destination é a matriz de destino, count é o número de elementos a copiar, e sourceIndex e destinationIndex são os índices iniciais em suas respectivas matrizes:

Copy(source, destination, int count)
Copy(source, destination, long count)
Copy(source, sourceIndex, destination, destinationIndex, int count)
Copy(source, sourceIndex, destination, destinationIndex, long count)

GetLength Método de instância (somente leitura) int/none

Número de elementos em uma determinada dimensão

GetLength(int dimension)

Para obter mais detalhes sobre matrizes, consulte §9.

No PowerShell, Array é mapeado para System.Array.

4.3.3 Hashtables

O tipo Hashtable tem os seguintes membros acessíveis:

Membro Variante de membro Tipo Finalidade
Count Propriedade da instância int Obtém o número de pares chave/valor no Hashtable
Teclas Propriedade da instância Implementation-defined Obtém uma coleção de todas as chaves
Valores Propriedade da instância Implementation-defined Obtém uma coleção de todos os valores
Remover Método de instância void/none Remove a chave/valor especificado

Para obter mais detalhes sobre Hashtables, consulte §10.

No PowerShell, Hashtable é mapeado para System.Collections.Hashtable. Hashtable elementos são armazenados em um objeto do tipo DictionaryEntry, e as coleções retornadas por Chaves e Valores têm tipo ICollection.

4.3.4 Tipo xml

O tipo xml implementa o Core Nível 1 do DOM (Modelo de Objeto do Documento) W3C e Core Nível 2 do DOM. O DOM é uma representação de árvore na memória (cache) de um documento XML e habilita a navegação e edição deste documento. Esse tipo dá suporte ao operador de subscrição [] (§7.1.4.4).

No PowerShell, xml é mapeado para System.Xml.XmlDocument.

4.3.5 Tipo regex

O tipo regex fornece maquinário para dar suporte ao processamento de expressão regular. Ele é usado para restringir o tipo de um parâmetro (§5.3) cujo argumento correspondente pode conter uma expressão regular.

No PowerShell, regex é mapeado para System.Text.RegularExpressions.Regex.

4.3.6 Tipo ref

Normalmente, os argumentos são transmitidos para comandos por valor. No caso de um argumento que tenha algum tipo de valor, uma cópia do valor é passada. No caso de um argumento que tenha algum tipo de referência, uma cópia da referência é passada.

O tipo ref fornece um mecanismo para permitir que os argumentos sejam passados para comandos por referência, para que os comandos possam modificar o valor do argumento. O tipo 'ref' tem os seguintes membros acessíveis:

Membro Variante de membro Tipo Finalidade
Valor Propriedade da instância (leitura-gravação) O tipo do valor que está sendo referenciado. Obtém/define o valor que está sendo referenciado.

Considere a seguinte definição de função e chame:

function Doubler {
    param ([ref]$x) # parameter received by reference
    $x.Value *= 2.0 # note that 2.0 has type double
}

$number = 8 # designates a value of type int, value 8
Doubler([ref]$number) # argument received by reference
$number # designates a value of type double, value 8.0

Considere o caso em que $number é restrita por tipo:

[int]$number = 8 # designates a value of type int, value 8
Doubler([ref]$number) # argument received by reference
$number # designates a value of type int, value 8

Conforme mostrado, o argumento e seu parâmetro correspondente devem ser declarados ref.

No PowerShell, ref é mapeado para System.Management.Automation.PSReference.

4.3.7 Tipo scriptblock

O tipo scriptblock representa um bloco pré-compilado de texto de script (§7.1.8) que pode ser usado como uma única unidade. Ele tem os seguintes membros acessíveis:

Membro Variante de membro Tipo Finalidade
Atributos Propriedade da instância (somente leitura) Coleção de atributos Obtém os atributos do bloco de script.
Arquivo Propriedade da instância (somente leitura) string Obtém o nome do arquivo no qual o bloco de script é definido.
Módulo Propriedade da instância (somente leitura) implementação definida ([§4.5.12][§4.5.12]) Obtém informações sobre o módulo no qual o bloco de script é definido.
GetNewClosure Método de instância scriptblock
/none
Recupera um bloco de script associado a um módulo. Todas as variáveis locais que estiverem no contexto do chamador serão copiadas para o módulo.
Invoke Método de instância Coleção de object/object[] Invoca o bloco de script com os argumentos especificados e retorna os resultados.
InvokeReturnAsIs Método de instância object/object[] Invoca o bloco de script com os argumentos especificados e retorna todos os objetos gerados.
Criar Método estático scriptblock
/string
Cria um novo objeto scriptblock que contém o script especificado.

No PowerShell, scriptblock é mapeado para System.Management.Automation.ScriptBlock. Invoke retorna uma coleção de PSObject.

4.3.8 Tipo math

O tipo math fornece acesso a algumas constantes e métodos úteis em cálculos matemáticos. Ele tem os seguintes membros acessíveis:

Membro Variante de membro Tipo Propósito
E Propriedade estática (somente leitura) double Base logarítmica natural
PI Propriedade estática (somente leitura) double Razão da circunferência de um círculo para seu diâmetro
Abs Método estático numeric/numeric Valor absoluto (o tipo de retorno é o mesmo que o tipo do argumento passado)
Acos Método estático double/double Ângulo cujo cosseno é o número especificado
Asin Método estático double/double Ângulo cujo seno é o número especificado
Atan Método estático double/double Ângulo cuja tangente é o número especificado
Atan2 Método estático double/double y, double x Ângulo cuja tangente é o quociente de dois números especificados x e y
Teto Método estático

decimal/decimal

double/double

menor número inteiro maior ou igual ao número especificado
Cos Método estático double/double Cosseno do ângulo especificado
Cosh Método estático double/double Cosseno hiperbólico do ângulo especificado
Exp Método estático double/double e elevado à potência especificada
Andar Método estático

decimal/decimal

double/double

Número inteiro maior menor ou igual ao número especificado
Log Método estático

double/double number

double/double number, double base

Logaritmo de número usando base e ou base base
Log10 Método estático double/double Logaritmo base-10 de um número especificado
Max Método estático numeric/numeric Maior que dois números especificados (o tipo de retorno é o mesmo que o tipo dos argumentos passados)
Min Método estático numeric/numeric, numeric Menor de dois números especificados (o tipo de retorno é o mesmo que o tipo dos argumentos passados)
Pow Método estático double/double x, double y Um número especificado x elevado à potência especificada y
Seno Método estático double/double Seno do ângulo especificado
Sinh Método estático double/double Seno hiperbólico do ângulo especificado
Sqrt Método estático double/double Raiz quadrada de um número especificado
Tan Método estático double/double Tangente do ângulo especificado
Tanh Método estático double/double Tangente hiperbólica do ângulo especificado

No PowerShell, Math é mapeado para System.Math.

4.3.9 Tipo ordered

O tipo ordered é um pseudo tipo usado apenas para conversões.

4.3.10 Tipo pscustomobject

O tipo pscustomobject é um pseudo tipo usado apenas para conversões.

4.4 Tipos genéricos

Várias linguagens de programação e ambientes fornecem tipos que podem ser especializados. Muitos desses tipos são chamados de tipos de contêiner, uma vez que as instâncias deles são capazes de conter objetos de algum outro tipo. Considere um tipo chamado Stack que pode representar uma pilha de valores, que podem ser enviados por push e removidos. Normalmente, o usuário de uma pilha deseja armazenar apenas um tipo de objeto nessa pilha. No entanto, se o idioma ou ambiente não der suporte à especialização de tipo, várias variantes distintas do tipo Stack deverão ser implementadas mesmo que todas executem a mesma tarefa, apenas com elementos de tipo diferentes.

A especialização de tipo permite que um tipo genérico seja implementado de modo que possa ser restringido a lidar com alguns subconjuntos de tipos quando usado. Por exemplo

  • Um tipo de pilha genérico que é especializado em manter cadeias de caracteres pode ser escritas como Stack[string].
  • Um tipo de dicionário genérico especializado para armazenar chaves int com valores de cadeia de caracteres associados pode ser escrito como Dictionary[int,string].
  • Uma pilha de pilhas de cadeias de caracteres pode ser escrita como Stack[Stack[string]].

Embora o PowerShell não defina nenhum tipo genérico interno, ele poderá usar esses tipos se eles forem fornecidos pelo ambiente de host. Consulte a sintaxe em §7.1.10.

O nome completo do tipo Stack[string] sugerido acima é System.Collections.Generic.Stack[string]. O nome completo do tipo Dictionary[int,string] sugerido acima é System.Collections.Generic.Dictionary[int,string].

4.5 Tipos anônimos

Em algumas circunstâncias, uma implementação do PowerShell cria objetos de algum tipo e esses objetos têm membros acessíveis para script. No entanto, o nome real desses tipos não precisa ser especificado, contanto que os membros acessíveis sejam especificados de forma suficiente para que possam ser usados. Ou seja, os scripts podem salvar objetos desses tipos e acessar seus membros sem realmente saber os nomes desses tipos. As subseções a seguir especificam esses tipos.

4.5.1 Tipo de descrição do provedor

Esse tipo encapsula o estado de um provedor. Ele tem os seguintes membros acessíveis:

Membro Variante de membro Tipo Finalidade
Unidades Propriedade da instância (somente leitura) Implementação definida (§4.5.2) Uma coleção de objetos de descrição da unidade
Nome Propriedade da instância (somente leitura) string O nome do provedor

No PowerShell, esse tipo é System.Management.Automation.ProviderInfo.

4.5.2 Tipo de descrição da unidade

Esse tipo encapsula o estado de uma unidade. Ele tem os seguintes membros acessíveis:

Membro Variante de membro Tipo Finalidade
Localização Atual Propriedade da instância (leitura-gravação) string O local de trabalho atual (§3.1.4) da unidade
Descrição Propriedade da instância (leitura-gravação) string A descrição da unidade
Nome Propriedade da instância (somente leitura) string O nome da unidade
Raiz Propriedade da instância (somente leitura) string O nome da unidade

No PowerShell, esse tipo é System.Management.Automation.PSDriveInfo.

4.5.3 Tipo de descrição de variável

Esse tipo encapsula o estado de uma variável. Ele tem os seguintes membros acessíveis:

Membro Variante de membro Tipo Finalidade
Atributos Propriedade da instância (somente leitura) Implementação definida Uma coleção de atributos
Descrição Propriedade da instância (leitura-gravação) string A descrição atribuída à variável por meio dos cmdlets New-Variable ou Set-Variable.
Módulo Propriedade da instância (somente leitura) Implementação definida (§4.5.12) O módulo do qual essa variável foi exportada
NomeDoMódulo Propriedade da instância (somente leitura) string O módulo no qual essa variável foi definida
Nome Propriedade da instância (somente leitura) string O nome atribuído à variável quando ela foi criada no idioma do PowerShell ou por meio dos cmdlets New-Variable e Set-Variable.
Opções Propriedade da instância (leitura-gravação) string As opções atribuídas à variável por meio dos cmdlets New-Variable e Set-Variable.
Valor Propriedade da instância (leitura-gravação) objeto O valor atribuído à variável quando ela foi atribuída no idioma do PowerShell ou por meio dos cmdlets New-Variable e Set-Variable.

No PowerShell, esse tipo é System.Management.Automation.PSVariable.

Windows PowerShell: o tipo da coleção de atributos é System.Management.Automation.PSVariableAttributeCollection.

4.5.4 Tipo de descrição do Alias

Esse tipo encapsula o estado de um alias. Ele tem os seguintes membros acessíveis:

Membro Variante de membro Tipo Finalidade
CommandType Propriedade da instância (somente leitura) Implementação definida Deve comparar igual a “Alias”.
Definição Propriedade da instância (somente leitura) string O comando ou alias ao qual o alias foi atribuído por meio dos cmdlets New-Alias ou Set-Alias.
Descrição Propriedade da instância (leitura-gravação) string A descrição atribuída ao alias por meio dos cmdlets New-Alias ou Set-Alias.
Módulo Propriedade da instância (somente leitura) Implementação definida (§4.5.12) O módulo do qual esse alias foi exportado
ModuleName Propriedade da instância (somente leitura) string O módulo no qual esse alias foi definido
Nome Propriedade da instância (somente leitura) string O nome atribuído ao alias quando ele foi criado por meio dos cmdlets New-Alias ou Set-Alias.
Opções Propriedade da instância (leitura-gravação) string As opções atribuídas ao alias por meio dos cmdlets New-Alias New-Alias ou Set-Alias.
TipoDeSaída Propriedade da instância (somente leitura) Coleção definida pela implementação Especifica os tipos de saída de valores pelo comando ao qual o alias se refere.
Parâmetros Propriedade da instância (somente leitura) Coleção definida pela implementação Os parâmetros do comando.
Conjuntos de Parâmetros Propriedade da instância (somente leitura) Coleção definida pela implementação Informações sobre os conjuntos de parâmetros associados ao comando.
ReferencedCommand Propriedade da instância (somente leitura) Implementação definida Informações sobre o comando que é imediatamente referenciado por este alias.
ResolvedCommand Propriedade da instância (somente leitura) Implementação definida Informações sobre o comando para o qual o alias eventualmente é resolvido.

No PowerShell, esse tipo é System.Management.Automation.AliasInfo.

4.5.5 Tipo de descrição do local de trabalho

Esse tipo encapsula o estado de um local de trabalho. Ele tem os seguintes membros acessíveis:

Membro Variante de membro Tipo Finalidade
Unidade Propriedade da instância (somente leitura) Implementação definida (§4.5.2) Um objeto de descrição de disco
Caminho Propriedade da instância (somente leitura) string O local de trabalho
Provedor Propriedade da instância (somente leitura) Implementação definida (§4.5.1) O provedor
ProviderPath Propriedade da instância (somente leitura) string O caminho atual do provedor

Uma pilha de locais de trabalho é uma coleção de objetos de local de trabalho, conforme descrito acima.

No PowerShell, um local de trabalho atual é representado por um objeto do tipo System.Management.Automation.PathInfo. Uma pilha de locais de trabalho é representada por um objeto do tipo System.Management.Automation.PathInfoStack, que é uma coleção de objetos PathInfo.

4.5.6 Tipo de descrição de variável de ambiente

Esse tipo encapsula o estado de uma variável de ambiente. Ele tem os seguintes membros acessíveis:

Membro Variante de membro Tipo Finalidade
Nome Propriedade da instância (leitura-gravação) string O nome da variável de ambiente
Valor Propriedade da instância (leitura-gravação) string O valor da variável de ambiente

No PowerShell, esse tipo é System.Collections.DictionaryEntry. O nome da variável é a chave de dicionário. O valor da variável de ambiente é o valor do dicionário. Name é um AliasProperty que é igual a Key.

4.5.7 Tipo de descrição do aplicativo

Esse tipo encapsula o estado de um aplicativo. Ele tem os seguintes membros acessíveis:

Membro Tipo de Membro Tipo Finalidade
CommandType Propriedade da instância (somente leitura) Implementação definida Deve ser igual a “Aplicativo”.
Definição Propriedade da instância (somente leitura) string Uma descrição do aplicativo.
Extensão Propriedade da instância (leitura-gravação) string A extensão do arquivo de aplicativo.
Módulo Propriedade da instância (somente leitura) Implementação definida (§4.5.12) O módulo que define esse comando.
NomeDoMódulo Propriedade da instância (somente leitura) string O nome do módulo que define o comando.
Nome Propriedade da instância (somente leitura) string O nome do comando.
OutputType Propriedade da instância (somente leitura) Coleção definida pela implementação Especifica os tipos de saída de valores pelo comando.
Parâmetros Propriedade da instância (somente leitura) Coleção definida pela implementação Os parâmetros do comando.
Conjuntos de Parâmetros Propriedade da instância (somente leitura) Coleção definida pela implementação Informações sobre os conjuntos de parâmetros associados ao comando.
Caminho Propriedade da instância (somente leitura) string Obtém o caminho do arquivo de aplicativo.

No PowerShell, esse tipo é System.Management.Automation.ApplicationInfo.

4.5.8 Tipo de descrição do cmdlet

Esse tipo encapsula o estado de um cmdlet. Ele tem os seguintes membros acessíveis:

Membro Tipo de Membro Tipo Finalidade
Tipo de Comando Propriedade da instância (somente leitura) Implementação definida Deve ser igual a “Cmdlet”.
DefaultParameterSet Propriedade da instância (somente leitura) Implementação definida O conjunto de parâmetros padrão usado se o PowerShell não puder determinar qual parâmetro deve ser usado com base nos argumentos fornecidos.
Definição Propriedade da instância (somente leitura) string Uma descrição do cmdlet.
Arquivo de Ajuda Propriedade da instância (leitura-gravação) string O caminho para o arquivo de ajuda para o cmdlet.
TipoDeImplementação Propriedade da instância (leitura-gravação) Implementação definida O tipo que implementa o cmdlet.
Módulo Propriedade da instância (somente leitura) Implementação definida (§4.5.12) O módulo que define esse cmdlet.
ModuleName Propriedade da instância (somente leitura) string O nome do módulo que define o cmdlet.
Nome Propriedade da instância (somente leitura) string O nome do cmdlet.
Substantivo Propriedade da instância (somente leitura) string O nome do substantivo do cmdlet.
TipoDeSaída Propriedade da instância (somente leitura) Coleção definida pela implementação Especifica os tipos de saída de valores pelo cmdlet.
Parâmetros Propriedade da instância (somente leitura) Coleção definida pela implementação Os parâmetros do cmdlet.
ConjuntosDeParâmetros Propriedade da instância (somente leitura) Coleção definida pela implementação Informações sobre os conjuntos de parâmetros associados ao cmdlet.
Verbo Propriedade da instância (somente leitura) string O nome do verbo do cmdlet.
PSSnapIn Propriedade da instância (somente leitura) Implementação definida Windows PowerShell: informações sobre o snap-in do Windows PowerShell que é usado para registrar o cmdlet.

No PowerShell, esse tipo é System.Management.Automation.CmdletInfo.

4.5.9 Tipo de descrição de script externo

Esse tipo encapsula o estado de um script externo (que é diretamente executável pelo PowerShell, mas não é interno). Ele tem os seguintes membros acessíveis:

Membro Variante de membro Tipo Finalidade
TipoComando Propriedade da instância (somente leitura) Implementação definida Deve ser comparado como igual a "ExternalScript".
Definição Propriedade da instância (somente leitura) string Uma definição do script.
Módulo Propriedade da instância (somente leitura) Implementação definida (§4.5.12) O módulo que define esse script.
NomeDoMódulo Propriedade da instância (somente leitura) string O nome do módulo que define o script.
Nome Propriedade da instância (somente leitura) string O nome do script.
OriginalEncoding Propriedade da instância (somente leitura) Implementação definida A codificação original usada para converter os caracteres do script em bytes.
OutputType Propriedade da instância (somente leitura) Coleção definida pela implementação Especifica os tipos de saída de valores pelo script.
Parâmetros Propriedade da instância (somente leitura) Coleção definida pela implementação Os parâmetros do script.
Conjuntos de Parâmetros Propriedade da instância (somente leitura) Coleção definida pela implementação Informações sobre os conjuntos de parâmetros associados ao script.
Caminho Propriedade da instância (somente leitura) string O caminho para o arquivo de script.
ScriptBlock Propriedade da instância (somente leitura) scriptblock O script externo.
ScriptContents Propriedade da instância (somente leitura) string O conteúdo original do script.

No PowerShell, esse tipo é System.Management.Automation.ExternalScriptInfo.

4.5.10 Tipo de descrição da função

Esse tipo encapsula o estado de uma função. Ele tem os seguintes membros acessíveis:

Membro Variante de membro Tipo Finalidade
CmdletBinding Propriedade da instância (somente leitura) bool Indica se a função usa a mesma associação de parâmetro que os cmdlets compilados usam (consulte §12.3.5).
TipoDeComando Propriedade da instância (somente leitura) Implementação definida Pode ser comparado a "Função" ou "Filtro" para verificar qual deles este objeto representa.
DefaultParameterSet Propriedade da instância (somente leitura) string Especifica o conjunto de parâmetros a ser usado se isso não puder ser determinado a partir dos argumentos (consulte §12.3.5).
Definição Propriedade da instância (somente leitura) string Uma versão de cadeia de caracteres do ScriptBlock
Descrição Propriedade da instância (leitura-gravação) string A descrição da função.
Módulo Propriedade da instância (somente leitura) Implementação definida (§4.5.12) O módulo do qual essa função foi exportada
NomeDoMódulo Propriedade da instância (somente leitura) string O módulo no qual essa função foi definida
Nome Propriedade da instância (somente leitura) string O nome da função
Opções Propriedade da instância (leitura-gravação) Implementação definida As opções de escopo da função (§3.5.4).
TipoDeSaída Propriedade da instância (somente leitura) Coleção definida pela implementação Especifica os tipos de saída de valores, em ordem (consulte §12.3.6).
Parâmetros Propriedade da instância (somente leitura) Coleção definida pela implementação Especifica os nomes de parâmetro, em ordem. Se a função agir como um cmdlet (consulte CmdletBinding acima) os parâmetros comuns serão incluídos no final da coleção.
Conjuntos de Parâmetros Propriedade da instância (somente leitura) Coleção definida pela implementação Informações sobre os conjuntos de parâmetros associados ao comando. Para cada parâmetro, o resultado mostra o nome e o tipo do parâmetro e indica se o parâmetro é obrigatório, por posição ou parâmetro de comutador. Se a função agir como um cmdlet (consulte CmdletBinding acima) os parâmetros comuns serão incluídos no final da coleção.
ScriptBlock Propriedade da instância (somente leitura) scriptblock (§4.3.6) O corpo da função

No PowerShell, esse tipo é System.Management.Automation.FunctionInfo.

  • CommandType tem tipo System.Management.Automation.CommandTypes.
  • Options tem tipo System.Management.Automation.ScopedItemOptions.
  • OutputType tem tipo System.Collections.ObjectModel.ReadOnlyCollection``1[[System.Management.Automation.PSTypeName,System.Management.Automation]].
  • Parameters é do tipo System.Collections.Generic.Dictionary``2[[System.String,mscorlib],[System.Management.Automation.ParameterMetadata,System.Management.Automation]].
  • ParameterSets tem tipo System.Collections.ObjectModel.ReadOnlyCollection``1[[System.Management.Automation.CommandParameterSetInfo,System.Management.Automation]].
  • A visibilidade tem o tipo System.Management.Automation.SessionStateEntryVisibility.
  • O PowerShell também tem uma propriedade chamada Visibilidade.

4.5.11 Tipo de descrição de filtro

Esse tipo encapsula o estado de um filtro. Ele tem o mesmo conjunto de membros acessíveis que o tipo de descrição da função (§4.5.10).

No PowerShell, esse tipo é System.Management.Automation.FilterInfo. Ele tem o mesmo conjunto de propriedades que System.Management.Automation.FunctionInfo (§4.5.11).

Tipo de descrição do módulo 4.5.12

Esse tipo encapsula o estado de um módulo. Ele tem os seguintes membros acessíveis:

Membro Variante de membro Tipo Finalidade
Descrição Propriedade da instância (leitura-gravação) string A descrição do módulo (definida pelo manifesto)
Tipo de Módulo Propriedade da instância (somente leitura) Implementação definida O tipo do módulo (Manifesto, Script ou Binário)
Nome Propriedade da instância (somente leitura) string O nome do módulo
Caminho Propriedade da instância (somente leitura) string O caminho do módulo

No PowerShell, esse tipo é System.Management.Automation.PSModuleInfo. O tipo de ModuleType é System.Management.Automation.ModuleType.

4.5.13 Tipo de descrição de objeto personalizado

Esse tipo encapsula o estado de um objeto personalizado. Ele não tem membros acessíveis.

No PowerShell, esse tipo é System.Management.Automation.PSCustomObject. Os cmdlets Import-Module e New-Object podem gerar um objeto desse tipo.

Tipo de descrição de comando 4.5.14

A variável automática $PsCmdlet é um objeto que representa o cmdlet ou a função que está sendo executada. O tipo desse objeto é definido pela implementação; ele tem os seguintes membros acessíveis:

Membro Variante de membro Tipo Finalidade
NomeDoConjuntoDeParâmetros Propriedade da instância (somente leitura) string Nome do conjunto de parâmetros atual (consulte ParameterSetName)
ShouldContinue Método de instância

Sobrecarregado

/bool

Solicita a confirmação de uma operação do usuário.
ShouldProcess Método de instância

Sobrecarregado

/bool

Solicita a confirmação do usuário antes que uma operação seja executada.

No PowerShell, esse tipo é System.Management.Automation.PSScriptCmdlet.

4.5.15 Tipo de descrição de registro de erro

A variável automática $Error contém uma coleção de registros de erro que representam erros recentes (§3,12). Embora o tipo dessa coleção não seja especificado, ele dá suporte à subscrição para obter acesso a registros de erro individuais.

No PowerShell, o tipo de coleção é System.Collections.ArrayList. O tipo de registro de erro individual na coleção é System.Management.Automation.ErrorRecord. Esse tipo tem as seguintes propriedades públicas:

  • CategoryInfo – Obtém informações sobre a categoria do erro.
  • ErrorDetails – Obtém e define informações de erro mais detalhadas, como uma mensagem de erro de substituição.
  • Exceção – Obtém a exceção associada a esse registro de erro.
  • FullyQualifiedErrorId – Obtém o identificador de erro totalmente qualificado para este registro de erro.
  • InvocationInfo – Obtém informações sobre o comando que foi invocado quando o erro ocorreu.
  • PipelineIterationInfo – Obtém o status do pipeline quando esse registro de erro foi criado
  • TargetObject – Obtém o objeto que estava sendo processado quando o erro ocorreu.

Tipo de descrição do enumerador 4.5.16

Várias variáveis são enumeradores para coleções (§4). A variável automática $foreach é o enumerador criado para qualquer instrução foreach. A variável automática $input é o enumerador de uma coleção entregue a uma função do pipeline. A variável automática $switch é o enumerador criado para qualquer instrução switch.

O tipo de um enumerador é definido pela implementação; ele tem os seguintes membros acessíveis:

Membro Tipo de Membro Tipo Propósito
Atual Propriedade da instância (somente leitura) objeto Obtém o elemento atual da coleção. Se o enumerador não estiver posicionado atualmente em um elemento da coleção, o comportamento será definido pela implementação.
Avançar Método de instância Nenhum/bool Avança o enumerador para o próximo elemento da coleção. Retorna $true se o enumerador foi avançado com êxito para o próximo elemento; $false se o enumerador tiver ultrapassado o final da coleção.

No PowerShell, esses membros são definidos na interface System.IEnumerator, que é implementada pelos tipos identificados abaixo. Se o enumerador não estiver posicionado atualmente em um elemento da coleção, uma exceção do tipo InvalidOperationException será gerada. Para $foreach, esse tipo é System.Array+SZArrayEnumerator. Para $input, esse tipo é System.Collections.ArrayList+ArrayListEnumeratorSimple. Para $switch, esse tipo é System.Array+SZArrayEnumerator.

Tipo de descrição de diretório 4.5.17

O cmdlet new-item pode criar itens de vários tipos, incluindo diretórios FileSystem. O tipo de um objeto de descrição de diretório é definido pela implementação; ele tem os seguintes membros acessíveis:

Membro Variante de membro Tipo Finalidade
Atributos Propriedade da instância (leitura-gravação) Implementação definida (§4.2.6.3) Obtém ou define um ou mais dos atributos do objeto de diretório.
CreationTime Propriedade da instância (leitura-gravação) Implementação definida (§4.5.19) Obtém e define a hora de criação do objeto de diretório.
Extensão Propriedade da instância (somente leitura) string Obtém a parte de extensão do nome do diretório.
Nome Completo Propriedade da instância (somente leitura) string Obtém o caminho completo do diretório.
LastWriteTime Propriedade da instância (leitura-gravação) Implementação definida (§4.5.19) Obtém e define a hora em que o diretório foi gravado pela última vez.
Nome Propriedade da instância (somente leitura) string Obtém o nome do diretório.

No PowerShell, esse tipo é System.IO.DirectoryInfo. O tipo da propriedade Attributes é System.IO.FileAttributes.

4.5.18 Tipo de descrição de arquivo

O cmdlet New-Item pode criar itens de vários tipos, incluindo arquivos FileSystem. O tipo de um objeto de descrição de arquivo é definido pela implementação; ele tem os seguintes membros acessíveis:

Membro Tipo de Membro Tipo Finalidade
Atributos Propriedade da instância (leitura-gravação) Implementação definida (§4.2.6.3) Obtém ou define um ou mais dos atributos do objeto de arquivo.
BaseName Propriedade da instância (somente leitura) string Obtém o nome do arquivo, excluindo a extensão.
CreationTime Propriedade da instância (leitura-gravação) Implementação definida (§4.5.19) Obtém e define a hora de criação do objeto de arquivo.
Extensão Propriedade da instância (somente leitura) string Obtém a parte de extensão do nome do arquivo.
Nome Completo Propriedade da instância (somente leitura) string Obtém o caminho completo do arquivo.
LastWriteTime Propriedade da instância (leitura-gravação) Implementação definida (§4.5.19) Obtém e define a hora em que o arquivo foi gravado pela última vez.
Length Propriedade da instância (somente leitura) longo Obtém o tamanho do arquivo, em bytes.
Nome Propriedade da instância (somente leitura) string Obtém o nome do arquivo.
Informação de Versão Propriedade da instância (somente leitura) Implementação definida Windows PowerShell: este ScriptProperty retorna um System.Diagnostics.FileVersionInfo do arquivo.

No PowerShell, esse tipo é System.IO.FileInfo.

4.5.19 Tipo de descrição de data/hora

O tipo de um objeto de descrição de data e hora é definido pela implementação; ele tem os seguintes membros acessíveis:

Membro Variante de membro Tipo Finalidade
Dia Propriedade da instância (somente leitura) int Obtém o componente de dia do mês representado por essa instância.
Hora Propriedade da instância (somente leitura) int Obtém o componente de hora da data representada por essa instância.
Minuto Propriedade da instância (somente leitura) int Obtém o componente de minuto da data representada por essa instância.
Mês Propriedade da instância (somente leitura) int Obtém o componente mensal da data representada por essa instância.
Second Propriedade da instância (somente leitura) int Obtém o componente de segundos da data representada por essa instância.
Year Propriedade da instância (somente leitura) int Obtém o componente de ano da data representada por essa instância.

Um objeto desse tipo pode ser criado pelo cmdlet Get-Date.

No PowerShell, esse tipo é System.DateTime.

4.5.20 Tipo de descrição de Group-Info

O tipo de um objeto de descrição de informações de grupo é definido pela implementação; ele tem os seguintes membros acessíveis:

Membro Tipo de Membro Tipo Propósito
Count Propriedade da instância (somente leitura) int Obtém o número de elementos no grupo.
Grupo Propriedade da instância (somente leitura) Coleção definida pela implementação Obtém os elementos do grupo.
Nome Propriedade da instância (somente leitura) string Obtém o nome do grupo.
Valores Propriedade da instância (somente leitura) Coleção definida pela implementação Obtém os valores dos elementos do grupo.

Um objeto desse tipo pode ser criado pelo cmdlet group-object.

No PowerShell, esse tipo é Microsoft.PowerShell.Commands.GroupInfo.

4.5.21 Tipo de descrição de Generic-Measure-Info

O tipo de um objeto de descrição generic-measure-info é definido pela implementação; ele tem os seguintes membros acessíveis:

Membro Variante de membro Tipo Propósito
Média Propriedade da instância (somente leitura) double Obtém a média dos valores das propriedades que são medidas.
Count Propriedade da instância (somente leitura) int Obtém o número de objetos com as propriedades especificadas.
Máximo Propriedade da instância (somente leitura) double Obtém o valor máximo das propriedades especificadas.
Mínimo Propriedade da instância (somente leitura) double Obtém o valor mínimo das propriedades especificadas.
Propriedade Propriedade da instância (somente leitura) string Obtém a propriedade a ser medida.
Somar Propriedade da instância (somente leitura) double Obtém a soma dos valores das propriedades especificadas.

Um objeto desse tipo pode ser criado pelo cmdlet Measure-Object.

No PowerShell, esse tipo é Microsoft.PowerShell.Commands.GenericMeasureInfo.

4.5.22 Tipo de descrição de Text-Measure-Info

O tipo de um objeto de descrição de informações de texto é definido pela implementação; ele tem os seguintes membros acessíveis:

Membro Variante de membro Tipo Finalidade
Caracteres Propriedade da instância (somente leitura) int Obtém o número de caracteres no objeto de destino.
Linhas Propriedade da instância (somente leitura) int Obtém o número de linhas no objeto de destino.
Propriedade Propriedade da instância (somente leitura) string Obtém a propriedade a ser medida.
Palavras Propriedade da instância (somente leitura) int Obtém o número de palavras no objeto de destino.

Um objeto desse tipo pode ser criado pelo cmdlet Measure-Object.

No PowerShell, esse tipo é Microsoft.PowerShell.Commands.TextMeasureInfo.

Tipo de credencial 4.5.23

Um objeto de credencial pode ser usado em várias operações de segurança. O tipo de objeto de credencial é definido pela implementação; ele tem os seguintes membros acessíveis:

Membro Tipo de Membro Tipo Propósito
Senha Propriedade da instância (somente leitura) Implementação definida Obtém a senha.
UserName Propriedade da instância (somente leitura) string Obtém o nome de usuário.

Um objeto desse tipo pode ser criado pelo cmdlet Get-Credential.

No PowerShell, esse tipo é System.Management.Automation.PSCredential.

4.5.24 Tipo de designador de método

O tipo de um designador de método é definido pela implementação; ele tem os seguintes membros acessíveis:

Membro Tipo de Membro Tipo Finalidade
Invoke Método de instância número e tipo de objeto/variável Usa um número variável de argumentos e chama indiretamente o método referido pelo designador de método pai, transmitindo os argumentos.

Um objeto desse tipo pode ser criado por uma expressão de invocação (§7.1.3).

No PowerShell, esse tipo é System.Management.Automation.PSMethod.

4.5.25 Tipo de definição de membro

Esse tipo encapsula a definição de um membro. Ele tem os seguintes membros acessíveis:

Membro Variante de membro Tipo Finalidade
Definição Propriedade da instância (somente leitura) string Obtém a definição do membro.
Tipo de Membro Propriedade da instância (somente leitura) Implementação definida Obtém o tipo do PowerShell do membro.
Nome Propriedade da instância (somente leitura) string Obtém o nome do membro.
TypeName Propriedade da instância (somente leitura) string Obtém o nome do tipo do membro.

No PowerShell, esse tipo é Microsoft.PowerShell.Commands.MemberDefinition.

4.6 Adaptação e extensão de tipo

Uma implementação do PowerShell inclui uma família de tipos principais (que estão documentados neste capítulo) que contêm seu próprio conjunto de membros base . Esses membros podem ser métodos ou propriedades, e podem ser membros de instância ou estáticos. Por exemplo, os membros base da cadeia de caracteres de tipo (§4.3.1) são o Comprimento da propriedade da instância e os métodos de instância ToLower e ToUpper.

Quando um objeto é criado, ele contém todas as propriedades de instância do tipo desse objeto e os métodos de instância desse tipo podem ser chamados nesse objeto. Um objeto pode ser personalizado por meio da adição de membros da instância em runtime. O resultado é chamado de objeto personalizado. Todos os membros adicionados a uma instância existem apenas para a vida útil dessa instância; outras instâncias do mesmo tipo de núcleo não são afetadas.

O conjunto de membros base de um tipo pode ser aumentado pela adição dos seguintes tipos de membros:

  • membros adaptados, por meio do Sistema de Tipo Estendido (ETS), a maioria dos detalhes não será especificada.
  • membros estendidos, por meio do cmdlet Add-Member.

No PowerShell, os membros estendidos também podem ser adicionados por meio de arquivos types.ps1xml. Membros adaptados e estendidos são coletivamente chamados de membros sintéticos.

O ETS adiciona os seguintes membros a todos os objetos do PowerShell: psbase, psadapted, psextendede pstypenames. Consulte os parâmetros Force e View no cmdlet Get-Member para obter mais informações sobre esses membros.

Um membro de instância pode ocultar um membro estendido e/ou adaptado com o mesmo nome e um membro estendido pode ocultar um membro adaptado. Nesses casos, os conjuntos de membros psadapted e psextended podem ser usados para acessar os membros ocultos.

Se um types.ps1xml especificar um membro chamado dá suporte, obj.psextended fornecerá acesso apenas a esse membro e não a um membro adicionado por meio de Add-Member.

Há três maneiras de criar um objeto personalizado com um novo membro M:

  1. Essa abordagem pode ser usada para adicionar um ou mais membros NoteProperty.

    $x = New-Object PSObject -Property @{M = 123}
    
  2. Essa abordagem pode ser usada para adicionar membros NoteProperty ou ScriptMethod.

    $x = New-Module -AsCustomObject {$M = 123 ; Export-ModuleMember --Variable M}
    
  3. Essa abordagem pode ser usada para adicionar qualquer tipo de membro.

    $x = New-Object PSObject
    Add-Member -InputObject $x -Name M -MemberType NoteProperty -Value 123
    

PSObject é o tipo base de todos os tipos do PowerShell.