Questão de Sistemas Operacionais — Geral — VUNESP 2025
- Código
- vu223105
- Banca
- VUNESP
- Órgão
- CM Marília
- Ano
- 2025
- Cargo
- Aux Inf ( )
- AGet-ADUser, A
- BShow-Users, A
- CGet-UserList, B
- DGet-ADUser, B
- EShow-Users, C
GabaritoD — Get-ADUser, B
Gabarito: letra D — o comando que consulta o usuário no Active Directory é o Get-ADUser e o tratamento para o caso de o usuário estar bloqueado deve ser adicionado no ponto B do código. O Get-ADUser é o cmdlet nativo do módulo ActiveDirectory para recuperar objetos de usuário do AD, e a propriedade LockedOut retorna $true quando a conta está bloqueada — é nesse momento que o script deve agir (ponto B).
O script apresentado é um loop infinito (while ($true)) que, a cada 60 segundos, verifica se o usuário CRM está bloqueado no Active Directory. Para isso, ele precisa consultar o objeto do usuário no AD — e o cmdlet correto para essa tarefa é o Get-ADUser, que faz parte do módulo ActiveDirectory (importado na primeira linha). As alternativas que citam Show-Users ou Get-UserList estão incorretas porque esses comandos não existem no PowerShell para essa finalidade — são distratores inventados.
A lógica do fluxo é a seguinte: o try tenta obter o usuário com Get-ADUser -Identity $username -Properties LockedOut -ErrorAction Stop. Se o usuário não existir ou houver erro, o catch é acionado (ponto A) — ali, o script apenas registra o erro e continua o loop. Se a consulta for bem-sucedida, o if ($user.LockedOut) verifica se a propriedade LockedOut é $true. Se for, o usuário está bloqueado — e é exatamente nesse ponto (B) que devem ser adicionados os comandos de tratamento (como enviar um e-mail de alerta, registrar em log, desbloquear a conta, etc.). Se não estiver bloqueado, o script segue para o else (ponto C), onde pode apenas registrar que está tudo normal.
A pegadinha da questão está em associar o tratamento ao ponto errado. O ponto A é o catch — trata erros de consulta (usuário inexistente, falha de conexão), não o bloqueio. O ponto C é o else — trata o caso de o usuário NÃO estar bloqueado. O ponto B é o if verdadeiro — exatamente onde o bloqueio é detectado. Portanto, o tratamento do bloqueio deve ser no ponto B.
A banca tenta confundir o ponto A (catch) com o tratamento de bloqueio. O catch trata ERROS de consulta (usuário não encontrado, falha de conexão), não o bloqueio em si. O bloqueio é uma condição normal de negócio detectada pela propriedade LockedOut — e isso só é avaliado no if, ponto B. Quem marca A confunde "erro de execução" com "usuário bloqueado".
O comando Get-ADUser está correto, mas o ponto A está errado. O ponto A é o bloco catch, que trata exceções de execução do comando (como usuário inexistente ou falha de conexão com o AD). O bloqueio do usuário não gera exceção — ele é uma propriedade do objeto retornado (LockedOut), verificada no if. Portanto, o tratamento do bloqueio não pode ficar no catch.
Show-Users não é um cmdlet válido do PowerShell para consultar usuários no Active Directory. O módulo ActiveDirectory fornece o Get-ADUser para essa finalidade. Comandos como Show-Users ou Get-UserList não existem na sintaxe do PowerShell para essa tarefa.
Get-UserList também não é um cmdlet válido do PowerShell para consultar usuários no Active Directory. Além disso, o ponto B está correto para o tratamento do bloqueio, mas o comando está errado — o correto é Get-ADUser.
O Get-ADUser é o cmdlet nativo do módulo ActiveDirectory para recuperar objetos de usuário do AD. A sintaxe Get-ADUser -Identity $username -Properties LockedOut retorna o usuário com a propriedade LockedOut, que indica se a conta está bloqueada. O ponto B é o bloco if ($user.LockedOut) — quando a condição é verdadeira, o usuário está bloqueado, e é ali que devem ser adicionados os comandos de tratamento (alerta, log, desbloqueio etc.).
Show-Users não é um cmdlet válido do PowerShell para consultar usuários no Active Directory. Além disso, o ponto C é o else — trata o caso de o usuário NÃO estar bloqueado. Colocar o tratamento de bloqueio no else inverteria a lógica: o script agiria quando o usuário está desbloqueado, o que é exatamente o oposto do desejado.
Gabarito: letra D
Link permanente: /questoes/vu223105