Quantcast
Channel: Blog Virtualizacion
Viewing all articles
Browse latest Browse all 679

Powershell: Script búsqueda de ficheros en perfiles Citrix

$
0
0

Powershell: Script búsqueda de ficheros en perfiles Citrix

Hoy os voy a enseñar un script que sirve para buscar ficheros en perfiles de una organización cuando están en diferentes tecnologías como FSLogix o UPM, incluso buscamos en la sesión cuando un perfil carga por error un perfil local.

Os explico un poco lo que hace:

  • Dispongo de varias tecnologías de perfilado para Citrix, RDS,…pero también me interesan los usuarios que trabajan en local.
  • Todos conectados a dominio
  • Se lanza en el logon del usuario mediante GPO
  • Buscamos un tipo de fichero concreto en la carpeta/subcarpetas del Escritorio
  • Adicionalmente, necesito un dato dentro de cada fichero encontrado
  • Preparo el script para poder modificar el valor cuando exista
  • Llevo todos los resultados a CSV y TXT individuales por nombre de usuario
  • Limpio rastro del script en los perfiles

Lo subo a mi perfil GitHub: https://gist.github.com/raulunzue/d6101db08c56fb3c44a85d19f6af0f8d

# Script ElBlogdeNegu de Raúl Unzué
# Se recorre el escritorio de perfiles FSLogix y UPM buscando ficheros WS
# Si no hay ficheros WS genera un fichero en blanco

# SABER EL USUARIO
$usuario=C:\windows\system32\whoami.exe

# ELIMINAR DOMINIO PARA LIMPIAR NOMBRE
$usuariomodificado=$usuario.Substring(8)

# Chequear si se encuentra el archivo
$rutaperfil = "\\NAS01\perfiles_citrix$\$usuariomodificado.NEGU\Desktop"
$Existe = Test-Path $rutaperfil
$rutaperfil2 = "\\NAS01\perfiles_citrix$\$usuariomodificado.V2\Desktop"
$Existe2 = Test-Path $rutaperfil2

If ($Existe -eq $True) {
    #Write-Host "Existe ruta .NEGU"
    # BUSCAR FICHEROS WS EN ESCRITORIO
    Get-ChildItem -Path \\NAS01\perfiles_citrix$\$usuariomodificado.NEGU\Desktop\ -Recurse -Include "*.ws" -Name | Out-file -Filepath \\NAS01\perfiles_citrix$\$usuariomodificado.NEGU\Desktop\listadows.txt
    # BUSCAR VARIABLE
    $table = @()
    ForEach ($file in (Get-Content \\NAS01\perfiles_citrix$\$usuariomodificado.NEGU\Desktop\listadows.txt))
    {
        # Reemplazar texto en fichero WS
        #(Get-Content \\NAS01\perfiles_citrix$\$usuariomodificado.NEGU\Desktop\$file) | ForEach-Object { $_ -replace "24x80", "27x132" } | Set-Content \\NAS01\perfiles_citrix$\$usuariomodificado.NEGU\Desktop\$file
        #Write-Host "Fichero que estamos trabajando $file"
        $clave=  Select-String -Path \\NAS01\perfiles_citrix$\$usuariomodificado.NEGU\Desktop\$file -Pattern 'WorkStationID='
        #Extraer a texto plano variable ScreenSize
        Select-String -Path \\NAS01\perfiles_citrix$\$usuariomodificado.NEGU\Desktop\$file -Pattern 'ScreenSize=' > \\NAS01\aplicaciones\WS_USERS\screensize-$usuariomodificado-$file.txt 
        # EXPORTAR VARIABLES A CSV
        $objRecord = New-Object psobject -Property @{Logon=$usuario;Usuario=$usuariomodificado;Fichero=$file;WorkStationID=$clave} 
        $Table += $objrecord
    }
  } ElseIf ($Existe2 -eq $True) {
    #Write-Host "No existe"
      # BUSCAR FICHEROS WS EN ESCRITORIO
    Get-ChildItem -Path \\NAS01\perfiles_citrix$\$usuariomodificado.V2\Desktop\ -Recurse -Include "*.ws" -Name | Out-file -Filepath \\NAS01\perfiles_citrix$\$usuariomodificado.V2\Desktop\listadows.txt
    # BUSCAR VARIABLE
    $table = @()
    ForEach ($file in (Get-Content \\NAS01\perfiles_citrix$\$usuariomodificado.V2\Desktop\listadows.txt))
    {
        # Reemplazar texto en fichero WS
        #(Get-Content \\NAS01\perfiles_citrix$\$usuariomodificado.V2\Desktop\$file) | ForEach-Object { $_ -replace "24x80", "27x132" } | Set-Content \\NAS01\perfiles_citrix$\$usuariomodificado.V2\Desktop\$file
        #Write-Host "Fichero que estamos trabajando $file"
        $clave=  Select-String -Path \\NAS01\perfiles_citrix$\$usuariomodificado.V2\Desktop\$file -Pattern 'WorkStationID='
        #Extraer a texto plano variable ScreenSize
        Select-String -Path \\NAS01\perfiles_citrix$\$usuariomodificado.V2\Desktop\$file -Pattern 'ScreenSize=' > \\NAS01\aplicaciones\WS_USERS\screensize-$usuariomodificado-$file.txt 
        # EXPORTAR VARIABLES A CSV
        $objRecord = New-Object psobject -Property @{Logon=$usuario;Usuario=$usuariomodificado;Fichero=$file;WorkStationID=$clave} 
        $Table += $objrecord
    }
  }
  Else {
    #Write-Host "No existe"
      # BUSCAR FICHEROS WS EN ESCRITORIO
    Get-ChildItem -Path C:\Users\$usuariomodificado\Desktop\ -Recurse -Include "*.ws" -Name | Out-file -Filepath C:\Users\$usuariomodificado\Desktop\listadows.txt
    # BUSCAR VARIABLE
    $table = @()
    ForEach ($file in (Get-Content C:\Users\$usuariomodificado\Desktop\listadows.txt))
    {
        # Reemplazar texto en fichero WS
        #(Get-Content C:\Users\$usuariomodificado\Desktop\$file) | ForEach-Object { $_ -replace "24x80", "27x132" } | Set-Content C:\Users\$usuariomodificado\Desktop\$file
        #Write-Host "Fichero que estamos trabajando $file"
        $clave=  Select-String -Path C:\Users\$usuariomodificado\Desktop\$file -Pattern 'WorkStationID='
        #Extraer a texto plano variable ScreenSize
        Select-String -Path C:\Users\$usuariomodificado\Desktop\$file -Pattern 'ScreenSize=' > \\NAS01\aplicaciones\WS_USERS\screensize-$usuariomodificado-$file.txt 
        # EXPORTAR VARIABLES A CSV
        $objRecord = New-Object psobject -Property @{Logon=$usuario;Usuario=$usuariomodificado;Fichero=$file;WorkStationID=$clave} 
        $Table += $objrecord
    }
  }


# EXPORTAMOS FICHERO CSV
$table | export-csv \\NAS01\aplicaciones\WS_USERS\report-$usuariomodificado.csv -NoTypeInformation

If ($Existe -eq $True) {
# ELIMINAMOS FICHERO TEMPORAL
Remove-Item \\NAS01\perfiles_citrix$\$usuariomodificado.NEGU\Desktop\listadows.txt
} ElseIf ($Existe2 -eq $True) {
Remove-Item \\NAS01\perfiles_citrix$\$usuariomodificado.V2\Desktop\listadows.txt
}
Else {
Remove-Item C:\Users\$usuariomodificado\Desktop\listadows.txt
}

Espero os parezca interesante…

¿Te ha gustado la entrada SÍGUENOS EN TWITTER?

La entrada Powershell: Script búsqueda de ficheros en perfiles Citrix se publicó primero en Blog VMware y Citrix.


Viewing all articles
Browse latest Browse all 679