Por que não está funcionando?
De acordo com esta postagem de blog da Microsoft , sua consulta não pode recuperar informações sobre a conta de um usuário de domínio quando o domínio não está acessível. Isso porque Win32_Account
tem propriedades que exigem informações do controlador de domínio para serem preenchidas. Portanto, a construção da instância Win32_Account
falhará e as entradas relevantes não aparecerão nos resultados.
O que pode ser feito?
É realmente um estado triste, mas você precisará analisar a Antecedent
string da classe Win32_LoggedOnUser
para obter com fiabilidade o nome de uma conta quando não puder falar com o domínio dela. O nome da conta está entre Name="
e "
, como você pode ver na saída de gwmi -class Win32_LoggedOnUser
. Tenho certeza que você poderia fazer melhor com expressões regulares, mas esta é a minha maneira rápida e suja de imprimir apenas os nomes de usuários de todas as sessões de logon:
gwmi -Query "select * from win32_loggedonuser" | ForEach-Object { (($_.Antecedent -Split "Name='"")[1] -Split "'"")[0] }
(Como não estou correlacionando com as sessões de console reais aqui, haverá alguns usuários falsos frouxos, como DWM-1
.)