Todos los usuarios de la empresa pasaban tarde o temprano por alguna sala e incluso abrían el Outlook en el equipo de la sala, con la debida sincronización del OST y claro tras 4 o 5 usuarios identificados en el equipo este se quedaba casi sin espacio en el disco, y así con todos los equipos de salas.
Tras reunirnos para mirar de acotar y eliminar este problema de nuestra cola, optamos la inclusión de estos equipos en una OU especial donde el SCCM se encargase de borrar los discos de estas máquinas cada semana aproximadamente. Dicho parche funcionó bien durante la menos 1 mes.
Otra vez teníamos encima de la mesa esta problemática, lentitud en los equipos de reunión, imposibilidad de abrir el correo, modificar documentos...
Y entonces optamos por la ejecución remota de un script para borrar los perfiles de los equipos de reunión. Al principio era una tarea ardua ya que en algunos equipos habían más de 20 usuarios con una media de 30 GB por cabeza, pero tras unas semanas ejecutando el parche semanalmente, y con la ayuda de las políticas del SCCM hemos podido acotar este tipo de tickets.
Fuente: Google y nuestro compañero de WorkPlace.
CÓDIGO
#Prompt for a computer to connect to $computer = Read-Host "Ingrese el Equipo donde quiere eliminar el perfil" #Test network connection before making connection If ($computer -ne $Env:Computername) { If (!(Test-Connection -comp $computer -count 1 -quiet)) { Write-Warning "$computer El PC no esta accesible , Verifique que este encendido." Break } } Try { #Verify that the OS Version is 6.0 and above, otherwise the script will fail If ((Get-WmiObject -ComputerName $computer Win32_OperatingSystem -ea stop).Version -lt 6.0) { Write-Warning "Sistema Operativo No soportado.`nClient: Vista and above`nServer: Windows 2008 and above."
Break } } Catch { Write-Warning "$($error[0])" Break } Do { #Gather all of the user profiles on computer Try { [array]$users = Get-WmiObject -ComputerName $computer Get-CimInstance -ClassName Win32_UserProfile -filter "LocalPath Like 'C:\\Users\\%'" -ea stop } Catch { Write-Warning "$($error[0]) " Break } #Cache the number of users $num_users = $users.count Write-Host -ForegroundColor Green "Perfiles Disponibles para eliminar $($computer):" #Begin iterating through all of the accounts to display For ($i=0;$i -lt $num_users; $i++) { Write-Host -ForegroundColor Green "$($i): $(($users[$i].localpath).replace('C:\Users\',''))" } Write-Host -ForegroundColor Green "q: Cancelar" #Prompt for user to select a profile to remove from computer Do { $account = Read-Host "Seleccione el Numero del perfil a eliminar o 'q' para cancelar" #Find out if user selected to quit, otherwise answer is an integer If ($account -NotLike "q*") { $account = $account -as [int] } } #Ensure that the selection is a number and within the valid range Until (($account -lt $num_users -AND $account -match "\d") -OR $account -Like "q*") If ($account -Like "q*") { Break } Write-Host -ForegroundColor red "Eliminando Perfil: $(($users[$account].localpath).replace('C:\Users\',''))" #Remove the local profile ($users[$account]).Delete() Write-Host -ForegroundColor Green "Perfil: $(($users[$account].localpath).replace('C:\Users\','')) Ha sido eliminado correctamente" #Configure yes choice $yes = New-Object System.Management.Automation.Host.ChoiceDescription "&Yes","Desea eliminar Otro Perfil." #Configure no choice $no = New-Object System.Management.Automation.Host.ChoiceDescription "&No","Salir/No eliminar Mas perfiles" #Determine Values for Choice $choice = [System.Management.Automation.Host.ChoiceDescription[]] @($yes,$no) #Determine Default Selection [int]$default = 0 #Present choice option to user $userchoice = $host.ui.PromptforChoice("","Desea eliminar Otro Perfil?",$choice,$default) } #If user selects No, then quit the script Until ($userchoice -eq 1)
No hay comentarios:
Publicar un comentario