Script VBScript Para Copiar Estructuras De OUs De Un Dominio En Otro
Publicado por urpiano en Martes 17 de Junio de 2008
Este script copia las OUs (son OUs a nivel raíz del dominio de origen) y todo el árbol de OUs del que son raíz, que están en el fichero de OUs a copiar, en el dominio de destino. Si no se pasa el fichero de OUs a copiar, el script lista las OUs que existen en el dominio que recibe como parámetro de dominio de origen y copia la misma estructura de OUs en el dominio de destino. El resultado del proceso puede ser visto por pantalla o volcado a un fichero de valores separados por tabuladores, ideal para ser abierto por Excel. ‘¡¡OJO!!’, sólo copia las OUs, no los equipos, usuarios o contactos que contengan.
Sintaxis
cscript [//nologo] copiar-ous.vbs /O:dominio /D:dominio [/F:fichero] [/U:Ous] [/?]
Siendo
| Etiqueta | Dato | ¿Requerido? | Descripción |
| O | dominio | Sí |
Nombre DNS del dominio de origen
|
| D | dominio | Sí |
Nombre DNS del dominio de destino
|
| F | fichero | No |
Ruta y nombre del fichero en el que se guardará el resultado como fichero de valores separados por comas. Si se omite, los resultados se muestran por pantalla
|
| U | Ous | No |
Nombre de un fichero de texto con las OUs que se quieren copiar, una por línea. Se trata del nombre de OUs a nivel de la raíz del dominio. Se crean las OUs de la lista y las OUs que contenga (todo el árbol). Si se omite este parámetro, el script creará todas las OUs del dominio de origen en el de destino
|
| ? | No |
Muestra la ayuda en línea.
|
Ejemplos:
- Copia las OUs del dominio comarca.org en el dominio rivendel.gov, mostrando el resultado por pantalla.:
cscript //nologo copiar-ous.vbs /O:comarca.org /D:rivendel.gov
- Copia las OUs del dominio comarca.org en el dominio rivendel.gov, guardando los resultados en el fichero d:listadosCopia-OUsComarca.tsv:
cscript //nologo copiar-ous.vbs /O:comarca.org /D:rivendel.gov /F:d:listadosCopia-OUsComarca.tsv
- Copia las OUs contenidas en el fichero \bree01Ousous-a-copiar.txt y pertenecientes al dominio comarca.org en el dominio rivendel.gov, guardando los resultados en el fichero d:listadosCopia-OUsComarca.tsv:
cscript //nologo copiar-ous.vbs /O:comarca.org /D:rivendel.gov /F:d:listadosCopia-OUsComarca.tsv /U:\bree01Ousous-a-copiar.txt
Este es el código del script
'*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*
'*°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°*
'* copiar-ous.vbs *
'* *
'* Este script copia las OUs (son OUs a nivel raíz del dominio de *
'* origen) y todo el árbol de OUs del que son raíz, que están en el *
'* fichero de OUs a copiar, en el dominio de destino. Si no se pasa el *
'* fichero de OUs a copiar, el script lista las OUs que existen en el *
'* dominio que recibe como parámetro de dominio de origen y copia la *
'* misma estructura de OUs en el dominio de destino. El resultado del *
'* proceso puede ser visto por pantalla o volcado a un fichero de *
'* valores separados por tabuladores, ideal para ser abierto por Excel *
'* *
'* Sintaxis *
'* *
'* cscript [//nologo] copiar-ous.vbs /O:dominio /D:dominio *
'* [/F:fichero] [/U:Ous] [/?] *
'* *
'* Siendo *
'* *
'* - /O: dominio (Requerido): *
'* Nombre DNS del dominio de origen *
'* *
'* - /D: dominio (Requerido): *
'* Nombre DNS del dominio de destino *
'* *
'* - /F: fichero (Opcional): *
'* Ruta y nombre del fichero en el que se guardará el *
'* resultado como fichero de valores separados por comas. Si *
'* se omite, los resultados se muestran por pantalla *
'* *
'* - /U: Ous (Opcional): *
'* Nombre de un fichero de texto con las OUs que se quieren *
'* copiar, una por línea. Se trata del nombre de OUs a nivel *
'* de la raíz del dominio. Se crean las OUs de la lista y las *
'* OUs que contenga (todo el árbol). Si se omite este *
'* parámetro, el script creará todas las OUs del dominio de *
'* origen en el de destino *
'* *
'* - /?: ayuda (Opcional): *
'* Muestra la ayuda en línea *
'* *
'* *
'* Ejemplos: *
'* *
'* - Copia las OUs del dominio comarca.org en el dominio rivendel.gov, *
'* mostrando el resultado por pantalla.: *
'* *
'* cscript //nologo copiar-ous.vbs /O:comarca.org /D:rivendel.gov *
'* *
'* - Copia las OUs del dominio comarca.org en el dominio rivendel.gov, *
'* guardando los resultados en el fichero *
'* d:listadosCopia-OUsComarca.tsv: *
'* *
'* cscript //nologo copiar-ous.vbs /O:comarca.org /D:rivendel.gov *
'* /F:d:listadosCopia-OUsComarca.tsv *
'* *
'* - Copia las OUs contenidas en el fichero *
'* \bree01Ousous-a-copiar.txt y pertenecientes al dominio *
'* comarca.org en el dominio rivendel.gov, guardando los resultados en *
'* el fichero d:listadosCopia-OUsComarca.tsv: *
'* *
'* cscript //nologo copiar-ous.vbs /O:comarca.org /D:rivendel.gov *
'* /F:d:listadosCopia-OUsComarca.tsv /U:\bree01Ousous-a-copiar.txt*
'* *
'* *
'* © Fernando Reyes *
'* Junio De 2008 *
'*°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°*
'*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*
'Exigimos la declaración de variables
Option Explicit
Dim str_Error 'As String
Dim int_Error 'As String
Dim str_DominioDestino 'As String
Dim str_DominioOrigen 'As String
Dim str_Fichero 'As String
Dim str_Salida 'As String
Dim str_Linea 'As String
Dim arr_Ous 'As String
Dim obj_FS 'As Scripting.FileSystemObject
Dim obj_TS 'As Scripting.TextStream
Dim str_DNOU 'As String
Dim str_DNOUDestino 'As String
Dim obj_DominioOrigen 'As IAsDomain
Dim obj_DominioDestino 'As IAsDomain
Dim obj_OUOrigen 'As IAsOrganizationalUnit
Dim obj_OUDestino 'As IAsOrganizationalUnit
'Validando los argumentos y almacenando
'sus valores
If f_RevisarArgumentos( _
str_Error, _
int_Error) Then
Call s_Ayuda(str_Error)
WScript.Quit int_Error
End If
'Ponemos los encabezados a la salida
str_Linea = "DN Origen" & vbTab & _
"RDN Origen" & vbTab & _
"DN Destino" & vbTab & _
"RDN Destino"
'Si no hay que volcar los resultados a un fichero
If Len(str_Fichero) = 0 Then
'Mostramos los encabezados por pantalla
WScript.Echo str_Linea
'Subrayamos los encabezados
WScript.Echo "=========" & vbTab & _
"==========" & vbTab & _
"==========" & vbTab & _
"==========="
'Si los resultados van a fichero
Else
'Nos guardamos los encabezados en la salida
str_Salida = str_Linea & vbCrLf
End If
'Vaciamos la variable con la línea
str_Linea = ""
'Obtenemos el objeto con el dominio de origen
Set obj_DominioOrigen = GetObject("LDAP://" & str_DominioOrigen)
'Obtenemos el objeto con el dominio de destino
Set obj_DominioDestino = GetObject("LDAP://" & str_DominioDestino)
'En función de que tengamos que copiar todos las OUs del dominio
'o sólo las del fichero usaremos un bucle u otro. El
'primer bucle es si se usan las OUs del fichero
If WScript.Arguments.Named.Exists("U") Then
'Recorremos el array de OUs
For Each str_DNOU In arr_Ous
'Descartamos las líneas en blanco
If Len(str_DNOU) > 0 Then
'Montamos la línea a mostrar
str_Linea = "OU=" & str_DNOU & "," & _
str_DominioOrigen & vbTab & _
str_DNOU
'Ponemos control de errores por si ya existiera
'la OU a crear
On Error Resume Next
Set obj_OUDestino = obj_DominioDestino.Create( _
"organizationalUnit", "OU=" & str_DNOU)
obj_OUDestino.SetInfo
'Si no se ha producido error
If Err.Number = 0 Then
'Montamos la línea a mostrar
str_Linea = str_Linea & vbTab & _
obj_OUDestino.distinguishedName & vbTab & _
Replace(obj_OUDestino.Name,"ou=","",1,-1,1)
'Se ha producido error
Else
'Montamos la descripción y el número de error
str_Linea = str_Linea & vbTab & _
Err.Description & vbTab & _
Err.Number
'Quitamos el error del objeto Err
Err.Clear
End If
'Devolvemos el control de errores a cscript
On Error Goto 0
'Si hay fichero de salida
If Len(str_Fichero) > 0 Then
'Añadimos la línea a la salida
str_Salida = str_Salida & str_Linea & vbCrLf
'Si la salida es por pantalla
Else
'Mostramos la línea por pantalla
WScript.Echo str_Linea
End If
'Vaciamos la variable con la línea
str_Linea = ""
'Obtenemos el nombre distinguido de la OU de origen
str_DNOU = "OU=" & str_DNOU & "," & str_DominioOrigen
'Llamamos al método que creará las OUs contenidas en la
'OU recibida como parámetro
Call s_CrearOUs(str_DNOU)
End If
Next 'str_DNOU
'El segundo si se copian todas las OUs del dominio Origen
Else
'Filtramos el dominio para que nos de las OUs
obj_DominioOrigen.Filter = Array("organizationalUnit")
'Recorremos las OUs que cuelgan de la raíz del dominio de origen
For Each obj_OUOrigen In obj_DominioOrigen
'Montamos la línea a mostrar
str_Linea = obj_OUOrigen.distinguishedName & vbTab & _
Replace(obj_OUOrigen.Name,"ou=","",1,-1,1)
'Establecemos control de errores, por si, por ejemplo,
'intentamos crear una OU que ya existe (Domain Controllers
'es un caso habitual)
On Error Resume Next
'Creamos la OU en el dominio de destino
Set obj_OUDestino = obj_DominioDestino.Create( _
"organizationalUnit", obj_OUOrigen.Name)
obj_OUDestino.SetInfo
'Si no se ha producido error
If Err.Number = 0 Then
'Montamos la línea a mostrar
str_Linea = str_Linea & vbTab & _
obj_OUDestino.distinguishedName & vbTab & _
Replace(obj_OUDestino.Name,"ou=","",1,-1,1)
'Si se ha producido error
Else
'Montamos la descripción y el número de error
str_Linea = str_Linea & vbTab & _
Err.Description & vbTab & _
Err.Number
'Quitamos el error del objeto Err
Err.Clear
End If
'Devolvemos el control de errores a cscript
On Error Goto 0
'Si hay fichero de salida
If Len(str_Fichero) > 0 Then
'Añadimos la línea a la salida
str_Salida = str_Salida & str_Linea & vbCrLf
'Si la salida es por pantalla
Else
'Mostramos la línea por pantalla
WScript.Echo str_Linea
End If
'Vaciamos la variable con la línea
str_Linea = ""
'Llamamos al método que crea las OUs de la OU cuyo
'nombre distinguido recibe como parámetro
Call s_CrearOUs(obj_OUOrigen.distinguishedName)
Next
End If
'Si hay que volcar información en el fichero
'de salida de ruta y nombre str_Fichero
If Len(str_Fichero) > 0 Then
'Creamos un objeto FileSystemObject
Set obj_FS = CreateObject("Scripting.FileSystemObject")
'Creamos el fichero de salida
Set obj_TS = obj_FS.CreateTextFile(str_Fichero)
'Volcamos la información de salida en el fichero
obj_TS.Write str_Salida
'Cerramos el fichero de salida
obj_TS.Close
'Limpieza de popa :-)
Set obj_TS = Nothing
Set obj_FS = Nothing
End If
Sub s_CrearOUs(str_OUPadre)
'***********************************************************************
'* Procedimiento: s_CrearOUs *
'* Tipo : Método *
'* Devolución : *
'* Fecha y Hora : 16/06/2008 16:02:38 *
'* Autor : Fernando Reyes *
'*¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯*
'* Propósito : Este método recibe el nombre distinguido una OU del *
'* dominio de origen y crea en el dominio de destino *
'* las OUs contenidas en la OU del dominio de origen. *
'* Para poder crear también las posibles OUs *
'* contenidas en las OUs que pertenecen a la recibida *
'* como parámetro, el método realiza una llamada *
'* recursiva con cada una de ellas *
'***********************************************************************
Dim obj_OUPadre
Dim obj_OUOrigen
Dim obj_OUDestino
Dim obj_OUPadreDestino
'Obtenemos el objeto OU cuyo nombre distinguido es recibido como
'parámetro
Set obj_OUPadre = GetObject("LDAP://" & str_OUPadre)
'Lo filtramos para que devuelva sus OUs
obj_OUPadre.Filter = Array("organizationalUnit")
'Creamos el objeto OU padre del dominio destino, en el que se
'crearán las OUs
Set obj_OUPadreDestino = GetObject("LDAP://" & _
Replace(str_OUPadre, _
str_DominioOrigen, _
str_DominioDestino))
'Recorremos las OUs
For Each obj_OUOrigen In obj_OUPadre
'Montamos la línea a mostrar
str_Linea = obj_OUOrigen.distinguishedName & _
vbTab & _
Replace(obj_OUOrigen.Name,"ou=","",1,-1,1)
'Establecemos control de errores, por si, por ejemplo,
'intentamos crear una OU que ya existe (Domain Controllers
'es un caso habitual)
On Error Resume Next
'Creamos la OU en el dominio de destino
Set obj_OUDestino = obj_OUPadreDestino.Create( _
"organizationalUnit", _
obj_OUOrigen.Name)
obj_OUDestino.SetInfo
'Si no se ha producido error
If Err.Number = 0 Then
'Montamos la línea a mostrar
str_Linea = str_Linea & vbTab & _
obj_OUDestino.distinguishedName & vbTab & _
Replace(obj_OUDestino.Name,"ou=","",1,-1,1)
'Si se ha producido error
Else
'Montamos la descripción y el número de error
str_Linea = str_Linea & vbTab & _
Err.Description & vbTab & _
Err.Number
'Quitamos el error del objeto Err
Err.Clear
End If
'Devolvemos el control de errores a cscript
On Error Goto 0
'Si hay fichero de salida
If Len(str_Fichero) > 0 Then
'Añadimos la línea a la salida
str_Salida = str_Salida & str_linea & vbCrLf
Else
'Mostramos la línea por pantalla
WScript.Echo str_Linea
End If
'Vaciamos la variable con la línea
str_Linea = ""
'Realizamos una llamada recursiva incrementando en uno el
'nivel
Call s_CrearOUs(obj_OUOrigen.Name & "," & str_OUPadre)
Next
'Limpieza de parte posterior saliente :-)
Set obj_OUOrigen = Nothing
Set obj_OUDestino = Nothing
Set obj_OUPadre = Nothing
Set obj_OUPadreDestino = Nothing
End Sub 's_CrearOUs
Function f_RevisarArgumentos( _
str_Error, _
int_Error _
) 'As Boolean
'***********************************************************************
'* Procedimiento: f_RevisarArgumentos *
'* Tipo : Función *
'* Devolución : Booleana *
'* Fecha y Hora : 17/06/2008 10:34:41 *
'* Autor : Fernando Reyes *
'*¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯*
'* Propósito : Esta función revisa los argumentos recibidos, *
'* recogiendo los posibles fallos por falta de *
'* argumentos requeridos y almacenando en las *
'* variables correspondientes los argumentos *
'* recibidos. recibe dos parámetros cuyo fin es ser de *
'* salida: una cadena que almacenará los errores *
'* detectados y un entero que almacenará el código de *
'* los errores detectados. Hay tres tipos de error; *
'* error 1 para los argumentos sin nombre requeridos y *
'* no encontrados, error 2 para los argumentos con *
'* nombre requeridos y no encontrados, por último, *
'* error 4 para los combos de argumentos opcionales *
'* (un combo de argumentos opcionales es aquel *
'* conjunto de argumentos opcionales que es requerido *
'* que se pase al menos uno de ellos y que si se pasa *
'* más de uno se ignorarán aquellos que estén detrás *
'* en la prioridad entre ellos; una característica *
'* clara de lo que es un combo de argumentos es cuando *
'* dos omás argumentos almacenan su valor en la misma *
'* variable). En el caso de producirse más de un tipo *
'* de error, el número de error será la suma de ambos *
'* de los errores recibidos, es decir 3, 5 o 6 *
'***********************************************************************
Dim bol_Devolucion 'As Boolean
Dim bol_Error1 'As Boolean
Dim bol_Error2 'As Boolean
Dim bol_Error4 'As Boolean
Dim obj_FS 'As Scripting.FileSystemObject
Dim obj_TS 'As Scripting.TextStream
'Iniciamos los indicadores
bol_Devolucion = False
bol_Error1 = False
bol_Error2 = False
bol_Error4 = False
'Si hay que mostrar la ayuda, se muestra y
'termina el script
If WScript.Arguments.Named.Exists("?") Then
Call s_Ayuda("******************" & vbCrLf & _
"* AYUDA *" & vbCrLf & _
"******************")
WScript.Quit 0
End If
'Revisamos que esté el argumento requerido
'/O (dominio)
If WScript.Arguments.Named.Exists("O") Then
'Cambiamos el nombre DNS a nombre distinguido
str_DominioOrigen = _
f_DNSaDN(WScript.Arguments.Named("O"))
Else
str_Error = str_Error & vbcrlf & _
"Error 2, falta argumento " & _
"requerido con nombre: " & _
"/O (dominio)" & vbCrLf
bol_Error2 = True
End If
'Revisamos que esté el argumento requerido
'/D (dominio)
If WScript.Arguments.Named.Exists("D") Then
'Cambiamos el nombre DNS a nombre distinguido
str_DominioDestino = _
f_DNSaDN(WScript.Arguments.Named("D"))
Else
str_Error = str_Error & vbcrlf & _
"Error 2, falta argumento " & _
"requerido con nombre: " & _
"/D (dominio)" & vbCrLf
bol_Error2 = True
End If
'Revisamos que esté el argumento
'/F (fichero)
If WScript.Arguments.Named.Exists("F") Then
str_Fichero = _
WScript.Arguments.Named("F")
End If
'Revisamos que esté el argumento
'/U (Ous)
If WScript.Arguments.Named.Exists("U") Then
Set obj_FS = CreateObject("Scripting.FileSystemObject")
Set obj_TS = obj_FS.OpenTextFile( _
WScript.Arguments.Named("U"))
arr_Ous = _
Split(obj_TS.ReadAll,vbCrLf)
obj_TS.Close
Set obj_TS = Nothing
Set obj_FS = Nothing
End If
'Preparamos las variables de devolucion:
'el entero como suma de los posibles errores 1, 2 y 4
int_Error = Abs(bol_Error1) + _
(2 * Abs(bol_Error2)) + _
(4 * Abs(bol_Error4))
'La devolucion de la función será True en caso de
'haber alguno de los errores
bol_Devolucion = (bol_Error1 Or bol_Error2 Or bol_Error4)
'Hacemos la devolución de la función
f_RevisarArgumentos = bol_Devolucion
End Function 'f_RevisarArgumentos
Sub s_Ayuda(str_Error)
'***********************************************************************
'* Procedimiento: s_Ayuda *
'* Tipo : Sub *
'* Devolución : *
'* Fecha y Hora : 17/06/2008 10:34:41 *
'* Autor : Fernando Reyes *
'*¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯*
'* Propósito : Este procedimiento muestra la ayuda en línea. *
'* Recibe un parámetro de tipo cadena que si viene *
'* será mostrado antes de la línea; pensado para que *
'* se muestre un error que se haya detectado. *
'***********************************************************************
'Si hay que mostrar algún texto previo a la ayuda, lo hacemos
If Len(str_Error) > 0 Then
WScript.Echo str_Error & vbCrLf & vbCrLf
End If
'A continuación, mostramos la ayuda por pantalla
WScript.Echo "Este script copia las OUs (son OUs a nivel raíz d" & _
"el dominio de origen) y todo"
WScript.Echo "el árbol de OUs del que son raíz, que están en el" & _
" fichero de OUs a copiar, en"
WScript.Echo "el dominio de destino. Si no se pasa el fichero d" & _
"e OUs a copiar, el script"
WScript.Echo "lista las OUs que existen en el dominio que recib" & _
"e como parámetro de dominio de"
WScript.Echo "origen y copia la misma estructura de OUs en el d" & _
"ominio de destino. El"
WScript.Echo "resultado del proceso puede ser visto por pantall" & _
"a o volcado a un fichero de"
WScript.Echo "valores separados por tabuladores, ideal para ser" & _
" abierto por Excel"
WScript.Echo ""
WScript.Echo "Sintaxis"
WScript.Echo ""
WScript.Echo "cscript [//nologo] copiar-ous.vbs /O:dominio /D:d" & _
"ominio [/F:fichero] [/U:Ous]"
WScript.Echo "[/?]"
WScript.Echo ""
WScript.Echo "Siendo"
WScript.Echo ""
WScript.Echo "- /O: dominio (Requerido):"
WScript.Echo "Nombre DNS del dominio de origen"
WScript.Echo ""
WScript.Echo "- /D: dominio (Requerido):"
WScript.Echo "Nombre DNS del dominio de destino"
WScript.Echo ""
WScript.Echo "- /F: fichero (Opcional):"
WScript.Echo "Ruta y nombre del fichero en el que se guardará e" & _
"l resultado"
WScript.Echo "como fichero de valores separados por comas. Si s" & _
"e omite, los"
WScript.Echo "resultados se muestran por pantalla"
WScript.Echo ""
WScript.Echo "- /U: Ous (Opcional):"
WScript.Echo "Nombre de un fichero de texto con las OUs que se " & _
"quieren"
WScript.Echo "copiar, una por línea. Se trata del nombre de OUs" & _
" a nivel de la"
WScript.Echo "raíz del dominio. Se crean las OUs de la lista y " & _
"las OUs que"
WScript.Echo "contenga (todo el árbol). Si se omite este paráme" & _
"tro, el script"
WScript.Echo "creará todas las OUs del dominio de origen en el " & _
"de destino"
WScript.Echo ""
WScript.Echo "- /?: ayuda (Opcional):"
WScript.Echo "Muestra la ayuda en línea"
WScript.Echo ""
WScript.Echo ""
WScript.Echo "Ejemplos:"
WScript.Echo ""
WScript.Echo "- Copia las OUs del dominio comarca.org en el dom" & _
"inio rivendel.gov, mostrando"
WScript.Echo "el resultado por pantalla.:"
WScript.Echo ""
WScript.Echo "cscript //nologo copiar-ous.vbs /O:comarca.org /D" & _
":rivendel.gov"
WScript.Echo ""
WScript.Echo "- Copia las OUs del dominio comarca.org en el dom" & _
"inio rivendel.gov, guardando"
WScript.Echo "los resultados en el fichero d:listadosCopia-OU" & _
"sComarca.tsv:"
WScript.Echo ""
WScript.Echo "cscript //nologo copiar-ous.vbs /O:comarca.org /D" & _
":rivendel.gov"
WScript.Echo "/F:d:listadosCopia-OUsComarca.tsv"
WScript.Echo ""
WScript.Echo "- Copia las OUs contenidas en el fichero \bree01" & _
"Ousous-a-copiar.txt y"
WScript.Echo "pertenecientes al dominio comarca.org en el domin" & _
"io rivendel.gov, guardando los"
WScript.Echo "resultados en el fichero d:listadosCopia-OUsCom" & _
"arca.tsv:"
WScript.Echo ""
WScript.Echo "cscript //nologo copiar-ous.vbs /O:comarca.org /D" & _
":rivendel.gov"
WScript.Echo "/F:d:listadosCopia-OUsComarca.tsv /U:\bree01O" & _
"usous-a-copiar.txt"
WScript.Echo ""
WScript.Echo ""
WScript.Echo ""
End Sub 's_Ayuda
Function f_DNSaDN(str_DNS)
'***********************************************************************
'* Procedimiento: f_DNSaDN *
'* Tipo : Función *
'* Devolución : Booleana *
'* Fecha y Hora : 16/06/2008 15:44:48 *
'* Autor : Fernando Reyes *
'*¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯*
'* Propósito : Esta función recibe el nombre DNS de un dominio *
'* (dominio.local) y devuelve su nombre distinguido *
'* (DC=dominio,DC=local) *
'***********************************************************************
'Agregamos al inicio del nombre DNS "DC=" y sustituimos los puntos
'por ",DC=", para obtener el nombre distinguido del dominio
f_DNSaDN = "DC=" & _
Replace(str_DNS, ".", ",DC=")
End Function 'f_DNSaDN
franklin escribió
Hola de donde saco los contactos de outlook 2007, cuando formateo la maquina no tengo problemas con los archivos outlook y pst. Por favor alguien me puede indicar?
gracias