Visual Basic Script para conocer el propietario de un archivo.

Active Directory, Scripts No hay Comentarios »

Este es un script sencillo que nos permite conocer quien es el propietario de un archivo.

Evidentemente en este script el nombre del archivo va incluido dentro del código pero bien utilizado nos amplia un abanico de posibilidades para catalogar ficheros de un directorio de red u otras características que queramos extraer de las propiedades de un fichero.

On Error Resume Next

strComputer = “.”
Set objWMIService = GetObject(“winmgmts:” _
& “{impersonationLevel=impersonate}!\\” & strComputer & “\root\cimv2″)

strFile = “P:\EUROCAJA.XLS” ‘El fichero, cámbialo por lo que quieras

Set colItems = objWMIService.ExecQuery _
(“ASSOCIATORS OF {Win32_LogicalFileSecuritySetting=’” & strFile & “‘}” _
& ” WHERE AssocClass=Win32_LogicalFileOwner ResultRole=Owner”)

For Each objItem in colItems
Wscript.Echo objItem.ReferencedDomainName
Wscript.Echo objItem.AccountName
Next

Copiar el código, pegarlo en un documento de notepad (por ejemplo) y guardarlo como FileOwner.vbs

Solucion al error 0×80041014 de Visual Basic Script

Scripts No hay Comentarios »

Aquí dejo este pequeño post con contenido importante sobre este error.

En los usuarios tengo un acceso directo en el escritorio que apunta a un vbs en el que se realizan una serie de tareas y en algún que otro ordenador me daba el error del titulo.

En concreto en la función que llamaba de la siguiente manera.

If IsRunning("wscript.exe") Then
WScript.Echo "La aplicación ya esta ejecutándose, espere a que termine."
WScript.Quit
End If

El motivo de la función es el destinado a esos usuarios que se impacientan y pulsan 50 veces por segundo el icono de la aplicación porque no ven que ésta “arranque”. No son capaces de pensar que por detrás puede estar haciendo otras funciones antes de mostrar el formulario de Login a la aplicación.

La función:

Function IsRunning(strName)
Set objWMI = GetObject("winmgmts:\\.\root\cimv2")
Set colProcesses = objWMI.ExecQuery("Select * From Win32_Process " & _
"Where Caption = '" & strName & "'")
If colProcesses.Count > 1 Then 'cuento que exista mas de un proceso wscript ejecutandose
IsRunning = True
Else
IsRunning = False
End If
End Function

El error era marcado en la primera linea de la función.

Pues después de probar y probar resulta que según parece este error es causado por el incorrecto registro de algunas dlls implicadas.

Para solucionarlo solo hay que abrir una ventana de comandos de msdos e irse hasta %windir%\System32\Wbem y cuando estemos con el prompt allí escribimos:

for %i in (*.dll) do regsvr32 -s %i

Esto registra de nuevo en modo silencioso todas las dlls de ese directorio y acaba con el problema.

Vbs para extraer mail de Active Directory

Scripts No hay Comentarios »

Muy simple script que sirve para extraer las cuentas de email del active directory.

Si tenéis mas cuentas en "proxyAddresses" este script no las tiene en cuenta.

Visual Basic:
  1. Option Explicit
  2.  
  3. Dim strDomainDN, strBase, strFilter, strAttrs, strScope
  4. Dim objDIC
  5. Dim objCmd, objConn, objRS
  6. Dim iCount
  7.  
  8. strDomainDN = "dc=tudominio,dc=com"
  9. strBase   =  "<GC://" & strDomainDN & ">;"
  10.  
  11. strFilter = "(mail=*);"
  12. strAttrs  = "name,adspath,mail,url;"
  13. strScope  = "subtree"
  14.  
  15. Set objDIC = CreateObject ("Scripting.Dictionary")
  16.  
  17. Set objConn = CreateObject ("ADODB.Connection")
  18. objConn.Provider = "ADsDSOObject"
  19. objConn.Open "Active Directory Provider"
  20.  
  21. Set objCmd = CreateObject ("ADODB.Command")
  22.  
  23. objCmd.ActiveConnection = objConn
  24. objCmd.CommandText = strBase & strFilter & strAttrs & strScope
  25. objCmd.Properties ("Page Size") = 1000
  26.  
  27. Set objRS = objCmd.Execute
  28. objRS.MoveFirst
  29.  
  30. while Not objRS.EOF
  31. Wscript.Echo "name = " & objRS.Fields(0).Value & ";mail = " & objRS.Fields(2).value
  32. wscript.echo "adspath = " & objRS.Fields(1).Value
  33. 'wscript.echo "url = " & objRS.Fields(3).value
  34. wscript.echo
  35.  objRS.MoveNext
  36. wend
  37. wscript.quit 0

Lista ficheros por extensión + DateDiff. VBScript

Scripts 3 Comentarios »

Este es un Script que he hecho para un amigo. Como me ha parecido un poco extraño que me preguntase por esto lo voy a plasmar aquí por si a alguien mas le ayuda.

¿Que hace el Script?

En el directorio seleccionado lista todos los ficheros con la extensión definida (en este caso "001") y si han pasado mas de 15 días desde su última modificación lo borra.

Visual Basic:
  1. sExt = "001"
  2. ahora=Now
  3. With CreateObject("Scripting.FileSystemObject")
  4.     For Each oFile In .GetFolder("c:\temp").Files
  5.         If UCase(.GetExtensionName(oFile.Name)) = Ucase(sExt) Then
  6. ' Comparación con el día de la ultima modificación
  7.             If datediff("d",oFile.DateLastModified,ahora)>= 15 Then
  8.                 Wsh.Echo oFile.Path
  9.                     .deletefile(oFile.path)
  10.             End If
  11.         End If
  12.     Next
  13. End With

Si queréis que la diferencia sea entre el día de creación y hoy el DateDiff ha de ser el siguiente:

Visual Basic:
  1. If datediff("d",oFile.DateCreated,ahora)>= 15 Then

para diferencia entre el día del ultimo acceso y hoy:

Visual Basic:
  1. If datediff("d",oFile.DateLastAccessed,ahora)>= 15 Then

Ojo que como os he dicho tal y como está el Script borraría el fichero.

WP Theme & Icons originales por N.Design Studio.
Aviso Legal Entradas RSS Comentarios RSS Acceder