Hace algunos días tuve el requerimiento de cerrar sesiones de usuario en algunos equipos Windows de la empresa. Por supuesto como buen administrador no hiba a ir equipo por equipo a cerrarlas asi que hice uso de unos cuantos comandos para realizar esta tarea de manera remota haciendo uso psexec incluida en la suite de pstools. https://technet.microsoft.com/en-us/sysinternals/pstools.aspx
Procedimiento
1.- Ver las sesiones en el equipo remoto
C:\PSTools>psexec \\user-pc c:\windows\system32\quser.exe
Mostrara algo como lo siguiente:
2.- Utilizando psexec abrimos un cmd en el eqipo remoto
C:\PSTools>psexec \\user-pc c:\windows\system32\cmd.exe
3.- Cerrar la sesion
C:\Windows\system32>logoff /SERVER:user-pc 1 /v
1 representa el valor sessionid
Donde
sessionname The name of the session.
sessionid The ID of the session.
/SERVER:servername Specifies the Terminal server containing the user session to log off (default is current).
/V Displays information about the actions performed.
Recursos sobre Active Directory, Exchange, Power Shell, Windows Server y alguna que otra cosa que tenga que ver con esto de las computadoras :)
jueves, 3 de diciembre de 2015
miércoles, 2 de diciembre de 2015
Listar los perfiles de usuario existentes en un equipo Windows usando Power Shell
En la siguiente entrada veremos el uso de un script para obtener la lista de los perfiles de usuario existentes en un equipo Windows.
El siguiente código lo encontré en la web https://4sysops.com/archives/remotely-query-user-profile-information-with-powershell/ a quien doy el crédito pues me fue de gran ayuda para la obtención de los resultados que en el momento de su uso necesitaba.
Usted necesita guardar el siguiente código como un archivo .ps1
El siguiente código lo encontré en la web https://4sysops.com/archives/remotely-query-user-profile-information-with-powershell/ a quien doy el crédito pues me fue de gran ayuda para la obtención de los resultados que en el momento de su uso necesitaba.
Usted necesita guardar el siguiente código como un archivo .ps1
[cmdletbinding()]
param (
[parameter(ValueFromPipeline=$true,ValueFromPipelineByPropertyName=$true)]
[string[]]$ComputerName = $env:computername
)
foreach ($Computer in $ComputerName) {
$Profiles = Get-WmiObject -Class Win32_UserProfile -Computer $Computer -ea 0
foreach ($profile in $profiles) {
try {
$objSID = New-Object System.Security.Principal.SecurityIdentifier($profile.sid)
$objuser = $objsid.Translate([System.Security.Principal.NTAccount])
$objusername = $objuser.value
} catch {
$objusername = $profile.sid
}
switch($profile.status){
1 { $profileType="Temporary" }
2 { $profileType="Roaming" }
4 { $profileType="Mandatory" }
8 { $profileType="Corrupted" }
default { $profileType = "LOCAL" }
}
$User = $objUser.Value
$ProfileLastUseTime = ([WMI]"").Converttodatetime($profile.lastusetime)
$OutputObj = New-Object -TypeName PSobject
$OutputObj | Add-Member -MemberType NoteProperty -Name ComputerName -Value $Computer.toUpper()
$OutputObj | Add-Member -MemberType NoteProperty -Name ProfileName -Value $objusername
$OutputObj | Add-Member -MemberType NoteProperty -Name ProfilePath -Value $profile.localpath
$OutputObj | Add-Member -MemberType NoteProperty -Name ProfileType -Value $ProfileType
$OutputObj | Add-Member -MemberType NoteProperty -Name IsinUse -Value $profile.loaded
$OutputObj | Add-Member -MemberType NoteProperty -Name IsSystemAccount -Value $profile.special
$OutputObj
}
}
Ejemplos de su uso
Obtención de los perfiles de usuario en un equipo local
.\Get-WindowsProfiles.ps1
Obtención de los perfiles de usuario en un equipo remoto
.\Get-WindowsProfiles.ps1 -ComputerName SRVTIB1
Obtención de los perfiles de usuario en una lista de equipos definidos en un archivo .txt utilizando get-content
.\Get-WindowsProfiles.ps1 -ComputerName (get-content c:\temp\servers.txt)
El resultado seria el siguiente.
Ejemplos de su uso
Obtención de los perfiles de usuario en un equipo local
.\Get-WindowsProfiles.ps1
Obtención de los perfiles de usuario en un equipo remoto
.\Get-WindowsProfiles.ps1 -ComputerName SRVTIB1
Obtención de los perfiles de usuario en una lista de equipos definidos en un archivo .txt utilizando get-content
.\Get-WindowsProfiles.ps1 -ComputerName (get-content c:\temp\servers.txt)
El resultado seria el siguiente.
Suscribirse a:
Entradas (Atom)