ejik_off
21-05-2014, 11:39
Добрый день!!!
Ребята помогите допилить скрипт сам ноль в vbs-скриптах. Вообщем суть проблемы такая:
с помощью групповых политик на машины пользователей ставится миранда и копируется папка с настроенной мирандай, все это через логон-скрпт. Нужно что бы скрипт после удачного копирования взял названия компа и записал куда-нибудь в шару,
и при следующем запуске скрипта, он должен смотреть нет ли имени машины в списке, если нет то запускается. Как то так.
вот листинг самого скрипта: set WshShell = WScript.CreateObject("WScript.Shell")
set oFso = CreateObject("Scripting.FileSystemObject")
strComputerName = WshShell.ExpandEnvironmentStrings("%computername%")
If InStr(LCase(strComputerName), LCase("TNS-")) = 0 Then
KillProcess()
set objVer = WshShell.exec("%comspec% /c ver")
strWindowsVer = objVer.stdout.readall
strWindows = WshShell.ExpandEnvironmentStrings("%WinDir%")
strWindowsOS = WshShell.ExpandEnvironmentStrings("%PROCESSOR_ARCHITECTURE%")
strAppData = WshShell.ExpandEnvironmentStrings("%APPDATA%")
strCurrentDir = oFSO.GetParentFolderName(Wscript.ScriptFullName)
strDesktop = WshShell.SpecialFolders("Desktop")
strAllUsersPrograms = WshShell.SpecialFolders("AllUsersPrograms")
strAllUsersStartup = WshShell.SpecialFolders("AllUsersStartup")
strSourcePath = "\\intec.tns-intec.kz\sysvol\intec.tns-intec.kz\scripts\Miranda IM\"
strSourceFileVersion = oFso.GetFileVersion(strSourcePath & "miranda32.exe")
If CStr(strWindowsOS) = "x86" Then
strProgramFiles = WshShell.ExpandEnvironmentStrings("%ProgramFiles%")
Else
strProgramFiles = WshShell.ExpandEnvironmentStrings("%ProgramFiles(x86)%")
End If
strDestinationPath = strProgramFiles & "\Miranda IM\"
strDestinationFileVersion = oFso.GetFileVersion(strDestinationPath & "miranda32.exe")
If Not oFSO.FolderExists(strDestinationPath) Then
oFSO.CreateFolder(strDestinationPath)
return = WshShell.Run("xcopy " & chr(34) & strSourcePath & "*" & chr(34) & " " & chr(34) & strDestinationPath & chr(34) & " /I /E /H /Y")
set oShellLink = WshShell.CreateShortcut(strDesktop & "\Miranda IM.lnk")
oShellLink.TargetPath = strDestinationPath & "miranda32.exe"
oShellLink.IconLocation = strDestinationPath & "miranda32.exe, 0"
oShellLink.Description = "Miranda IM"
oShellLink.Save()
If Not oFSO.FileExists(strAllUsersPrograms & "\Miranda IM.lnk") Then
wscript.echo strDesktop & "\Miranda IM.lnk", strAllUsersPrograms & "\Miranda IM.lnk"
oFSO.CopyFile strDesktop & "\Miranda IM.lnk", strAllUsersPrograms & "\Miranda IM.lnk"
End If
If oFSO.FileExists(strAllUsersStartup & "\Miranda IM.lnk") Then
oFSO.DeleteFile strAllUsersStartup & "\Miranda IM.lnk"
End If
If Not oFSO.FileExists(strWindows & "\krb5.ini") Then
oFSO.CopyFile strCurrentDir & "\krb5.ini", strWindows & "\krb5.ini"
End If
If InStr(strWindowsVer, "Windows XP") > 1 Then
WshShell.RegWrite "HKLM\SYSTEM\CurrentControlSet\Control\Lsa\Kerberos\AllowTGTSessionKey", 1, "REG_DWORD"
Else
WshShell.RegWrite "HKLM\SYSTEM\CurrentControlSet\Control\Lsa\Kerberos\Parameters\AllowTGTSessionKey", 1, "REG_DWORD"
End If
WshShell.RegWrite "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run\Miranda", strDestinationPath & "miranda32.exe", "REG_SZ"
Else
wscript.echo strSourceFileVersion
wscript.echo strDestinationFileVersion
If strSourceFileVersion <> strDestinationFileVersion Then
return = WshShell.Run("xcopy " & chr(34) & strSourcePath & "*" & chr(34) & " " & chr(34) & strDestinationPath & chr(34) & " /I /E /H /Y")
wscript.echo return
End If
End If
End If
Sub KillProcess()
strComputer = "."
strProcess = "miranda32.exe"
set objWMIService = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
set colProcessList = objWMIService.ExecQuery("SELECT * FROM Win32_Process WHERE Name = '" & strProcess & "'")
For Each objProcess In colProcessList
objProcess.Terminate()
Next
End Sub
Ребята помогите допилить скрипт сам ноль в vbs-скриптах. Вообщем суть проблемы такая:
с помощью групповых политик на машины пользователей ставится миранда и копируется папка с настроенной мирандай, все это через логон-скрпт. Нужно что бы скрипт после удачного копирования взял названия компа и записал куда-нибудь в шару,
и при следующем запуске скрипта, он должен смотреть нет ли имени машины в списке, если нет то запускается. Как то так.
вот листинг самого скрипта: set WshShell = WScript.CreateObject("WScript.Shell")
set oFso = CreateObject("Scripting.FileSystemObject")
strComputerName = WshShell.ExpandEnvironmentStrings("%computername%")
If InStr(LCase(strComputerName), LCase("TNS-")) = 0 Then
KillProcess()
set objVer = WshShell.exec("%comspec% /c ver")
strWindowsVer = objVer.stdout.readall
strWindows = WshShell.ExpandEnvironmentStrings("%WinDir%")
strWindowsOS = WshShell.ExpandEnvironmentStrings("%PROCESSOR_ARCHITECTURE%")
strAppData = WshShell.ExpandEnvironmentStrings("%APPDATA%")
strCurrentDir = oFSO.GetParentFolderName(Wscript.ScriptFullName)
strDesktop = WshShell.SpecialFolders("Desktop")
strAllUsersPrograms = WshShell.SpecialFolders("AllUsersPrograms")
strAllUsersStartup = WshShell.SpecialFolders("AllUsersStartup")
strSourcePath = "\\intec.tns-intec.kz\sysvol\intec.tns-intec.kz\scripts\Miranda IM\"
strSourceFileVersion = oFso.GetFileVersion(strSourcePath & "miranda32.exe")
If CStr(strWindowsOS) = "x86" Then
strProgramFiles = WshShell.ExpandEnvironmentStrings("%ProgramFiles%")
Else
strProgramFiles = WshShell.ExpandEnvironmentStrings("%ProgramFiles(x86)%")
End If
strDestinationPath = strProgramFiles & "\Miranda IM\"
strDestinationFileVersion = oFso.GetFileVersion(strDestinationPath & "miranda32.exe")
If Not oFSO.FolderExists(strDestinationPath) Then
oFSO.CreateFolder(strDestinationPath)
return = WshShell.Run("xcopy " & chr(34) & strSourcePath & "*" & chr(34) & " " & chr(34) & strDestinationPath & chr(34) & " /I /E /H /Y")
set oShellLink = WshShell.CreateShortcut(strDesktop & "\Miranda IM.lnk")
oShellLink.TargetPath = strDestinationPath & "miranda32.exe"
oShellLink.IconLocation = strDestinationPath & "miranda32.exe, 0"
oShellLink.Description = "Miranda IM"
oShellLink.Save()
If Not oFSO.FileExists(strAllUsersPrograms & "\Miranda IM.lnk") Then
wscript.echo strDesktop & "\Miranda IM.lnk", strAllUsersPrograms & "\Miranda IM.lnk"
oFSO.CopyFile strDesktop & "\Miranda IM.lnk", strAllUsersPrograms & "\Miranda IM.lnk"
End If
If oFSO.FileExists(strAllUsersStartup & "\Miranda IM.lnk") Then
oFSO.DeleteFile strAllUsersStartup & "\Miranda IM.lnk"
End If
If Not oFSO.FileExists(strWindows & "\krb5.ini") Then
oFSO.CopyFile strCurrentDir & "\krb5.ini", strWindows & "\krb5.ini"
End If
If InStr(strWindowsVer, "Windows XP") > 1 Then
WshShell.RegWrite "HKLM\SYSTEM\CurrentControlSet\Control\Lsa\Kerberos\AllowTGTSessionKey", 1, "REG_DWORD"
Else
WshShell.RegWrite "HKLM\SYSTEM\CurrentControlSet\Control\Lsa\Kerberos\Parameters\AllowTGTSessionKey", 1, "REG_DWORD"
End If
WshShell.RegWrite "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run\Miranda", strDestinationPath & "miranda32.exe", "REG_SZ"
Else
wscript.echo strSourceFileVersion
wscript.echo strDestinationFileVersion
If strSourceFileVersion <> strDestinationFileVersion Then
return = WshShell.Run("xcopy " & chr(34) & strSourcePath & "*" & chr(34) & " " & chr(34) & strDestinationPath & chr(34) & " /I /E /H /Y")
wscript.echo return
End If
End If
End If
Sub KillProcess()
strComputer = "."
strProcess = "miranda32.exe"
set objWMIService = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
set colProcessList = objWMIService.ExecQuery("SELECT * FROM Win32_Process WHERE Name = '" & strProcess & "'")
For Each objProcess In colProcessList
objProcess.Terminate()
Next
End Sub