elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Arreglado, de nuevo, el registro del warzone (wargame) de EHN


  Mostrar Temas
Páginas: [1]
1  Programación / Scripting / [Powerhshell] Problemas con formula en excel autogenerado en: 27 Marzo 2020, 18:14 pm
Tengo este código de powershell para generar un excel que crea 1 libro excel con dos hojas a partir de 2 csv (se que es un poco cutroso, pero al menos me funciona en una gran mayoria xD). El tema está en que hay una columna (llamada Name) de la primera hoja que hace un buscarv en los datos de la segunda hoja pero no se como cambiar la formula para que aplique los cambios a cada fila.
El código es el siguiente:


Código
  1. $sesioncsv= 'C:\temp\sesiones.csv'
  2. $sesionxlsx= 'C:\temp\sesiones.xlsx'
  3. $correoscsv= 'C:\temp\correos.csv'
  4. $correosxlsx= 'C:\temp\correos.xlsx'
  5.  
  6. $processes= Import-Csv -Path $correoscsv
  7. $Excel = new-object -ComObject excel.application
  8. $Excel.Visible = $true
  9. $workBook = $Excel.Workbooks.Add()
  10. $excel.cells.item(1,1) = "SamAccountName"
  11. $excel.cells.item(1,2) = "Name"
  12. $i = 2
  13. foreach($process in $processes) {
  14. $excel.cells.item($i,1) = $process.samaccountname
  15. $excel.cells.item($i,2) = $process.name
  16. $i++
  17. }
  18. $workBook.saveas($correosxlsx)
  19. $Excel.Quit()
  20. Remove-Variable -Name excel
  21. Remove-Variable -Name i
  22. Remove-Item -path $correoscsv
  23.  
  24. $processes= Import-Csv -Path $sesioncsv
  25. $Excel = new-object -ComObject excel.application
  26. $Excel.Visible = $true
  27. $workBook = $Excel.Workbooks.Open($correosxlsx)
  28. $workSheet = $Excel.WorkSheets.Add()
  29. $worksheet.name = 'sesiones'
  30. $excel.cells.item(1,1) = "ServerName"
  31. $excel.cells.item(1,2) = "SessionId"
  32. $excel.cells.item(1,3) = "UserName"
  33. $excel.cells.item(1,4) = "Name"
  34. $excel.cells.item(1,5) = "DomainName"
  35. $excel.cells.item(1,6) = "ServerIPAddress"
  36. $excel.cells.item(1,7) = "TSProtocol"
  37. $excel.cells.item(1,8) = "ApplicationType"
  38. $excel.cells.item(1,9) = "ResolutionWidth"
  39. $excel.cells.item(1,10) = "ResolutionHeight"
  40. $excel.cells.item(1,11) = "ColorDepth"
  41. $excel.cells.item(1,12) = "CreateTime"
  42. $excel.cells.item(1,13) = "DisconnectTime"
  43. $excel.cells.item(1,14) = "SessionState"
  44. $excel.cells.item(1,15) = "CollectionName"
  45. $excel.cells.item(1,16) = "CollectionType"
  46. $excel.cells.item(1,17) = "UnifiedSessionId"
  47. $excel.cells.item(1,18) = "HostServer"
  48. $excel.cells.item(1,19) = "IdleTime"
  49. $excel.cells.item(1,20) = "RemoteFxEnabled"
  50. $i = 2
  51. foreach($process in $processes) {
  52. $excel.cells.item($i,1) = $process.servername
  53. $excel.cells.item($i,2) = $process.sessionid
  54. $excel.cells.item($i,3) = $process.username
  55. $excel.cells.item($i,4).Formula = '=VLOOKUP(C2,Hoja1!A:B,2,"FALSO")'
  56. $excel.cells.item($i,5) = $process.domainname
  57. $excel.cells.item($i,6) = $process.serveripaddress
  58. $excel.cells.item($i,7) = $process.tsprotocol
  59. $excel.cells.item($i,8) = $process.applicationtype
  60. $excel.cells.item($i,9) = $process.resolutionwidth
  61. $excel.cells.item($i,10) = $process.resolutionheight
  62. $excel.cells.item($i,11) = $process.colordepth
  63. $excel.cells.item($i,12) = $process.createtime
  64. $excel.cells.item($i,13) = $process.disconnecttime
  65. $excel.cells.item($i,14) = $process.sessionstate
  66. $excel.cells.item($i,15) = $process.collectionname
  67. $excel.cells.item($i,16) = $process.collectiontype
  68. $excel.cells.item($i,17) = $process.unifiedsessionid
  69. $excel.cells.item($i,18) = $process.hostserver
  70. $excel.cells.item($i,19) = $process.idletime
  71. $excel.cells.item($i,20) = $process.remotefxenabled
  72. $i++
  73. }
  74. $workBook.saveas($sesionxlsx)
  75. Remove-Variable -Name excel
  76. Remove-Variable -Name i
  77. Remove-Item -path $correosxlsx
  78. Remove-Item -path $sesioncsv
  79. Set-ExecutionPolicy Restricted
  80. exit
  81.  

En principio tengo localizado el error:
Código
  1. $excel.cells.item($i,4).Formula = '=VLOOKUP(C2,Hoja1!A:B,2,"FALSO")'
  2.  

Tengo que cambiar ese C2 por algo que cambie por cada fila, es decir (C2, C3, C4,...) asi hasta la ultima fila que genere.

(Por temas de RGPD no puedo mostrar como saco el contenido de cada csv, pero bueno, creo que se sobreentiende viendo cada foreach que es lo que saca xD)

2  Programación / Bases de Datos / Atascado con una función en SQL SERVER en: 18 Febrero 2019, 21:15 pm
Código
  1. CREATE FUNCTION dbo.captura6(@cuenta NCHAR(100))
  2. RETURNS INT
  3. AS
  4. BEGIN
  5. DECLARE @numero INT;
  6. SELECT @numero = COUNT(*) FROM @cuenta
  7. RETURN @numero
  8. END
  9. GO
  10.  

El objetivo es usar esta función es que devuelva el numero de filas de la tabla pasada por parámetro.
El problema es que el SQL Server Management Studio me dice que @cuenta no está definida, y cuando añado la linea DEFINE @cuenta nchar(100) me dice que ya estaba definida...

No doy encontrado el problema y mucho menos como solucionarlo xD.
3  Programación / Scripting / Necesito ayuda con este .bat en: 4 Marzo 2016, 20:49 pm
Tengo que hacer este ejercicio:
Desarrolla un fichero bat que reciba al menos 4 parametros:
• El primer parametro sera una carpeta de ORIGEN.
• El segundo parametro sera una carpeta de DESTINO.
• El ultimo parametro sera la OPERACION a realizar.
• Los parametros existentes entre el tercero y el ultimo seran extensiones de archivos.
El fichero bat validara que al menos hay 4 parametros. En caso de error finalizara.
El fichero bat validara que ORIGEN existe. En caso de que no exista finalizara.
El fichero bat validara que DESTINO existe. En caso de que no exista finalizara.
El fichero bat validara que OPERACION vale 1,2,3 o 4. En caso de que no lo haga el fichero bat
finalizara.
Acciones a realizar en funcion del valor de operación:
OPERACION=1
• Copia el contenido de la carpeta ORIGEN a la carpeta DESTINO.
OPERACION=2
• Muestra los atributos de todos los archivos existentes en la carpeta DESTINO.
OPERACION=3
• Muestra todas las carpetas y subcarpetas (ficheros no) existentes en la carpeta ORIGEN.
OPERACION=4
• Muestra el numero total de archivos (carpetas no) con las extensiones pasadas como
parametros existentes en la carpeta ORIGEN y en la carpeta DESTINO

Por el momento llevo esto hecho:
Código
  1. @echo off
  2. cls
  3. setlocal enabledelayedexpansion
  4. set contador=0
  5. if "%1%"=="" goto error
  6. if not exist %1 goto fin
  7. if "%2%"=="" goto error
  8. if not exist %2 goto fin
  9. if "%3%"=="" goto error
  10. if %3%==1 goto operacion1
  11. if %3%==2 goto operacion2
  12. if %3%==3 goto operacion3
  13. if %3%==4 goto operacion4
  14. goto fin
  15. if "%4%"=="" goto error
  16.  
  17. :operacion1
  18. copy %1 %2
  19. goto fin
  20. :operacion2
  21. attrib /s %2\*
  22. goto fin
  23. :operacion3
  24. tree %1
  25. goto fin
  26. :operacion4
  27. for /r %1 %%i in (*%4, *%5, *%6) do (
  28. set /a contador=contador+1
  29. echo %%i
  30. )
  31. for /r %2 %%j in (*%4, *%5, *%6) do (
  32.  
  33. set /a contador=contador+1
  34. echo %%j
  35. )
  36. echo El programa ha detectado %contador% archivos
  37. goto fin
  38. :error
  39. echo ERROR
  40. :fin
  41. echo El programa ha finalizado
  42.  


Lo único que me está fallando ahora mismo, obviamente son los for /r de operacion4, ya que quiero que dentro del paréntesis después del in me pille n parámetros, pero que estos parámetros empiecen desde el 4º ( es decir, que no me pille el %1, %2, %3).
Páginas: [1]
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines