Por que Get-Computers -OperatingSystem "Windows VistaT Business"
não retorna nada? Funciona perfeitamente para todos os outros tipos de sistema operacional.
Function Get-Computers
{
Param($OperatingSystem)
Get-AdComputer -Filter 'OperatingSystem -eq ${OperatingSystem}' -SearchBase "OU=Departement,DC=contoso,DC=com"
}
#Get-Computers -OperatingSystem "Windows Server 2012 R2 Standard"
#Get-Computers -OperatingSystem "Windows Server 2008 R2 Standard"
#Get-Computers -OperatingSystem "Windows 7 Professional"
Get-Computers -OperatingSystem "Windows VistaT Business"
Eu definitivamente tenho clientes Vista e a string a ser procurada é Windows VistaT Business
.
PS C:\> (get-adcomputer ClientA -Properties *).OperatingSystem
Windows 7 Professional
PS C:\> (get-adcomputer ClientB -Properties *).OperatingSystem
Windows VistaT Business
Isso
T
em "VistaT" não é um T - representa um símbolo de marca registrada: ™ (U+2122 ou #8482 em Unicode)Tente isto:
Por que a Microsoft escolheu abusar da capacidade de armazenar símbolos unicode em atributos de valor de string dessa maneira está além de mim.
Aqui está como eu descobri:
(Ao converter um .NET
char
em um número inteiro, você obterá o valor do byte para caracteres ASCII ou um ponto de código de 2 bytes para caracteres unicode)Neste ponto, minha saída consistia em todos os caracteres ASCII (todos os inteiros de um único byte), exceto para
T
: