Esse T
em "VistaT" não é nenhum T - representa um símbolo de marca registrada: ™ (U + 2122 ou # 8482 em Unicode)
Tente isto:
Get-Computers -OperatingSystem $("Windows Vista" + [char]8482 + " Business")
Por que a Microsoft optou por abusar da capacidade de armazenar símbolos unicode em atributos de valor de string desta forma está além de mim.
Aqui está como eu descobri:
(quando você converter um .NET char
em um inteiro, você obterá o valor de byte para caracteres ASCII ou um ponto de código de 2 bytes para caracteres unicode)
$osString = (Get-ADComputer [VistaComputerName] -Properties operatingSystem).operatingSystem
foreach($c in $osString.ToCharArray())
{
Write-Host $("$c: " + "$([int]$c)")
}
Neste ponto, minha saída consistia em todos os caracteres ASCII (todos inteiros são um único byte), exceto pelo T
:
W: 87
i: 105
n: 110
d: 100
o: 111
w: 119
s: 115
: 32
V: 86
i: 105
s: 115
t: 116
a: 97
T: 8482
: 32
B: 66
u: 117
s: 115
i: 105
n: 110
e: 101
s: 115
s: 115