Se proprio vogliamo parlare di velocità di esecuzione e vogliamo evitare la lentezza con cui la classe recupera i sid è possibile ricorrere ad una delle tante utility di Mark Russinovich, nello specifico a psgetsid
http://technet.microsoft.com/en-us/sysinternals/bb897417.aspx
Una volta copiata in system32 il codice powershell diventa:
$server = "."
$adsi = [ADSI]"WinNT://$server"
$adsi.psbase.children | where {$_.schemaClassName -match "user"} | select @{n="name";e={$_.name}}, @{n="sid";e={(psgetsid $_.name)[1]}} | ? {$_.sid.endswith('-500')} | % {$_.name}
e posto all'interno del cmdlet measure-command restituisce il risultato atteso in un tempo sempre inferiore al secondo.