Petición de ayuda con script

11/09/2008 - 10:00 por Diego Fernández | Informe spam
Hola a todos:

Una vez mas, aquí estoy pidiendo ayuda.
Por sustitución de servidor, necesito cambiar las rutas de acceso al perfil
móvil de los usuarios del dominio (tanto del perfil local como del perfil de
Terminal Server). Además, únicamente se lo tengo que cambiar a los que están
en una OU concreta.

Hace años, también lo tuve que hacer y Fernando Reyes me facilitó un script
que lo hacía, pero no me sirve ya que esta vez lo tengo que hacer con una OU
sólamente.

Además, aunque no se si es posible, pretendo poner como ruta del perfil una
ruta DFS. Así, si alguna vez me vuelve a ocurrir que tenga que cambiar la
ubicación de los perfiles, únicamente tendré que modificar el destino en
DFS.

Como mis conocimientos de programación son nulos no sé modificarlo para
adaptarlo a la necesitad actual.

El script era:

'Script para cambiar la ruta de los perfiles de todos los
'usuarios del dominio, desde un servidor a otro. En este
'ejemplo el dominio se llamará "midominio", y utilizamos
'el nombre NetBios. Los perfiles pasarán a "equipo2".
'Requiere que los recursos compartidos correspondientes
'estén creados en "equipo2"
'Fernando Reyes [MS MVP];

'Creamos un objeto de tipo dominio, abiendo el dominio "midominio"
Set obj_Dominio = GetObject("WinNT://midominio,Domain")

'Aplicamos un filtro al dominio para obtener los usuarios en un array
obj_Dominio.Filter = Array("User")

'Una vez tenemos el array de usuarios lo recorremos uno a uno
For Each obj_Nombre_Usuario in obj_Dominio

'Mostramos por pantalla el usuario con el que estamos en este momento
Wscript.Echo obj_Nombre_Usuario.Name

'Creamos un objeto usuario (el anterior sólo es un nombre) con el que
trabajaremos
Set obj_Usuario_A_Cambiar = GetObject("WinNT://midominio/" &
obj_Nombre_Usuario.Name & ",User")

'Cambiamos la ruta del perfil de "equipo1" a "equipo2"
obj_Usuario_A_Cambiar.profile = "\\servidor2\perfilesgc\" &
obj_Nombre_Usuario.Name

'Mostramos en pantalla la nueva ruta
wscript.echo obj_Usuario_A_Cambiar.profile

Next
=
¿Podeis ayudarme?

Gracias por anticipado.
Diego.

Preguntas similare

Leer las respuestas

#1 Diego Fernández
11/09/2008 - 14:00 | Informe spam
Hola:

Lo primero gracias por tu interés.
El programa que me envías a no me funciona. Me devuelve el error siguiente
error de windows scripting host después de seleccionar la OU que quiero
modificar y pulsar aceptar:

Secuencia de comandos: c:\ChangeProfileUsersOU.vbs
Linea: 53
Caracter: 5
Error: El atributo o valor de servicio de directorios especificado no
existe.
Codigo: 8007200A
Origen: (null).

Ántes de ejecutarlo he editado el .vbs y he sustituido donde ponias
\\servidor2\perfilesgc por la ruta correcta donde deben estar los perfiles.

Es lo único que he modificado.

Un saludo.
Diego.



"Ramon Jiménez" escribió en el mensaje
de noticias:#l$f1b$
Te adjunto unn Script que hice hace 5 años. Utiliza un Exe (incluido en el
Zip para elegir la OU que tu quieras)

No está muy refinado, pero funcionaba...

Ramon

"Diego Fernández" wrote in message
news:u3XEzR%
Hola a todos:

Una vez mas, aquí estoy pidiendo ayuda.
Por sustitución de servidor, necesito cambiar las rutas de acceso al
perfil
móvil de los usuarios del dominio (tanto del perfil local como del perfil
de
Terminal Server). Además, únicamente se lo tengo que cambiar a los que
están
en una OU concreta.

Hace años, también lo tuve que hacer y Fernando Reyes me facilitó un
script
que lo hacía, pero no me sirve ya que esta vez lo tengo que hacer con una
OU
sólamente.

Además, aunque no se si es posible, pretendo poner como ruta del perfil
una
ruta DFS. Así, si alguna vez me vuelve a ocurrir que tenga que cambiar la
ubicación de los perfiles, únicamente tendré que modificar el destino en
DFS.

Como mis conocimientos de programación son nulos no sé modificarlo para
adaptarlo a la necesitad actual.

El script era:

>> 'Script para cambiar la ruta de los perfiles de todos los
'usuarios del dominio, desde un servidor a otro. En este
'ejemplo el dominio se llamará "midominio", y utilizamos
'el nombre NetBios. Los perfiles pasarán a "equipo2".
'Requiere que los recursos compartidos correspondientes
'estén creados en "equipo2"
'Fernando Reyes [MS MVP];

'Creamos un objeto de tipo dominio, abiendo el dominio "midominio"
Set obj_Dominio = GetObject("WinNT://midominio,Domain")

'Aplicamos un filtro al dominio para obtener los usuarios en un array
obj_Dominio.Filter = Array("User")

'Una vez tenemos el array de usuarios lo recorremos uno a uno
For Each obj_Nombre_Usuario in obj_Dominio

'Mostramos por pantalla el usuario con el que estamos en este
momento
Wscript.Echo obj_Nombre_Usuario.Name

'Creamos un objeto usuario (el anterior sólo es un nombre) con el
que
trabajaremos
Set obj_Usuario_A_Cambiar = GetObject("WinNT://midominio/" &
obj_Nombre_Usuario.Name & ",User")

'Cambiamos la ruta del perfil de "equipo1" a "equipo2"
obj_Usuario_A_Cambiar.profile = "\\servidor2\perfilesgc\" &
obj_Nombre_Usuario.Name

'Mostramos en pantalla la nueva ruta
wscript.echo obj_Usuario_A_Cambiar.profile

Next
=>>
¿Podeis ayudarme?

Gracias por anticipado.
Diego.







Respuesta Responder a este mensaje
#2 Diego Fernández
11/09/2008 - 16:44 | Informe spam
Hola:

Ya he podido hacerlo. Finalmente, buscando en google encontré otro script
que modificaba la ruta del perfil de TS, y modificarlo para que también
modifique el de local ha sido sencillo (además de que he tenido mucha
suerte).

Por si a otra persona le sirve el script es este:

=Set WshShell = WScript.CreateObject("WScript.Shell")
CurDir = WshShell.CurrentDirectory
' Enter your server/share value here, don't forget the trailing \
strRootDir = "\uevoserveruevoshare"
'Añado en el mensaje que también modifica el perfil local
SURE = MsgBox("This will modify all TS and LOCAL profile path ALL users" &
vbcrlf & "Execute modifications?", vbYesNo, "Sure?")
If SURE = 6 Then
'Do nothing but Continue
Elseif SURE = 7 Then
wscript.Quit
End If

Const ADS_SCOPE_SUBTREE = 2
strLOGFILE = CurDir & "\chgprofTS.log"
strERRORLOG = CurDir & "\chgprofTS-ERROR.log"
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objLogFile = objFSO.OpenTextFile (strLOGFILE, 8, True)
Set objErrorLog = objFSO.OpenTextFile (strERRORLOG, 8, True)
Set objConnection = CreateObject("ADODB.Connection")
Set objCommand = CreateObject("ADODB.Command")
objConnection.Provider = "ADsDSOObject"
objConnection.Open "Active Directory Provider"
Set objCommand.ActiveConnection = objConnection
objCommand.Properties("Page Size") = 1000
objCommand.Properties("Searchscope") = ADS_SCOPE_SUBTREE
objCommand.CommandText = _
"SELECT distinguishedName, sAMAccountName FROM 'LDAP://OU=Mi OU,
dc=midominio,dc=com' WHERE objectCategory='user'"
Set objRecordSet = objCommand.Execute
objRecordSet.MoveFirst

i = 0
e = 0
strinfomsg = "Script started at " & Now
objLogFile.WriteLine (strinfomsg)
objErrorLog.WriteLine (strinfomsg)

Do Until objRecordSet.EOF
i = i + 1
Wscript.Echo objRecordSet.Fields("distinguishedName").Value
Set objUser = GetObject("LDAP://" &
objRecordSet.Fields("distinguishedName"))
strOLD = objUser.TerminalServicesProfilePath
objUser.TerminalServicesProfilePath = strRootDir & objUser.samAccountName
'La siguiente linea la añado al script original para que modifique el perfil
local. Aquí tengo suerte, porque viendo que el de arriba se llamaba
Terminal... pongo "profilePath" para probar y resulta que acierto y se
llamaba así
objUser.ProfilePath = strRootDir & objUser.samAccountName
objUser.SetInfo
if err.number <> 0 Then
e = e + 1
objErrorLog.WriteLine (objUser.samAccountName & vbTab & err.number)
err.clear
Else
objLogFile.WriteLine (objUser.samAccountName & vbTab & "modified from" &
vbTab & strOLD & vbTab & "to" & vbTab & objUser.TerminalServicesProfilePath)
End If
objRecordSet.MoveNext
Loop
objLogFile.WriteLine (i & " modifications finished at " & Now)
objErrorLog.WriteLine (e & " errors occured")
objLogFile.WriteLine ()
objErrorLog.WriteLine ()
objLogFile.Close
objErrorLog.Close

==
Si alguien le interesa dejarlo bonito, no me he molestado en modificar el
log que genera para que también escrita las modificaciones del perfil local.
Bastante he tenido con la suerte de acertar el nombre de campo que quería
modificar para seguir jugandomela. :-)

Un saludo y gracias a todos.
Diego

"Ramon Jiménez" escribió en el mensaje
de noticias:#l$f1b$
Te adjunto unn Script que hice hace 5 años. Utiliza un Exe (incluido en el
Zip para elegir la OU que tu quieras)

No está muy refinado, pero funcionaba...

Ramon

"Diego Fernández" wrote in message
news:u3XEzR%
Hola a todos:

Una vez mas, aquí estoy pidiendo ayuda.
Por sustitución de servidor, necesito cambiar las rutas de acceso al
perfil
móvil de los usuarios del dominio (tanto del perfil local como del perfil
de
Terminal Server). Además, únicamente se lo tengo que cambiar a los que
están
en una OU concreta.

Hace años, también lo tuve que hacer y Fernando Reyes me facilitó un
script
que lo hacía, pero no me sirve ya que esta vez lo tengo que hacer con una
OU
sólamente.

Además, aunque no se si es posible, pretendo poner como ruta del perfil
una
ruta DFS. Así, si alguna vez me vuelve a ocurrir que tenga que cambiar la
ubicación de los perfiles, únicamente tendré que modificar el destino en
DFS.

Como mis conocimientos de programación son nulos no sé modificarlo para
adaptarlo a la necesitad actual.

El script era:

>> 'Script para cambiar la ruta de los perfiles de todos los
'usuarios del dominio, desde un servidor a otro. En este
'ejemplo el dominio se llamará "midominio", y utilizamos
'el nombre NetBios. Los perfiles pasarán a "equipo2".
'Requiere que los recursos compartidos correspondientes
'estén creados en "equipo2"
'Fernando Reyes [MS MVP];

'Creamos un objeto de tipo dominio, abiendo el dominio "midominio"
Set obj_Dominio = GetObject("WinNT://midominio,Domain")

'Aplicamos un filtro al dominio para obtener los usuarios en un array
obj_Dominio.Filter = Array("User")

'Una vez tenemos el array de usuarios lo recorremos uno a uno
For Each obj_Nombre_Usuario in obj_Dominio

'Mostramos por pantalla el usuario con el que estamos en este
momento
Wscript.Echo obj_Nombre_Usuario.Name

'Creamos un objeto usuario (el anterior sólo es un nombre) con el
que
trabajaremos
Set obj_Usuario_A_Cambiar = GetObject("WinNT://midominio/" &
obj_Nombre_Usuario.Name & ",User")

'Cambiamos la ruta del perfil de "equipo1" a "equipo2"
obj_Usuario_A_Cambiar.profile = "\\servidor2\perfilesgc\" &
obj_Nombre_Usuario.Name

'Mostramos en pantalla la nueva ruta
wscript.echo obj_Usuario_A_Cambiar.profile

Next
=>>
¿Podeis ayudarme?

Gracias por anticipado.
Diego.







Respuesta Responder a este mensaje
#3 Ramon Jiménez
12/09/2008 - 08:07 | Informe spam
Hola, Se escapo un Typo en el script que te envié

En la linea 51 debería decir

objUser.Put "ProfilePath", SERVER_SHARE & objuser.sAMAccountName

Es lo que pasa por cambiar rápidamente un atributo (Home Directory) por otro

Ramon

"Diego Fernández" wrote in message
news:%
Hola:

Lo primero gracias por tu interés.
El programa que me envías a no me funciona. Me devuelve el error siguiente
error de windows scripting host después de seleccionar la OU que quiero
modificar y pulsar aceptar:

Secuencia de comandos: c:\ChangeProfileUsersOU.vbs
Linea: 53
Caracter: 5
Error: El atributo o valor de servicio de directorios especificado no
existe.
Codigo: 8007200A
Origen: (null).

Ántes de ejecutarlo he editado el .vbs y he sustituido donde ponias
\\servidor2\perfilesgc por la ruta correcta donde deben estar los
perfiles.

Es lo único que he modificado.

Un saludo.
Diego.



"Ramon Jiménez" escribió en el
mensaje de noticias:#l$f1b$
Te adjunto unn Script que hice hace 5 años. Utiliza un Exe (incluido en
el Zip para elegir la OU que tu quieras)

No está muy refinado, pero funcionaba...

Ramon

"Diego Fernández" wrote in message
news:u3XEzR%
Hola a todos:

Una vez mas, aquí estoy pidiendo ayuda.
Por sustitución de servidor, necesito cambiar las rutas de acceso al
perfil
móvil de los usuarios del dominio (tanto del perfil local como del
perfil de
Terminal Server). Además, únicamente se lo tengo que cambiar a los que
están
en una OU concreta.

Hace años, también lo tuve que hacer y Fernando Reyes me facilitó un
script
que lo hacía, pero no me sirve ya que esta vez lo tengo que hacer con
una OU
sólamente.

Además, aunque no se si es posible, pretendo poner como ruta del perfil
una
ruta DFS. Así, si alguna vez me vuelve a ocurrir que tenga que cambiar
la
ubicación de los perfiles, únicamente tendré que modificar el destino en
DFS.

Como mis conocimientos de programación son nulos no sé modificarlo para
adaptarlo a la necesitad actual.

El script era:

>>> 'Script para cambiar la ruta de los perfiles de todos los
'usuarios del dominio, desde un servidor a otro. En este
'ejemplo el dominio se llamará "midominio", y utilizamos
'el nombre NetBios. Los perfiles pasarán a "equipo2".
'Requiere que los recursos compartidos correspondientes
'estén creados en "equipo2"
'Fernando Reyes [MS MVP];

'Creamos un objeto de tipo dominio, abiendo el dominio "midominio"
Set obj_Dominio = GetObject("WinNT://midominio,Domain")

'Aplicamos un filtro al dominio para obtener los usuarios en un array
obj_Dominio.Filter = Array("User")

'Una vez tenemos el array de usuarios lo recorremos uno a uno
For Each obj_Nombre_Usuario in obj_Dominio

'Mostramos por pantalla el usuario con el que estamos en este
momento
Wscript.Echo obj_Nombre_Usuario.Name

'Creamos un objeto usuario (el anterior sólo es un nombre) con el
que
trabajaremos
Set obj_Usuario_A_Cambiar = GetObject("WinNT://midominio/" &
obj_Nombre_Usuario.Name & ",User")

'Cambiamos la ruta del perfil de "equipo1" a "equipo2"
obj_Usuario_A_Cambiar.profile = "\\servidor2\perfilesgc\" &
obj_Nombre_Usuario.Name

'Mostramos en pantalla la nueva ruta
wscript.echo obj_Usuario_A_Cambiar.profile

Next
=>>>
¿Podeis ayudarme?

Gracias por anticipado.
Diego.







email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida