Os dejo este pequeño POST con tres ejemplos resueltos donde planteo el «pequeño problema» de visualar con PowerShell los miembros de un grupo LOCAL que se entra por teclado. El POST pretende ser un ejemplo de sintaxis para aprender sobre la marcha.. es decir, viendo ejemplos y teniendo ciertos conceptos de programación.
He realizado tres implementacione de forma escalar a nivel de dificultad y control de errores.
SOLUCIÓN 1
En esta primera versión se entra el nombre del grupo local por teclado mediante Read-Host y se visualizan sus miembros directamente. A destacar el parámetro -ErrorAction SilentlyContinue. Lo he puesto dado que en caso que el nombre del grupo entrado por teclado no exista, el programa visualiza un error en tiempo de ejecución por pantalla y no queda estético.
##################################################################### # SCRIPT : Visualizar miembros grupo local por pantalla # # VERSION: 1.0 # # Autor : José Luis Sánchez # ##################################################################### Clear-Host $NombreGrupo = Read-Host "Entra el nombre del grupo: " Get-LocalGroupMember -Name $NombreGrupo -ErrorAction SilentlyContinue Write-Host 'FIN PROCESO'
SOLUCIÓN 2
##################################################################### # # # SCRIPT : Visualizar miembros grupo local por pantalla # # VERSION: 2.0 # # Autor : José Luis Sánchez # # # # Mejoras 2.0 # # - Comprobamos si el grupo existe o no. # # - El script visualiza mensaje de error si no existe el grupo # # # ##################################################################### Clear-Host $NombreGrupo = Read-Host "Entra el nombre del grupo " $resultado = (Get-LocalGroup).Name | Where-Object {$_ -eq $NombreGrupo} if ($resultado.Length -ne 0) { Get-LocalGroupMember -Name $NombreGrupo } else { Write-Output "El grupo NO $NombreGrupo no existe" }
SOLUCIÓN 3
##################################################################### # # # SCRIPT : Visualizar miembros grupo local por pantalla # # VERSION: 3.0 # # Autor : José Luis Sánchez # # # # Mejoras 3.0 # # - Visualizamos menú con los grupos y se pide por menú # # que el usuario entre el número del grupo a visualizar. # # # ##################################################################### [System.Collections.ArrayList]$ListaGrupos = @() Clear-Host $Grupos = (Get-LocalGroup).Name Write-Output "Lista de grupos locales" ForEach ($Grup in $Grupos) { $result = $ListaGrupos.Add($Grup) Write-Output " $result $Grup" } $Opcion = Read-Host "Elige un grupo: " $NombreGrupo = $ListaGrupos[$opcion] if ($NombreGrupo -eq $null) { Write-Output "Has elegido mal..." } else { Get-LocalGroupMember -Name $NombreGrupo }
Como siempre digo, la programación requiere de mucha imaginación y capacidad de abtracción… Hay más y mejores soluciones seguro, te animo a ponerlas como comentarios del POST y las compartimos entre todos.