Usuário com melhor resposta
Script não funciona de jeito nenhum !

Pergunta
-
Olá pessoal !!!!
to com um grave problema , fiz um scipt para gerar um logo para os meus documentos .... mas para minha supresa ele so da erro e não funciona de jeito nenhum !!!! ja re-escrevi ele umas 3 vezes e nada funciona .. cada hora o erro é dado em uma linha diferente ! não sei mais oque fazer ......
Vou explicar como funciona ...
Tem uma GPO que roda o script durante o logon .... esse script verifica se o caminho dos meus documentos foi alterado, caso ja tenha sido alterado, ele grava uma entrada em um arquivo texto chamado LogOk.txt , caso não tenha sido alterado, grava uma entrada no logo LogErro.txt....
segue abaixo o script:
DIM fso, txtfile , strMyDocumentsGPO, strLogErro, strLogOk, strUserName
Const ForReading = 1, ForWriting = 2, ForAppending = 8'Coleta de dados do usuario e computador
Set objNetwork = WScript.CreateObject("Wscript.Network")
strUserName = objNetwork.UserName
strComputerName = objNetwork.ComputerName
strDomainName = objNetwork.UserDomain
'procura por utilização de drives de rede e caminhos de rede
Set objWMIService = GetObject("winmgmts:\\" & strComputerName & "\root\cimv2")
Set strDrives = objWMIService.ExecQuery ("Select * From Win32_LogicalDisk Where DriveType = 4")
'verifica se esta mapeado o caminho ou a Letra e remove
For Each objDrive in strDrives
Select case objDrive.DeviceID
case "L:"
objNetwork.RemoveNetworkDrive "L:"
End Select
select case objDrive.ProviderName
case "\\srvfiles01\LogMyDocuments"
objNetwork.RemoveNetworkDrive "\\srvfiles01\LogMyDocuments"
case "\\srvfiles01.corp.local\LogMyDocuments"
objNetwork.RemoveNetworkDrive "\\srvfiles01.corp.local\LogMyDocuments"
End Select
Next
'mepea o L: aonde fica o log
objNetwork.MapNetworkDrive "L:", "\\srvfiles01\LogMyDocuments"
'valores doe comparação e localização de logs
Set objShell = WScript.CreateObject("Wscript.Shell")
'Configuração do Script
strMyDocumentsDefault = objShell.SpecialFolders("MyDocuments")
strMyDocumentsGPO = "\\srvfiles01\home\"&strUserName&"\documentos"
strLogErro = "L:\LogErro.txt"
strLogOk = "L:\LogOk.txt"'Criando Conteudo do log erro.
strConteudoErro = "Usuario: " & strUserName & vbCrLf _
& "Computador: "& strComputerName & vbCrLf _
& "Dominio: " & strDomainName & vbCrLf _
& vbCrLf _
& "Data: " & Date & vbCrLf _
& "Hora: " & Time & vbCrLf _
& "Ação: Erro!!!! Pasta Meus Documentos não foi alterado!" _
& vbCrLf _
& "-----------------------------------------------------------------" _
& vbCrLf _
& vbCrLf'Criando Conteudo do log erro.
strConteudoOK = "Usuario: " & strUserName & vbCrLf _
& "Computador: "& strComputerName & vbCrLf _
& "Dominio: " & strDomainName & vbCrLf _
& vbCrLf _
& "Data: " & Date & vbCrLf _
& "Hora: " & Time & vbCrLf _
& "Ação: OK!!!! Pasta Meus Documentos esta alterada!" _
& vbCrLf _
& "-----------------------------------------------------------------" _
& vbCrLf _
& vbCrLf
Set fso = CreateObject("Scripting.FileSystemObject")
'verifica e salva o log conforme a necessidade
if strMyDocumentsGPO <> strMyDocumentsDefault then
if fso.FileExists(strLogErro) then
Set fso2 = fso.GetFile(strLogErro)
Set txtfile = fso2.OpenAsTextStream(ForAppending,-2)
txtfile.Write strConteudoErro
txtfile.Close
else
Set txtfile = fso.CreateTextFile(strLogErro, True)
txtfile.WriteLine (strConteudoErro)
txtfile.Close
end if
objNetwork.RemoveNetworkDrive "L:"
else
if fso.FileExists(strLogOk) then
Set fso2 = fso.GetFile(strLogOk)
Set txtfile = fso2.OpenAsTextStream(ForAppending,-2)
txtfile.Write strConteudoOK
txtfile.Close
else
Set txtfile = fso.CreateTextFile(strLogOk, True)
txtfile.WriteLine (strConteudoOK)
txtfile.Close
end if
End IF
'Remove o L:
objNetwork.RemoveNetworkDrive "L:"
Bernardo C. Srur
Respostas
-
Olá,
Eu vi que tinha duas vezes para desconectar (uma dentro do IF e outra fora).
Segue o script final:
DIM fso, txtfile , strMyDocumentsGPO, strLogErro, strLogOk, strUserName
Const ForReading = 1, ForWriting = 2, ForAppending = 8
'Coleta de dados do usuario e computador
Set objNetwork = WScript.CreateObject("Wscript.Network")
Set oDrives = objNetwork.EnumNetworkDrives
strUserName = objNetwork.UserName
strComputerName = objNetwork.ComputerName
strDomainName = objNetwork.UserDomain
'procura por utilização de drives de rede e caminhos de rede
Set objWMIService = GetObject("winmgmts:\\" & strComputerName & "\root\cimv2")
DriveMapper("L:")
'mepea o L: aonde fica o log
objNetwork.MapNetworkDrive "L:", "\\srvlinux\publico"
'valores doe comparação e localização de logs
Set objShell = WScript.CreateObject("Wscript.Shell")
'Configuração do Script
strMyDocumentsDefault = objShell.SpecialFolders("MyDocuments")
strMyDocumentsGPO = "\\srvfiles01\home\"&strUserName&"\documentos"
strLogErro = "L:\LogErro.txt"
strLogOk = "L:\LogOk.txt"
'Criando Conteudo do log erro.
strConteudoErro = "Usuario: " & strUserName & vbCrLf _
& "Computador: "& strComputerName & vbCrLf _
& "Dominio: " & strDomainName & vbCrLf _
& vbCrLf _
& "Data: " & Date & vbCrLf _
& "Hora: " & Time & vbCrLf _
& "Ação: Erro!!!! Pasta Meus Documentos não foi alterado!" _
& vbCrLf _
& "-----------------------------------------------------------------" _
& vbCrLf _
& vbCrLf
'Criando Conteudo do log erro.
strConteudoOK = "Usuario: " & strUserName & vbCrLf _
& "Computador: "& strComputerName & vbCrLf _
& "Dominio: " & strDomainName & vbCrLf _
& vbCrLf _
& "Data: " & Date & vbCrLf _
& "Hora: " & Time & vbCrLf _
& "Ação: OK!!!! Pasta Meus Documentos esta alterada!" _
& vbCrLf _
& "-----------------------------------------------------------------" _
& vbCrLf _
& vbCrLf
Set fso = CreateObject("Scripting.FileSystemObject")
'verifica e salva o log conforme a necessidade]
wscript.echo strMyDocumentsGPO
wscript.echo strMyDocumentsDefault
if strMyDocumentsGPO <> strMyDocumentsDefault then
if fso.FileExists(strLogErro) then
Set fso2 = fso.GetFile(strLogErro)
Set txtfile = fso2.OpenAsTextStream(ForAppending,-2)
txtfile.Write strConteudoErro
txtfile.Close
else
Set txtfile = fso.CreateTextFile(strLogErro, True)
txtfile.WriteLine (strConteudoErro)
txtfile.Close
end if
else
if fso.FileExists(strLogOk) then
Set fso2 = fso.GetFile(strLogOk)
Set txtfile = fso2.OpenAsTextStream(ForAppending,-2)
txtfile.Write strConteudoOK
txtfile.Close
else
Set txtfile = fso.CreateTextFile(strLogOk, True)
txtfile.WriteLine (strConteudoOK)
txtfile.Close
end if
End IF
'Remove o L:
DriveMapper("L:")
'==============================================================================
Sub DriveMapper(Drive)
For i = 0 to oDrives.Count -1 Step 2
if LCase(Drive) = LCase(oDrives.Item(i)) then
objNetwork.RemoveNetworkDrive Drive, true, true
End if
Next
End sub
'===============================================================================
Até mais,
Jesiel
Obs.: Se útil, classifique
- Marcado como Resposta Bernardo C. Srur segunda-feira, 24 de agosto de 2009 13:26
Todas as Respostas
-
Olá,
Talvez pode estar gerando o erro nos mapeamentos.
Fiz uma alteração, verifique se vai funcionar:
DIM fso, txtfile , strMyDocumentsGPO, strLogErro, strLogOk, strUserName
Const ForReading = 1, ForWriting = 2, ForAppending = 8
'Coleta de dados do usuario e computador
Set objNetwork = WScript.CreateObject("Wscript.Network")
Set oDrives = objNetwork.EnumNetworkDrives
strUserName = objNetwork.UserName
strComputerName = objNetwork.ComputerName
strDomainName = objNetwork.UserDomain
'procura por utilização de drives de rede e caminhos de rede
Set objWMIService = GetObject("winmgmts:\\" & strComputerName & "\root\cimv2")
DriveMapper("L:")
'mepea o L: aonde fica o log
objNetwork.MapNetworkDrive "L:", "\\srvfiles01\LogMyDocuments"
'valores doe comparação e localização de logs
Set objShell = WScript.CreateObject("Wscript.Shell")
'Configuração do Script
strMyDocumentsDefault = objShell.SpecialFolders("MyDocuments")
strMyDocumentsGPO = "\\srvfiles01\home\"&strUserName&"\documentos"
strLogErro = "L:\LogErro.txt"
strLogOk = "L:\LogOk.txt"
'Criando Conteudo do log erro.
strConteudoErro = "Usuario: " & strUserName & vbCrLf _
& "Computador: "& strComputerName & vbCrLf _
& "Dominio: " & strDomainName & vbCrLf _
& vbCrLf _
& "Data: " & Date & vbCrLf _
& "Hora: " & Time & vbCrLf _
& "Ação: Erro!!!! Pasta Meus Documentos não foi alterado!" _
& vbCrLf _
& "-----------------------------------------------------------------" _
& vbCrLf _
& vbCrLf
'Criando Conteudo do log erro.
strConteudoOK = "Usuario: " & strUserName & vbCrLf _
& "Computador: "& strComputerName & vbCrLf _
& "Dominio: " & strDomainName & vbCrLf _
& vbCrLf _
& "Data: " & Date & vbCrLf _
& "Hora: " & Time & vbCrLf _
& "Ação: OK!!!! Pasta Meus Documentos esta alterada!" _
& vbCrLf _
& "-----------------------------------------------------------------" _
& vbCrLf _
& vbCrLf
Set fso = CreateObject("Scripting.FileSystemObject")
'verifica e salva o log conforme a necessidade]
if strMyDocumentsGPO <> strMyDocumentsDefault then
if fso.FileExists(strLogErro) then
Set fso2 = fso.GetFile(strLogErro)
Set txtfile = fso2.OpenAsTextStream(ForAppending,-2)
txtfile.Write strConteudoErro
txtfile.Close
else
Set txtfile = fso.CreateTextFile(strLogErro, True)
txtfile.WriteLine (strConteudoErro)
txtfile.Close
end if
objNetwork.RemoveNetworkDrive "L:"
else
if fso.FileExists(strLogOk) then
Set fso2 = fso.GetFile(strLogOk)
Set txtfile = fso2.OpenAsTextStream(ForAppending,-2)
txtfile.Write strConteudoOK
txtfile.Close
else
Set txtfile = fso.CreateTextFile(strLogOk, True)
txtfile.WriteLine (strConteudoOK)
txtfile.Close
end if
End IF
'Remove o L:
DriveMapper("L:")
'==============================================================================
Sub DriveMapper(Drive)
For i = 0 to oDrives.Count -1 Step 2
if LCase(Drive) = LCase(oDrives.Item(i)) then
WshNetwork.RemoveNetworkDrive Drive, true, true
End if
Next
End sub
'===============================================================================
Se gerar algum erro, coloque aqui o erro que gerou.
Até mais,
Jesiel
Obs.: Se útil, classifique
-
Blz vou tentar, mas antes da alteração ele estava dando erro na linha que abre o arquivo TXT e adicionava o valor bom nessa comecei a mapear e no fim do script ele removia o mapeamento ... nisso começou a dar erro na linha que mapeava informando que ja estava em uso (mesmo não estando) logo depois mandei remover o mapeamento e o caminho ai começou a dar erro no case ... ja não tava entendo mais nada !rsrsrsrsrr vou tentar aqui e te retorno obrigado !
Bernardo C. Srur -
Fiz uma pequena alteração no pq ele o bjeto necessitava do Wshnetwork...
estava:
WshNetwork.RemoveNetworkDrive Drive, true, true
mudei:
objNetwork.RemoveNetworkDrive Drive, true, true
depois da mudança começou a dar o seguinte erro:
Linha 17 : o nome dispositivo ja esta em uso...
Linha 17 : objNetwork.MapNetworkDrive "L:", "\\srvfiles01\LogMyDocuments"
fui la no meu computador e reparei que o drive L: esta mapeado porém não fui eu quem mapeou....
e agora ? rs
aonde vc acha que possa estar acontecendo o problema ?
Bernardo C. Srur -
-
-
Olá,
Eu vi que tinha duas vezes para desconectar (uma dentro do IF e outra fora).
Segue o script final:
DIM fso, txtfile , strMyDocumentsGPO, strLogErro, strLogOk, strUserName
Const ForReading = 1, ForWriting = 2, ForAppending = 8
'Coleta de dados do usuario e computador
Set objNetwork = WScript.CreateObject("Wscript.Network")
Set oDrives = objNetwork.EnumNetworkDrives
strUserName = objNetwork.UserName
strComputerName = objNetwork.ComputerName
strDomainName = objNetwork.UserDomain
'procura por utilização de drives de rede e caminhos de rede
Set objWMIService = GetObject("winmgmts:\\" & strComputerName & "\root\cimv2")
DriveMapper("L:")
'mepea o L: aonde fica o log
objNetwork.MapNetworkDrive "L:", "\\srvlinux\publico"
'valores doe comparação e localização de logs
Set objShell = WScript.CreateObject("Wscript.Shell")
'Configuração do Script
strMyDocumentsDefault = objShell.SpecialFolders("MyDocuments")
strMyDocumentsGPO = "\\srvfiles01\home\"&strUserName&"\documentos"
strLogErro = "L:\LogErro.txt"
strLogOk = "L:\LogOk.txt"
'Criando Conteudo do log erro.
strConteudoErro = "Usuario: " & strUserName & vbCrLf _
& "Computador: "& strComputerName & vbCrLf _
& "Dominio: " & strDomainName & vbCrLf _
& vbCrLf _
& "Data: " & Date & vbCrLf _
& "Hora: " & Time & vbCrLf _
& "Ação: Erro!!!! Pasta Meus Documentos não foi alterado!" _
& vbCrLf _
& "-----------------------------------------------------------------" _
& vbCrLf _
& vbCrLf
'Criando Conteudo do log erro.
strConteudoOK = "Usuario: " & strUserName & vbCrLf _
& "Computador: "& strComputerName & vbCrLf _
& "Dominio: " & strDomainName & vbCrLf _
& vbCrLf _
& "Data: " & Date & vbCrLf _
& "Hora: " & Time & vbCrLf _
& "Ação: OK!!!! Pasta Meus Documentos esta alterada!" _
& vbCrLf _
& "-----------------------------------------------------------------" _
& vbCrLf _
& vbCrLf
Set fso = CreateObject("Scripting.FileSystemObject")
'verifica e salva o log conforme a necessidade]
wscript.echo strMyDocumentsGPO
wscript.echo strMyDocumentsDefault
if strMyDocumentsGPO <> strMyDocumentsDefault then
if fso.FileExists(strLogErro) then
Set fso2 = fso.GetFile(strLogErro)
Set txtfile = fso2.OpenAsTextStream(ForAppending,-2)
txtfile.Write strConteudoErro
txtfile.Close
else
Set txtfile = fso.CreateTextFile(strLogErro, True)
txtfile.WriteLine (strConteudoErro)
txtfile.Close
end if
else
if fso.FileExists(strLogOk) then
Set fso2 = fso.GetFile(strLogOk)
Set txtfile = fso2.OpenAsTextStream(ForAppending,-2)
txtfile.Write strConteudoOK
txtfile.Close
else
Set txtfile = fso.CreateTextFile(strLogOk, True)
txtfile.WriteLine (strConteudoOK)
txtfile.Close
end if
End IF
'Remove o L:
DriveMapper("L:")
'==============================================================================
Sub DriveMapper(Drive)
For i = 0 to oDrives.Count -1 Step 2
if LCase(Drive) = LCase(oDrives.Item(i)) then
objNetwork.RemoveNetworkDrive Drive, true, true
End if
Next
End sub
'===============================================================================
Até mais,
Jesiel
Obs.: Se útil, classifique
- Marcado como Resposta Bernardo C. Srur segunda-feira, 24 de agosto de 2009 13:26
-
-
Olá,
Então... ele tava desconectando no começo e mapeando... depois ele fazia 2 desconexões.
Só alterei para que ele conectar uma vez e desconectar no final...
Bacana que resolveu!!! Se precisar estamos aí!!!
Até mais,
Jesiel
Obs.: Se útil, classifique