User Tools

Site Tools


microsoft:scripting:vbscript:snippets:misc

Determine OS version

'========================================================================== 
' 
' NAME: DetectOS.vbs 
' 
' AUTHOR: DiGiTAL.SkReAM 
' DATE  : 10/26/2005 
' 
' COMMENT: Populates the sOS string variable with the name of the current OS 
' 
'========================================================================== 
Option Explicit 
Dim oShell 
Dim oShellExec, oStdOutputText, sText, iElement, aOS, sOS 
Set oShell = CreateObject("Wscript.Shell") 
Set oShellExec = oShell.Exec("%comspec% /c ver") 
Set oStdOutputText = oShellExec.StdOut 
    Do While Not oStdOutputText.AtEndOfStream 
        sText = oStdOutputText.ReadLine 
  aOS = Array("Windows 95", "Windows 98", "Windows NT", "Windows 2000", "Windows XP", "Microsoft Windows [Version") 
   For iElement = LBound(aOS) To UBound(aOS) 
    If InStr(sText, aOS(iElement)) <> 0 Then 
     If aOS(iElement) = "Microsoft Windows [Version" Then 
      sOS = "Windows 2003" 
     Else 
      sOS = aOS(iElement) 
     End If 
    End If 
   Next 
 Loop 
WScript.Echo sOS

Source:VisualBasicScript.com - Short, Easy way to determine OS

Or:

Set objShell=WScript.CreateObject("WScript.Shell")
 
WScript.Echo "The current operating system is: " & oShell.RegRead "HKLM\Software\Microsoft\Windows NT\CurrentVersion\ProductName")
 
Set objShell = Nothing

Source:PC Tools Community Forum > Windows Programming Discussions > Windows Scripting Questions > Logon Script to determine OS?

Pingen vanuit VBScript

Zie:Rob van der Woude's Scripting Pages - Ping Computers voor een voorbeeld met WMI voor Windows XP en hoger en een voorbeeld met de System Scripting Runtime.

Een andere optie is:

Function PingStatus(strComputer)
 
	PingStatus = "Failed"
 
	Set objShell = CreateObject("WScript.Shell")
 
	Set objWshScriptExec = objShell.Exec("%comspec% /c ping -n 3 -w 1000 " & strComputer)
	Set objStdOut = objWshScriptExec.StdOut
 
	Do Until objStdOut.AtEndOfStream
 
		strLine = objStdOut.ReadLine
 
		If InStr(strLine, "Reply") > 0 OR InStr(strLine, "Antwoord") > 0 Then 
 
			PingStatus = "Success"
 
		End If
 
	Loop
 
	Set objStdOut = Nothing
	Set objWshScriptExec = Nothing
	Set objShell = Nothing
 
End Function

Gebaseerd op code van Hey, Scripting Guy! - Why Doesn't My Ping Script Run on Windows 2000 Computers?.

Shortcut maken/bewerken

Gebruik hiervoor:

Set objShortcut = wshShell.CreateShortcut(strTargetPath)

Vervolgens kun je een aantal properties opvragen/zetten:

objShortcut.FullName
objShortcut.Arguments
objShortcut.WorkingDirectory
objShortcut.TargetPath
objShortcut.IconLocation
objShortcut.Hotkey
objShortcut.WindowStyle
objShortcut.Description

En afsluiten met een objShortcut.Save als wilt opslaan.

Bron:Rob van der Woude's Scripting Pages - Shortcuts “The *Undocumented* Trick: use the ”.CreateShortcut“ method without the ”.Save“ method; works like a GetShortcut when the shortcut already exists!” Zie ook:
MSDN Library - CreateShortcut Method
MSDN Library - WshShortcut Object Properties and Methods
MSDN Library - WshUrlShortcut Object

Tellen van bepaald karakter in string

If UBound(Split(strFolder, "\")) < 5 Then
 
End If

Gegapt van: Computing.net - How to use VBScript for String Count

Create AT job on remote computer

Const bRunRepeatedly = True

strComputer = "remotecomputername"

Set objWMI = objLocator.ConnectServer ( strComputer, "\root\cimv2", strComputer & "\Administrator", "password" )
objWMI.Security_.impersonationlevel = 3

Set objSchedTask = objWMI.Get("Win32_ScheduledJob")

Set colSchedTask = objWMI.ExecQuery("SELECT * FROM Win32_ScheduledJob")
	
'Delete extisting AT jobs with the same command to prevent creating the same job multiple times.
For Each objTask in colSchedTask
	
	If objTask.Command = chr(34) & "C:\Program Files\Update\update.vbs" & chr(34) Then
		
		Set objInstance = objWMI.Get("Win32_ScheduledJob.JobID=" & objTask.JobID)
		
		objInstance.Delete
		
		Set objInstance = Nothing
			
	End If
		 
Next
	
intResultSchedTask1 = objSchedTask.Create (chr(34) & "C:\Program Files\Update\update.vbs" & chr(34), "********150000.000000+060", bRunRepeatedly, 127)
	
intResultSchedTask2 = objSchedTask.Create (chr(34) & "C:\Program Files\Update\update.vbs" & chr(34), "********170000.000000+060", bRunRepeatedly, 127)

intResultSchedTask3 = objSchedTask.Create (chr(34) & "C:\Program Files\Update\update.vbs" & chr(34), "********210000.000000+060", bRunRepeatedly, 127)

If intResultSchedTask1 = 0 AND intResultSchedTask2 = 0 AND intResultSchedTask3 = 0 Then

	AddTask = "Success"
		
Else
	
	AddTask = "Failed"
		
End If

Set colSchedTask = Nothing
Set objSchedTask = Nothing
Set objWMI = Nothing

Remote registry edit

'SetTightVNCAsk: configures TightVNC to ask the user if the remote connection is allowed where the remote connection is made from any IP address.
Function SetTightVNCAsk(strComputer)
 
	SetTightVNCAsk = "Failed"
 
	Const HKEY_LOCAL_MACHINE = &H80000002
 
	Set objWMIService = objLocator.ConnectServer ( strComputer, "\root\default", strComputer & "\" & strAcc, strPassword )
	objWMIService.Security_.impersonationlevel = 3
 
	'Line below taken from example in http://msdn.microsoft.com/en-us/library/aa393067(VS.85).aspx - Requesting WMI Data on a 64-bit Platform
	Set objReg = objWMIService.Get("StdRegProv") 
 
	'Code from http://msdn.microsoft.com/en-us/library/aa393600(VS.85).aspx - SetStringValue Method of the StdRegProv Class
 
	strKeyPath = "SOFTWARE\TightVNC\Server"
	strValueName = "IpAccessControl"
	strValue = "0.0.0.0-255.255.255.255:2"
 
	' write string value to key    
	intResult = objReg.SetStringValue(HKEY_LOCAL_MACHINE, strKeyPath, strValueName, strValue)
 
	If intResult = 0 Then
 
		SetTightVNCAsk = "Success"
 
	Else
 
		SetTightVNCAsk = "Failed"
 
	End If
 
	Set objReg = Nothing
	Set objWMIService = Nothing
 
End Function

Check if specific Windows Update is installed

Set objSession = CreateObject("Microsoft.Update.Session")
Set objSearcher = objSession.CreateUpdateSearcher
intHistoryCount = objSearcher.GetTotalHistoryCount
 
Set colHistory = objSearcher.QueryHistory(0, intHistoryCount)
 
strStatus = "empty"
 
For Each objEntry in colHistory
 
	'Operation
	'1 = Installation
	'2 = Uninstallation
 
	'ResultCode
	'0 = not started.
	'1 = in progress.
	'2 = completed successfully.
	'3 = completed, but one or more errors occurred."
	'4 = failed to complete
	'5 = aborted
 
	If InStr(objEntry.Title, "KB958830") > 0 And objEntry.Operation = 1 And objEntry.ResultCode = 2 Then
 
		strStatus = "Found"		
 
	End If
 
 
Next
 
If strStatus = "Found" Then
 
	WScript.Echo "Found update KB958830."
 
Else
 
	WScript.Echo "Did not find KB958830."
 
End If
 
Set colHistory = Nothing
Set objSearcher = Nothing
Set objSession = Nothing

Based on code from:Microsoft TechNet - Tales from the Script - July 2005 see also msdn - Windows Update Agent API

microsoft/scripting/vbscript/snippets/misc.txt · Last modified: 2011/11/10 15:42 by bas

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki