====== Примеры скриптов Windows Scripting Host (WSH) ======
===== Мапирование сетевых дисков =====
'*************************************************
' File: MapDrives.vbs
'
' Mapping network drives
'*************************************************
Option Explicit
Dim oWshShell, oWshNetwork, oDrives
Dim MapList, i
Dim Drv1, Drv2, Drv3, Drv4
Dim Share1, Share2, Share3, Share4
Dim Srv
' Script parameters ===========
Drv1 = "X:"
Share1 = "SHARE"
Srv = "\\SRV.DOMAIN.DOM\"
' ===============================
MapList = vbCrLf & "Your drives mapping:" & vbCrLf & "====================" & vbCrLf & vbCrLf
SetCScript ()
Set oWshNetwork = WScript.CreateObject("WScript.Network")
Set oDrives = oWshNetwork.EnumNetworkDrives
' Remove required only drive letter
On Error Resume Next
oWshNetwork.RemoveNetworkDrive Drv1,true,true
ErrCheck Err.Number
' Remove all drives letters
'For i = 0 To oDrives.Count - 1 Step 2
' oWshNetwork.RemoveNetworkDrive oDrives.Item(i), true, true
' ErrCheck Err.Number
'Next
' Map drives
oWshNetwork.MapNetworkDrive Drv1, Srv & Share1
ErrCheck Err.Number
Set oDrives = oWshNetwork.EnumNetworkDrives
For i = 0 To oDrives.Count - 1 Step 2
If oDrives(i) <> " " Then
MapList = MapList & oDrives(i) & " --> " & oDrives(i+1) & vbCrLf
End If
Next
WScript.Echo MapList
' Set cscript as default WSH shell
Sub SetCScript ()
Dim iPosition
iPosition = InStr( LCase(WScript.FullName) , "cscript.exe" )
If iPosition = 0 Then
Set oWshShell = CreateObject("WScript.Shell")
oWshShell.Run "cmd.exe /k cscript.exe //nologo " & """" & WScript.ScriptFullName & """"
WScript.Quit(0)
End If
End Sub
' Show error
Sub ErrCheck(nr)
Select Case nr
Case 0
' No error
Case -2147024829
WScript.Echo "Error: Network resource doesn't exist"
Case -2147024811
WScript.Echo "Error: Drive already mapped"
Case Else
WScript.Echo "Error: " & CStr(nr)
End Select
End Sub
===== Очистка файлообменника =====
http://nexusnotes.ru/2009/12/right-clean-exchange/
- при запуске скрипт перемещает файлы и каталгоги с датой модификации старее 7 дней в каталог deletion_queue.
- из каталога deletion_queue удаляется все что старее 10 дней
- если создать каталог dont_delete, олн не будет очищаться
'==========================================================================
' File: clear_common_v2s.vbs
'
' AUTHOR: Konstantin Timokhin [k.timokhin@gmail.com]
' DATE : 14.05.2006
'
' COMMENT: clear common exchange folders
'
'==========================================================================
On Error Resume Next
'================================
'preinitialization
'================================
Set args = WScript.Arguments
if args.Count = 0 Then
WScript.Echo "Usage: [CScript | WScript] clear_exchange.vbs "
WScript.Quit 1
end if
'================================
'defining global values
'================================
ExchangeFoldersPoint = args.Item(0) 'main point of exchange folders
DeletionQueueFolderName = "_deletion_queue_" 'folder inside each exchange folders like stored "deleted file"
LeaveOutFolders = Array("") 'do not disturb folders
SkipedFiles = Array("exchange_folder_information.txt") 'touch-me-not files inside exchange folders
SkipedFolders = Array(DeletionQueueFolderName, "donotdelete") 'touch-me-not folders inside exchange folders
'DeletionQueueFolderName must be permanently included in this list
DeletionQueueDaysOld = 10 'days past since last file modification sufficiently for deleting
ExchangeDaysOld = 7 'days past since last file modification sufficiently for moving to deletion queue
'================================
' functions library
'================================
'----common functions-----
Function InArray(Arr, SearchIt)
arr_temp = Filter(Arr, SearchIT, True, 1)
InArray = false
For Each element In arr_temp
If UCase(element) = UCase(SearchIt) Then InArray = true
Next
End Function
Function FixAp(body)
FixAp=Replace(body, "'", "\'")
End Function
'----files and folders operations----
Function DeleteFolder(Folderpath)
DeleteFolder = 53
Set colFolders = objWMIService.ExecQuery("Select * from Win32_Directory where Name = '" & FixAp(Replace(Folderpath, "\", "\\")) & "'")
For Each objFolder in colFolders
errResults = objFolder.Delete
Next
DeleteFolder = errResult
'objFSO.DeleteFolder(Folderpath)
End Function
Function MoveFolder(SourcePath, DestinationPath, Foldername)
MoveFolder = 53
Set colFolders = objWMIService.ExecQuery("Select * from Win32_Directory where Name = '" & FixAp(Replace(SourcePath & "\" & Foldername, "\", "\\")) &"'")
For Each objFolder in colFolders
errResults = objFolder.Rename(DestinationPath & "\" & Foldername)
Next
MoveFolder = errResults
End Function
Function DeleteFile(Filepath)
DeleteFile = 53
Set colFiles = objWMIService.ExecQuery("Select * from CIM_Datafile where Name = '" & FixAp(Replace(Filepath, "\", "\\")) & "'")
For Each objFile in colFiles
errResults = objFile.Delete
Next
DeleteFile = errResults
End Function
Function MoveFile(SourcePath, DestinationPath, Filename)
MoveFile = 53
Set colFiles = objWMIService.ExecQuery("Select * from CIM_Datafile where Name = '" & FixAp(Replace(SourcePath & "\" & Filename, "\", "\\")) & "'")
For Each objFile in colFiles
errResults = objFile.Rename(DestinationPath & "\" & Filename)
Next
MoveFile = errResult
End Function
Function DeleteFolders(SourcePath, ExcludedDirs)
Set objFolder = objFSO.GetFolder(SourcePath)
Set colSubfolders = objFolder.Subfolders
For Each objSubfolder in colSubfolders
If Not InArray(ExcludedDirs, objSubfolder.Name) Then DeleteFolder(SourcePath & "\" & objSubfolder.Name)
Next
End Function
Function MoveFolders(SourcePath, DestinationPath, ExcludedDirs)
Set objFolder = objFSO.GetFolder(SourcePath)
Set colSubfolders = objFolder.Subfolders
For Each objSubfolder in colSubfolders
If Not InArray(ExcludedDirs, objSubfolder.Name) Then MoveFolder SourcePath, DestinationPath, objSubfolder.Name
Next
End Function
Function DeleteFiles(SourcePath, ExcludedFiles)
Set Folder = objFSO.GetFolder(SourcePath)
For Each file In Folder.Files
If Not InArray(ExcludedFiles, Mid(file, Len(SourcePath)+2)) Then DeleteFile(file)
Next
End Function
Function MoveFiles(SourcePath, DestinationPath, ExcludedFiles)
Set Folder = objFSO.GetFolder(SourcePath)
For Each file In Folder.Files
If Not InArray(ExcludedFiles, Mid(file, Len(SourcePath)+2)) Then MoveFile SourcePath, DestinationPath, Mid(file, Len(SourcePath)+2)
Next
End Function
'================================
'initiallization
'================================
strComputer = "."
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objWMIService = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
'================================
'processing
'================================
Function deleteOldFiles(Folderpath, DaysOld)
'first processing all subfolders
deleteOldFiles = False
For Each Subfolder In objFSO.GetFolder(Folderpath).SubFolders
sPath = Subfolder.Path
If Not deleteOldFiles(Subfolder.Path, DaysOld) Then
DeleteFolder sPath
Else
deleteOldFiles = True
End If
Next
'next proccessing old files
For Each File In objFSO.GetFolder(Folderpath).Files
If File.DateLastModified < (Date() - DaysOld) Then
If DeleteFile(File) Then deleteOldFiles = True
Else
deleteOldFiles = True
End If
Next
End Function
filesIsMoved = 0
Function moveOldFiles(Folderpath, DaysOld, ExcludedFolders, ExcludedFiles)
'first processing all subfolders
moveOldFiles = 1
For Each Subfolder In objFSO.GetFolder(Folderpath).SubFolders
sPath = Subfolder.Path
If Not InArray(ExcludedFolders, Subfolder.Name) Then
If moveOldFiles(Subfolder.Path, DaysOld, ExcludedFolders, ExcludedFiles) Then
DeleteFolder sPath
Else
moveOldFiles = 0
End If
Else
moveOldFiles = 0
End If
Next
'next proccessing old files
structureCreated = False
curFolder = Mid(FolderPath, Len(ExchangeFoldersPoint) + 2)
curDFolder = ExchangeFoldersPoint + "\" + DeletionQueueFolderName + "\" + curFolder
For Each File In objFSO.GetFolder(Folderpath).Files
If Not InArray(ExcludedFiles, Mid(file, Len(Folderpath)+2)) And File.DateLastModified < (Date() - DaysOld) Then
If Not structureCreated Then
If Not objFSO.FolderExists(curDFolder) Then
tArr = Split(curFolder, "\")
cDir = ""
For Each DirName In tArr
If cDir = "" Then
cDir = DirName
Else
cDir = cDir & "\" & DirName
End If
tDir = ExchangeFoldersPoint + "\" + DeletionQueueFolderName + "\" & cDir
If Not objFSO.FolderExists(tDir) Then objFSO.CreateFolder(tDir)
Next
End If
structureCreated = 1
End If
MoveFile FolderPath, curDFolder, Mid(File, Len(FolderPath)+2)
Else
moveOldFiles = 0
End If
Next
End Function
Function ProcessExchangeFolder(Folderpath)
'checking existing deletion queue folder and creating it on necessary
If not objFSO.FolderExists(Folderpath & "\" & DeletionQueueFolderName) Then
objFSO.CreateFolder(Folderpath & "\" & DeletionQueueFolderName)
Else
deleteOldFiles Folderpath & "\" & DeletionQueueFolderName, DeletionQueueDaysOld
End If
moveOldFiles Folderpath, ExchangeDaysOld, SkipedFolders, SkipedFiles
End Function
'For Each Subfolder in objFSO.GetFolder(ExchangeFoldersPoint).SubFolders
' If not InArray(LeaveOutFolders, Subfolder.Name) Then
' currentExchangeFolder = Subfolder.Name
' ProcessExchangeFolder(Subfolder.Path)
' End If
'Next
ProcessExchangeFolder(ExchangeFoldersPoint)
===== Установка пароля администратора =====
'*************************************************
' File: Set.LocalAdmin.Password.vbs
'
' Set password for local administrator
'*************************************************
On Error Resume Next
strPasswd = "AdMiNi$tRaT0r"
Set Network = WScript.CreateObject("WScript.Network")
Set objWMIService = GetObject("winmgmts:\\.\root\CIMV2")
strServer = Network.ComputerName
strWQLquery = "SELECT * FROM Win32_UserAccount WHERE domain = '" & strServer & "'"
Set colAllSysUsers = objWMIService.ExecQuery( strWQLquery )
For Each User In colAllSysUsers
RID = Right( User.SID ,3)
If RID = "500" Then
Set objUser = GetObject("WinNT://" & strServer & "/" & User.Name & ",user")
objUser.Setpassword strPasswd
objUser.SetInfo
Exit For
End If
Next