none
powershell remove remote desktop services profile RRS feed

  • Pregunta

  • buenos dias

    necesito borrar de  "remote desktop services profile" de 600 usuarios el "profile Path" o de todos nadie deberia tener ya.

    alguna idea con powerShell?

    


    emilio jose sanchez gonzalez MCSE 2008 / 2012

    viernes, 22 de julio de 2016 10:10

Respuestas

  • Hola,

    Prueba con este script:

    $Error.Clear()
    Clear-Host
    
    $NewTSProfilePath = "" #Pones la nueva ruta o lo dejas en blanco si lo que quieres el borrarlo.
    
    $DS = New-Object System.DirectoryServices.DirectorySearcher
    $DS.PageSize = 15000
    $DS.Filter = "(&(objectCategory=person)(objectCategory=User))"
    $DS.SearchRoot = "LDAP://ou=tu_ou_de_usuarios,dc=tudominio,dc=local" #La OU donde están los usuarios que quieres cambiar
    $ADUsers = $DS.FindAll()
    
    ForEach ($User in $ADUsers)
    {
    	$Props = $null
    	$Props = $User.Properties
    	$Username = $null
    	$Username = $Props.samaccountname
    	$DN = $null
    	$DN = $Props.distinguishedname
    	
    	Write-Host -ForegroundColor DarkRed "Actualizando $Username con el TsProfilePath: $NewTSProfilePath"
    	Try
    	{
    		$UserDN = [ADSI] "LDAP://$DN" 
            $UserDN.psbase.invokeSet("TerminalServicesProfilePath",$NewTSProfilePath) 
            $UserDN.setinfo()  
    	}
    	Catch
    	{
    		Write-Output $Error
    	}
    }
    
    

    Para probarlo crea una OU de pruebas y pon un usuario ahí. En el filtro $DS.SearchRoot pones esa OU, así compruebas que lo haga como necesitas afectando a un único usuario. Cuando esté bien pones la OU real donde están tus usuarios.

    Espero que te sirva.

    Un saludo.

    Diego

    viernes, 22 de julio de 2016 11:47

Todas las respuestas

  • Hola,

    Prueba con este script:

    $Error.Clear()
    Clear-Host
    
    $NewTSProfilePath = "" #Pones la nueva ruta o lo dejas en blanco si lo que quieres el borrarlo.
    
    $DS = New-Object System.DirectoryServices.DirectorySearcher
    $DS.PageSize = 15000
    $DS.Filter = "(&(objectCategory=person)(objectCategory=User))"
    $DS.SearchRoot = "LDAP://ou=tu_ou_de_usuarios,dc=tudominio,dc=local" #La OU donde están los usuarios que quieres cambiar
    $ADUsers = $DS.FindAll()
    
    ForEach ($User in $ADUsers)
    {
    	$Props = $null
    	$Props = $User.Properties
    	$Username = $null
    	$Username = $Props.samaccountname
    	$DN = $null
    	$DN = $Props.distinguishedname
    	
    	Write-Host -ForegroundColor DarkRed "Actualizando $Username con el TsProfilePath: $NewTSProfilePath"
    	Try
    	{
    		$UserDN = [ADSI] "LDAP://$DN" 
            $UserDN.psbase.invokeSet("TerminalServicesProfilePath",$NewTSProfilePath) 
            $UserDN.setinfo()  
    	}
    	Catch
    	{
    		Write-Output $Error
    	}
    }
    
    

    Para probarlo crea una OU de pruebas y pon un usuario ahí. En el filtro $DS.SearchRoot pones esa OU, así compruebas que lo haga como necesitas afectando a un único usuario. Cuando esté bien pones la OU real donde están tus usuarios.

    Espero que te sirva.

    Un saludo.

    Diego

    viernes, 22 de julio de 2016 11:47
  • muchas gracias actualizo perfectamente

    emilio jose sanchez gonzalez MCSE 2008 / 2012

    sábado, 23 de julio de 2016 12:02