none
Criação de um Script vbs para pastas partilhadas RRS feed

  • Pergunta

  • Viva Technet, eu  tenho um DC na minha rede com o windows 2008 64 bit e preciso implementar um script vbs que faça o seguinte:

    • Exibe a tela de boas vindas aos utilizadores
    • Mapeia a pasta compartilhada quando o utilizador iniciar a sua sessão o nome da pasta será o nome do utilizador neste caso o primeiro e o último nome exemplo:juli.matos.

            eu tenho o modelo do script abaixo e as minhas dúvidas estão em negrito por favor caso existir mais alguma dica por favor agradeceria que me mandassem.

    Obrigado

    'Script de Login


    On error Resume Next
    Err.clear 0

    '============================================================================
    'Mapeando Unidades de Disco

    Set WshNetwork = Wscript.CreateObject("Wscript.Network")
    WshNetwork.MapNetworkDrive "u:","\\nomeserver\usuarios","true" ------- eu  quero saber como devo fazer adicionar a pasta do utilizador ao utilizador eu quero mapear várias pastas U para varios utilizadores ou seja o nome da pasta será igual ao nome do utilizador.

    '============================================================================
    'Mapeando Impressora

    Set WshNetwork = Wscript.CreateObject("Wscript.Network")
    WshNetwork.AddWindowsPrinterConnection "\\nomeserver\8000", "8000"
    WshNetwork.SetDefaultPrinter "\\nomeserver\8000", "8000"

    '============================================================================
    'Sincroniza o horario da estacao com o servidor

    Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\CIMV2")
    Set objShell = CreateObject("WScript.shell")
    strCmd = "net time \\nomeserver /set /yes"
    set objexec = objshell.exec(strcmd)

    '============================================================================
    'Boas Vindas Ao Usuario

    Set objUser = WScript.CreateObject("WScript.Network")
    wuser=objUser.UserName
    If Time <= "12:00:00" Then
    MsgBox ("Bom Dia "+Wuser+", você acaba de ingressar na rede corporativa da Escola X, por favor respeite as políticas de segurança e bom trabalho!")
    ElseIf Time >= "12:00:01" And Time <= "18:00:00" Then
    MsgBox ("Boa Tarde "+Wuser+", você acaba de ingressar na rede corporativa da Escola X, por favor respeite as políticas de segurança e bom trabalho!")
    Else
    MsgBox ("Boa Noite "+wuser+", você acaba de ingressar na rede corporativa da Escola X, por favor respeite as políticas de segurança e bom trabalho!")
    End If

    Nota: Eu não sei por que mas quando teste o script de manhã ele até exibe a tela de boas vindas mas em vez de dizer bom dia diz boa noite, eu já verifiquei o horário do Dc com as demais estações e estão sincronizados. O que será?

    Wscript.Quit

     

     

    quinta-feira, 28 de abril de 2011 13:44

Respostas

  • Luis,

    Se você deseja remover a letra de unidade "u" antes de mapear a nova acrecente a linha abaixo no script que passei.

     

    set objFSO = CreateObject("Scripting.FilesystemObject")

     'Remoção dos compartilhamentos atuais das Unidades

    if (objFSO.DriveExists("G:")) then

       objNetwork.RemoveNetworkDrive "G:"

    end If

    Seu script vai ficar assim: Certifique-se de que a letra da unidade atualmente mapeada é a letra U

    '============================================================================
    Set objSysInfo = CreateObject("ADSystemInfo")
    Set WshNetwork = Wscript.CreateObject("Wscript.Network")
    set objFSO = CreateObject("Scripting.FilesystemObject")

    'Remoção do compartilhamento atual da Unidade U

    if (objFSO.DriveExists("U:")) then

       objNetwork.RemoveNetworkDrive "U:"

    end If

    'Mapeando Unidades de Disco

    strUserPath = "LDAP://" & objSysInfo.UserName
    Set objUser = GetObject(strUserPath)
    objUserName = objUser.Get("givenName")

    WshNetwork.MapNetworkDrive "u:","\\nomeserver\usuarios\"& objUserName,"true"
    '============================================================================

    Qualquer dúvida post para que possamos lhe ajudar.

     

    Se lhe foi útil, vote! Se resolveu maque como resposta.


    Elmo Baraúna, SSA-Ba - FSCTP / MCP / MCDST / MCSA / MCT http://infraestruturaealgomais.blogspot.com
    quinta-feira, 5 de maio de 2011 16:50

Todas as Respostas

  • Luis,

    Acrescentando as linhas abaixo você conseguirá mapear as pasta de cada usuário.

    '============================================================================
    'Mapeando Unidades de Disco

    Set objSysInfo = CreateObject("ADSystemInfo")
    Set WshNetwork = Wscript.CreateObject("Wscript.Network")

    strUserPath = "LDAP://" & objSysInfo.UserName
    Set objUser = GetObject(strUserPath)

    objUserName = objUser.Get("givenName")

    WshNetwork.MapNetworkDrive "u:","\\nomeserver\usuarios\"& objUserName,"true"

    '============================================================================

    Quanto a mensagem, verifique a forma como está configurado o horário nas estações e server, se está tratando 24hs ou 12hs por AM/PM. Testei e o script apresentou a mesagem correta quanto ao horário.

     

    Se lhe foi útil, vote e marque como resposta para organizar o forum! 


    Elmo Baraúna, SSA-Ba - FSCTP / MCP / MCDST / MCSA / MCT

    http://infraestruturaealgomais.blogspot.com

     


    sexta-feira, 29 de abril de 2011 14:27
  •  

    Deixa ver se entendi, você pede para  acrescentar o Set objSysInfo = CreateObject("ADSystemInfo")

     por cima do  Set objSysInfo = CreateObject("ADSystemInfo") e antes do WshNetwork.MapNetworkDrive "u:","\\nomeserver\usuarios","true"  tem de carescentar o que voce inseriu neste caso: Set WshNetwork = Wscript.CreateObject("Wscript.Network")

     

    strUserPath = "LDAP://" & objSysInfo.UserName

    Set objUser = GetObject(strUserPath)

     

    objUserName = objUser.Get("givenName")

     

     

    strUserPath = "LDAP://" & objSysInfo.UserName- Em user name tenho de subistitruir pelo nome do utilizador

     

    Em user path també tenho de enserir alguma coisa

     

     

    objUserName = objUser.Get("givenName")- Em objUser.Get("givenName") tenho de por também alguma coisa

     

    Em fim por favor gostaria que me boltasse a esclarecer cada comando que você esta pedindo para adicionar e onde posso adcionar.

     

    sexta-feira, 29 de abril de 2011 14:59
  • Luis,

    Não precisa fazer nada não. basta copiar o que postei e substituir o seu.


    Elmo Baraúna, SSA-Ba - FSCTP / MCP / MCDST / MCSA / MCT http://infraestruturaealgomais.blogspot.com
    sexta-feira, 29 de abril de 2011 15:41
  •  

    Boa tarde Elmo, desculpa-me por ficar muito tempo sem lhe responder estava muito ocupado, olha e subistitui com seu comando que voce me passou do mapeamento  e ficou assim:

     

    'Mapeando Unidades de Disco

    Set objSysInfo = CreateObject("ADSystemInfo")
    Set WshNetwork = Wscript.CreateObject("Wscript.Network")
    strUserPath = "LDAP://" & objSysInfo.UserName
    Set objUser = GetObject(strUserPath)
    objUserName = objUser.Get("givenName")
    WshNetwork.MapNetworkDrive "u:","\\srvfiles\fernando.jenilson\"& objfernando.jenilson,"true"

     

    Só que ele não exibe a pasta fermamdo.jenilson que eu partilhei no servidor de ficheiro, esta apaerecendo o nome da antiga pasta.

     

    terça-feira, 3 de maio de 2011 12:08
  • Luis,

    Não precisa alterar nada não. Não é necessário colocar o nome do usuário. Você deve colocar com o parâmetro objUserName. Copia o código abaixo e substitui o seu sem precisar alterar nenhum parâmetro.

    '============================================================================
    'Mapeando Unidades de Disco

    Set objSysInfo = CreateObject("ADSystemInfo")
    Set WshNetwork = Wscript.CreateObject("Wscript.Network")

    strUserPath = "LDAP://" & objSysInfo.UserName
    Set objUser = GetObject(strUserPath)

    objUserName = objUser.Get("givenName")

    WshNetwork.MapNetworkDrive "u:","\\nomeserver\usuarios\"& objUserName,"true"

    '============================================================================

    Outro detalhe, você não precisa compartilhar cada pasta dos seus usuários. Você só precisa compartilhar a pasta de nivel superior, por exemplo: \\nomeserver\usuarios dentro dessa pasta (usuários) estarão todas as pastas dos seus usuários. Como você colocou no seu primeiro post.

    WshNetwork.MapNetworkDrive "u:",\\nomeserver\usuarios","true

    Qualquer dúvida post para que possamos lhe ajudar.

     

    Se lhe foi útil, vote! Se resolveu marque como resposta.


    Elmo Baraúna, SSA-Ba - FSCTP / MCP / MCDST / MCSA / MCT http://infraestruturaealgomais.blogspot.com
    terça-feira, 3 de maio de 2011 16:16
  • Obrigado Elmo por todo apoio prestado ate aqui so que o Chefe de TI quer que o script mapeie a pasta partilhada de cada utilizador cuja a mesma ter[a o nome de cada utilizador.

    Neste caso o q surgeres para min.

    terça-feira, 3 de maio de 2011 21:11
  • Olá Luis,

    Vamos até resolver :)

    Então, mas é exatamente isso que esse script faz. Citei apenas que as pastas dos usuários não precisam estar compartilhadas, mas se estiver não há problemas.

    Esse script que postei vai mapear a pasta de cada utilizador. A variável objUserName é responsável por identificar qual usuário está realizando logon naquele momento e assume o nome desse usuário, como a pasta dele possue o mesmo nome de usuário ela será mapeada.

    Faça um teste e informe o resultado. Com certeza atenderá sua necessidade. Caso não mapeie por qualquer motivo post para que possamos resolver.

     


    Elmo Baraúna, SSA-Ba - FSCTP / MCP / MCDST / MCSA / MCT http://infraestruturaealgomais.blogspot.com
    quarta-feira, 4 de maio de 2011 02:44
  • Elmo, eu voltei a criar uma nova pasta partilhadas que possuirá os dados do servidor de ficheiro e eliminei a antiga pasta que eu estava testando de inicio no script vbs, então eliminei o antigo script e criei um novo script por que quando tento editar o script ele diz que aceita salvar as alterações e então perfiro eliminar e criar um novo.

    O que realmente eu preciso saber é como eliminar a antiga pasta mapeada através do script por que a mesma até agora aparece uma vez que ja´eliminei o script qye fazia ela aparecer para poder  entaõ ver a nova pasta partilhada no novo Scritp.

    quinta-feira, 5 de maio de 2011 11:24
  • Luis,

    Se você deseja remover a letra de unidade "u" antes de mapear a nova acrecente a linha abaixo no script que passei.

     

    set objFSO = CreateObject("Scripting.FilesystemObject")

     'Remoção dos compartilhamentos atuais das Unidades

    if (objFSO.DriveExists("G:")) then

       objNetwork.RemoveNetworkDrive "G:"

    end If

    Seu script vai ficar assim: Certifique-se de que a letra da unidade atualmente mapeada é a letra U

    '============================================================================
    Set objSysInfo = CreateObject("ADSystemInfo")
    Set WshNetwork = Wscript.CreateObject("Wscript.Network")
    set objFSO = CreateObject("Scripting.FilesystemObject")

    'Remoção do compartilhamento atual da Unidade U

    if (objFSO.DriveExists("U:")) then

       objNetwork.RemoveNetworkDrive "U:"

    end If

    'Mapeando Unidades de Disco

    strUserPath = "LDAP://" & objSysInfo.UserName
    Set objUser = GetObject(strUserPath)
    objUserName = objUser.Get("givenName")

    WshNetwork.MapNetworkDrive "u:","\\nomeserver\usuarios\"& objUserName,"true"
    '============================================================================

    Qualquer dúvida post para que possamos lhe ajudar.

     

    Se lhe foi útil, vote! Se resolveu maque como resposta.


    Elmo Baraúna, SSA-Ba - FSCTP / MCP / MCDST / MCSA / MCT http://infraestruturaealgomais.blogspot.com
    quinta-feira, 5 de maio de 2011 16:50
  • Olá Luis,

    Atendeu sua necessidade?

    Caso tenha alguma dúvida post para que possamos lhe ajudar.

     

    Se lhe foi útil, vote! Se resolveu marque como resposta!


    Elmo Baraúna, SSA-Ba - FSCTP / MCP / MCDST / MCSA / MCT http://infraestruturaealgomais.blogspot.com
    sábado, 14 de maio de 2011 23:38