Skip to content

Instantly share code, notes, and snippets.

@raulunzue
Created June 9, 2020 08:15
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save raulunzue/f2182a62e500f3de48034ff508f229ea to your computer and use it in GitHub Desktop.
Save raulunzue/f2182a62e500f3de48034ff508f229ea to your computer and use it in GitHub Desktop.
# Script Raúl Unzué - El Blog de Negu
# Buscamos modificar un valor en una clave de registro
# relacionando directorio activo con otra base de datos
# SABER EL USUARIO
$usuario=C:\windows\system32\whoami.exe
# ELIMINAR DOMINIO
$usuariomodificado=$usuario.Substring(5)
# SABER SID DE LISTADO
# BUSCAMOS USUARIO EN DA
(Get-Content "\\SYNOLOGY\SCRIPTS\usuarios-active-directory.txt") | Select-String -Pattern $usuariomodificado | Set-Content "\\SYNOLOGY\SCRIPTS\sid-$usuariomodificado.txt"
# LIMPIAMOS FICHERO
(Get-Content "\\SYNOLOGY\SCRIPTS\sid-$usuariomodificado.txt") | ? {$_.trim() -ne "" } | Set-Content "\\SYNOLOGY\SCRIPTS\sid-$usuariomodificado.txt"
# ELIMINAMOS VALOR DESDE ; PARA LIMPIAR FICHERO
(Get-Content "\\SYNOLOGY\SCRIPTS\sid-$usuariomodificado.txt") -replace ("$usuariomodificado;", "") | Set-Content "\\SYNOLOGY\SCRIPTS\sid-$usuariomodificado.txt"
# CARGAMOS VALOR DE LA PRIMERA LINEA POR SI HAY USUARIOS SYS
$sid= Get-Content "\\SYNOLOGY\SCRIPTS\sid-$usuariomodificado.txt" | select-object -First 1
# BUSCAR AL USUARIO EN EL LISTADO 1
# Buscamos cadena de texto
(Get-Content "\\SYNOLOGY\SCRIPTS\item-screensize-limpio.txt") | Select-String -Pattern $usuariomodificado | Set-Content "\\SYNOLOGY\SCRIPTS\buscar-$usuariomodificado.txt"
# LIMPIAMOS FICHERO
(Get-Content "\\SYNOLOGY\SCRIPTS\buscar-$usuariomodificado.txt") | ? {$_.trim() -ne "" } | Set-Content "\\SYNOLOGY\SCRIPTS\buscar-$usuariomodificado.txt"
# ELIMINAMOS VALOR DESDE ; PARA LIMPIAR FICHERO
(Get-Content "\\SYNOLOGY\SCRIPTS\buscar-$usuariomodificado.txt") -replace ("$usuariomodificado;", "") | Set-Content "\\SYNOLOGY\SCRIPTS\buscar-$usuariomodificado.txt"
# CARGAMOS VALOR Y ELEGIMOS SOLO EL PRIMER VALOR
$ws= Get-Content "\\SYNOLOGY\SCRIPTS\buscar-$usuariomodificado.txt" | select-object -First 1
# COMPROBAMOS SI EXISTE
if ($ws) {
# BUSCAR VALOR PARA EL USUARIO EN EL LISTADO 2
# Buscamos cadena de texto
(Get-Content "\\SYNOLOGY\SCRIPTS\SLTSSNSesionunica.txt") | Select-String -Pattern $ws | Set-Content "\\SYNOLOGY\SCRIPTS\buscar-$usuariomodificado.txt"
# LIMPIAMOS FICHERO
(Get-Content "\\SYNOLOGY\SCRIPTS\buscar-$usuariomodificado.txt") | ? {$_.trim() -ne "" } | Set-Content "\\SYNOLOGY\SCRIPTS\buscar-$usuariomodificado.txt"
# ELIMINAMOS VALOR DESDE ; PARA LIMPIAR FICHERO
(Get-Content "\\SYNOLOGY\SCRIPTS\buscar-$usuariomodificado.txt") -replace ("$ws", "") -replace (";", "") | Set-Content "\\SYNOLOGY\SCRIPTS\buscar-$usuariomodificado.txt"
# CARGAMOS VALOR PRIMER VALOR QUE ENCUENTRE
$valor= Get-Content "\\SYNOLOGY\SCRIPTS\buscar-$usuariomodificado.txt" | select-object -First 1
if ($valor) {
# EXTRAER VALOR ANTIGUO EN CLAVE DE REGISTRO
# EXPORTAR CLAVE DE REGISTRO A TXT
reg export "HKU\$sid\Software\IBM\Client Access Express\CurrentVersion\Environments\Mis conexiones\NEGU\Communication" \\SYNOLOGY\SCRIPTS\export-$usuariomodificado.txt
# BUSCAMOS EL VALOR USER ID ORIGINAL
(Get-Content "\\SYNOLOGY\SCRIPTS\export-$usuariomodificado.txt") | Select-String -Pattern "User ID" | Set-Content "\\SYNOLOGY\SCRIPTS\buscar2-$usuariomodificado.txt"
# LIMPIAMOS LOS VALORES OBTENIDOS
(Get-Content "\\SYNOLOGY\SCRIPTS\buscar2-$usuariomodificado.txt") -replace ('"User ID"=', "") | Set-Content "\\SYNOLOGY\SCRIPTS\buscar2-$usuariomodificado.txt"
(Get-Content "\\SYNOLOGY\SCRIPTS\buscar2-$usuariomodificado.txt") -replace ('"', "") | Set-Content "\\SYNOLOGY\SCRIPTS\buscar2-$usuariomodificado.txt"
(Get-Content "\\SYNOLOGY\SCRIPTS\buscar2-$usuariomodificado.txt") | ? {$_.trim() -ne "" } | Set-Content "\\SYNOLOGY\SCRIPTS\buscar2-$usuariomodificado.txt"
# EXTRAEMOS EL VALOR VIEJO
$valorold= Get-Content "\\SYNOLOGY\SCRIPTS\buscar2-$usuariomodificado.txt"
# IMPORTAR CLAVE DE REGISTRO
# UNA VEZ CAMBIADO EL VALOR SE INYECTA
Set-ItemProperty -Path "Registry::HKEY_USERS\$sid\Software\IBM\Client Access Express\CurrentVersion\Environments\Mis conexiones\NEGU\Communication" -Name "User ID" -Value $valor -Type String
# LOG TEST DE TODOS LOS FICHEROS TRATADOS
$hora=Get-Date
write-output "Hora: $hora ; UsuarioWindows: $usuariomodificado ; ClaveOriginal: $valorold ; NuevaClave: $valor ; SID: $sid ; SesionUtilizada: $ws" | out-file -Filepath \\SYNOLOGY\SCRIPTS\usuarios.log -append
}
Else {
# LOG TEST DE TODOS LOS FICHEROS TRATADOS
$hora=Get-Date
write-output "Hora: $hora ; UsuarioWindows: $usuariomodificado ; ClaveOrginal: $valorold ; NuevaClave: No existe valor en SLTSSN.txt ; SID: $sid ; SesionUtilizada: $ws" | out-file -Filepath \\SYNOLOGY\SCRIPTS\usuarios.log -append
}
}
Else {
# EXTRAER VALOR ANTIGUO EN CLAVE DE REGISTRO
# EXPORTAR CLAVE DE REGISTRO A TXT
reg export "HKU\$sid\Software\IBM\Client Access Express\CurrentVersion\Environments\Mis conexiones\NEGU\Communication" \\SYNOLOGY\SCRIPTS\export-$usuariomodificado.txt
# BUSCAMOS EL VALOR USER ID ORIGINAL
(Get-Content "\\SYNOLOGY\SCRIPTS\export-$usuariomodificado.txt") | Select-String -Pattern "User ID" | Set-Content "\\SYNOLOGY\SCRIPTS\buscar2-$usuariomodificado.txt"
# LIMPIAMOS LOS VALORES OBTENIDOS
(Get-Content "\\SYNOLOGY\SCRIPTS\buscar2-$usuariomodificado.txt") -replace ('"User ID"=', "") | Set-Content "\\SYNOLOGY\SCRIPTS\buscar2-$usuariomodificado.txt"
(Get-Content "\\SYNOLOGY\SCRIPTS\buscar2-$usuariomodificado.txt") -replace ('"', "") | Set-Content "\\SYNOLOGY\SCRIPTS\buscar2-$usuariomodificado.txt"
(Get-Content "\\SYNOLOGY\SCRIPTS\buscar2-$usuariomodificado.txt") | ? {$_.trim() -ne "" } | Set-Content "\\SYNOLOGY\SCRIPTS\buscar2-$usuariomodificado.txt"
# EXTRAEMOS EL VALOR VIEJO
$valorold= Get-Content "\\SYNOLOGY\SCRIPTS\buscar2-$usuariomodificado.txt"
# LOG TEST SI NO EXISTE EL USUARIO EN LISTADO 1
$hora=Get-Date
write-output "Hora: $hora ; UsuarioWindows: $usuariomodificado ; SID: $sid ; ValorActual: $valorold ; No existe el usuario en el listado UsuarioWindows - FicheroWS y no se modifica el valor" | out-file -Filepath \\SYNOLOGY\SCRIPTS\usuarios.log -append
}
# BORRAR ITEMS
Remove-Item -Path \\SYNOLOGY\SCRIPTS\buscar-$usuariomodificado.txt
Remove-Item -Path \\SYNOLOGY\SCRIPTS\buscar2-$usuariomodificado.txt
Remove-Item -Path \\SYNOLOGY\SCRIPTS\export-$usuariomodificado.txt
Remove-Item -Path \\SYNOLOGY\SCRIPTS\sid-$usuariomodificado.txt
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment