es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Archivo de salida CSV y comando net user no alineados con el comando PS.

A continuación, tengo un comando de PowerShell para obtener información útil del usuario. También quiero tener la entrada de un archivo CSV con nombres de PC. ¿Cómo puedo darle el mismo formato a todo?

Los dos puntos después del nombre del PC no es igual a lo que he obtenido de la salida de get-aduser. ¿Alguien puede aconsejarme qué hacer?

Ejemplo de lo que he obtenido

Clear-Host
do {
    Write-Host "Ingrese el ID de usuario: " -ForegroundColor Cyan -NoNewline
    $UserName = Read-Host
    Write-Host ""

    Get-ADUser -Identity $Username -Properties * | Select-Object DisplayName, mail, LastLogonDate, LastBadPasswordAttempt, AccountExpirationDate, PasswordLastSet, OfficePhone, Department, Manager

    $Processes = Import-CSV 'C:\Users\w0vlnd\Desktop\Powershells\Computers in a specific workgroup or domain.csv'
    $processes | where "User ID" -like $Username | Select-Object "PC name"

    net user $Username /domain | find "Password expires"
    net user $Username /domain | find "Password changeable"
    Write-Host "`n"
} while ($Username -notcontains $Processes)
Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Para darle el mismo formato a todo, puedes modificar la declaración Select-Object para incluir la información adicional del archivo CSV. Además, puedes usar el comando Format-Table para alinear correctamente las columnas de salida. Aquí tienes un ejemplo:

    Clear-Host
    do {
        Write-Host "Ingrese el ID de usuario:" -ForegroundColor Cyan -NoNewline
        $NombreUsuario = Read-Host
        Write-Host ""
    
        # Obtener información del usuario desde Active Directory
        $Usuario = Get-ADUser -Identity $NombreUsuario -Properties DisplayName, mail, LastLogonDate, LastBadPasswordAttempt, AccountExpirationDate, PasswordLastSet, OfficePhone, Department, Manager
    
        # Obtener lista de PCs desde el archivo CSV
        $Computadoras = Import-CSV 'C:\Users\w0vlnd\Desktop\Powershells\Computadoras en un grupo de trabajo o dominio específico.csv'
    
        # Filtrar la lista de computadoras para aquellas asociadas con el usuario
        $ComputadorasUsuario = $Computadoras | Where-Object { $_.'ID de usuario' -like $NombreUsuario }
    
        # Seleccionar la columna de nombre de la PC y formatear la salida como una tabla
        $ComputadorasUsuario | Select-Object 'Nombre de la PC' | Format-Table -AutoSize
    
        # Mostrar información del usuario junto con los nombres de las PCs
        $Usuario | Select-Object DisplayName, mail, LastLogonDate, LastBadPasswordAttempt, AccountExpirationDate, PasswordLastSet, OfficePhone, Department, Manager, @{Name='Nombre de la PC';Expression={$ComputadorasUsuario.'Nombre de la PC'}} | Format-Table -AutoSize
    
        # Verificar la expiración de la contraseña y la información de cambio
        net user $NombreUsuario /domain | find "La contraseña expira"
        net user $NombreUsuario /domain | find "Puede cambiar la contraseña"
        Write-Host "`n"
    
    } while ($NombreUsuario -notin $Computadoras.'ID de usuario')
    

    Observa que primero hemos almacenado la información del usuario en la variable $Usuario, y luego hemos filtrado la lista de computadoras en función de la variable $NombreUsuario. Luego hemos seleccionado la columna ‘Nombre de la PC’ y formateado la salida usando Format-Table. Finalmente, hemos mostrado la información del usuario junto con los nombres de las PCs asociadas utilizando Select-Object y hemos agregado una propiedad calculada llamada ‘Nombre de la PC’ usando la variable $ComputadorasUsuario del usuario. Una vez más, hemos utilizado Format-Table para asegurarnos de que todas las columnas estén alineadas correctamente.

Comments are closed.