顯示具有 VBScript 標籤的文章。 顯示所有文章
顯示具有 VBScript 標籤的文章。 顯示所有文章

2012年4月27日 星期五

使用VBScript將OU內的User名稱改大寫


要將OU內的所以使用者名稱,將英文小寫部份都變更為大寫。
爬文了一下, 原來DN (distinguishedName) 是不能用 objUser.put 方式來改的..
要用Move的方式來處理..
如下 : 將User Object 由原來的名稱, 移到大寫的新名稱的位置.

' Change DN (distinguishedName) to UpperCase by VBScript
' -----------------------------------------------'
Option Explicit
Dim objOU, objUser , UName, LName
Set objOU = GetObject("LDAP://ou=OU1,dc=demo,dc=com")
For each objUser in objOU
If objUser.class="user" Then
LName = objUser.displayName
UName = UCase(objUser.displayName)
objUser.Put "displayname", UName
objUser.Put "givenName", UName
objUser.Put "sAMAccountName",UName
objUser.SetInfo
GetObject(objUser.parent).moveHere ObjUser.adspath,"CN=" & UName
End If
Next

2012年2月7日 星期二

archive system log by schedule tasks


' 由於某些軟體會產生大量的檔案,特建立備存機制,
' 1. 將特定目錄下的子目錄都備存起來,並刪除空的子目錄
' 2. 需先安裝WINRAR
' 3. 將下列程式做成.vbs 檔案
' 4. 建立Task schedule , 將備存的目錄設為參數
'
'--- .vbs 程式開始
Option Explicit
 
' 宣告變數
Dim FSO, agoDays, modifiedDate, ArcFolder  ,myArgs, GetDateTimeFM, wshshell

' 建立檔案系統物件(File System Object)
Set FSO = CreateObject("Scripting.FileSystemObject")
' 建立執行的shell 物件
Set wshshell=createobject ("wscript.shell")
'取得第一個變數
Set myArgs = WScript.arguments
' 欲備存檔案所在之目錄    
ArcFolder = myArgs(0)
' 取得日期(yyyy_mm_dd_hh_nn_ss)
GetDateTimeFM = GetFormattedDateTime()

' 呼叫備存檔案的子程序
ArcFilesInFolder FSO.GetFolder(ArcFolder)    

' 呼叫刪除空Folder的子程序
DelFoldersInFolder FSO.GetFolder(ArcFolder)    

' 備存目錄的子程序
Sub ArcFilesInFolder(folder)
  ' 宣告變數
  Dim file, subFolder,strshell
  ' 如果遇到子目錄,也要進去檢查並刪除
  For Each subFolder in folder.SubFolders
      strshell = "WinRAR.exe a -r -df " + SubFolder + "-dt-" + GetDateTimeFM + ".rar " + subFolder + "\"
      Call wshshell.run (strshell,0)
Next
End Sub  

' 刪除檔案的子程序
Sub DelFoldersInFolder(folder)
  ' 宣告變數
  Dim dfile, dsubFolder, fdEmpty  
  ' 如果遇到子目錄,要先進去檢查並刪除
  For Each dsubFolder in folder.SubFolders
      DelFoldersInFolder dsubFolder
Next  
  fdEmpty = True
  ' 找出目前所在目錄內所有的檔案
  For Each dfile In folder.Files ' 檢查檔案日期是否符合條件,若符合,就刪除
      fdEmpty = False
  Next    
  For Each dsubFolder in folder.SubFolders
  fdEmpty = False
    Next
    If fdEmpty = True Then
    folder.delete
  End If
End Sub  

' 取得日期的函式
Function GetFormattedDateTime
  Dim strNow, strDD, strMM, strYYYY,strHH,strNN,strSS
strYYYY = DatePart("yyyy",Now())
strMM = Right("0" & DatePart("m",Now()),2) 'month
strDD = Right("0" & DatePart("d",Now()),2) 'day
strHH = Right("0" & DatePart("h",Now()),2) 'hour
strNN = Right("0" & DatePart("n",Now()),2)  'mintue
strSS = Right("0" & DatePart("s",Now()),2) 'second
GetFormattedDateTime = strYYYY & "_" & strMM & "_" & strDD & "_" & strHH & "_" & strNN & "_" & strSS
End Function
'--- .vbs 程式結束

2012年1月19日 星期四

每天自動刪除過期檔案(Delete Files over than n days)

File Server 雖是儲存空間,但也不必要永久存放,如果已經進磁帶備份後,很多參考用的大檔案是可以刪除的。

研究了一下 VBScript 自動刪除的機制,將下面的.vbs File 加到Server 的Schedule Tasks ,再加上絕對路徑當參數,就可以自動刪除了。

------------------ 以下作成一個 delFolderFilesOverThan60days.vbs --------


' 指定所有變數必須事先宣告才能使用
Option Explicit
 
' 宣告變數
Dim FSO, agoDays, modifiedDate, delFolder  ,myArgs

'If WScript.arguments.length <> 0 Then
' WScript.quit  
'End If

' 建立檔案系統物件(File System Object)
Set FSO = CreateObject("Scripting.FileSystemObject")

' 請將下面的變數值換成你要的
' 指定 n 天前的檔案,現在是 3 天前
agoDays = 60
' 取得檔案的修改日期
modifiedDate = DateAdd("d", -agoDays, Date)  

Set myArgs = WScript.arguments

' 欲刪除檔案所在之目錄    
delFolder = myArgs(0)

' 呼叫刪除檔案的子程序
DelFilesInFolder FSO.GetFolder(delFolder)    

' 刪除檔案的子程序
Sub DelFilesInFolder(folder)
  ' 宣告變數
  Dim file, subFolder
 
  ' 找出目前所在目錄內所有的檔案
  For Each file In folder.Files
      ' 檢查檔案日期是否符合條件,若符合,就刪除
      If ((file.DateLastModified <= modifiedDate)) Then
          file.delete
      End If
  Next
 
  ' 如果遇到子目錄,也要進去檢查並刪除
  For Each subFolder in folder.SubFolders
      DelFilesInFolder subFolder
Next
End Sub  
 
'WScript.Echo("作業執行完畢:" & Date & " " & Time)

----------------------------------

程式的參考出處:

http://ithelp.ithome.com.tw/question/10009001
http://ithelp.ithome.com.tw/question/10058183