• 0

[VBS] How to get Realtime Status of Network Drives!


Question

I have a script that maps network drives but i would like to create a way to display the realtime status of those drive for instance if the drive is connected then a cell in the table that displays all of the drives would turn green and if the drive was not connected then it will turn red. i am fairly new to VBS.

Option Explicit
	const pcstrPath = ";G:\SYSINFO;F:\Public"
	const pcstrC3Server = "\\Z02DBCVSC01\"
	dim objExplorer, HTML
	'set oIE = CreateObject("InternetExplorer.Application") 
	'Modeless oIE, "VSC Logon Script is running, please wait..." 
	On Error Resume Next
Set objExplorer = CreateObject ("InternetExplorer.Application")
objExplorer.Navigate "about:blank"   
objExplorer.ToolBar = 0
objExplorer.StatusBar = 0
objExplorer.Fullscreen = 1
objExplorer.Left =  0
objExplorer.Top =   0
'objExplorer.Width = 800
'objExplorer.Height = 600
objExplorer.Visible = 1			 
objExplorer.Document.Body.Style.Cursor = "wait"
Dim objDocument:Set objDocument = objExplorer.Document	
  objDocument.Open
  objDocument.Writeln "<HEAD></HEAD><TITLE>Logon Script Progress</TITLE>"
  objDocument.Writeln "<Body BGColor=white SCROLL=YES>"	
  objDocument.Writeln "</BODY>"  

'###Write to the IE Object
objExplorer.Document.Body.InnerHTML="<html><tablelor=lightblue border=3 width=100% bordercolor=black cellspacing=6 cellpadding=6" &amp; _ 
	   "height=100%&gt;&lt;tr valign=middle&gt;&lt;td align=center&gt; " &amp; _
	   "&lt;caption align=center&gt;&lt;font size=20&gt;&lt;b&gt;&lt;i&gt; Mapping Network Drives.... &lt;/b&gt;&lt;/i&gt;&lt;/font&gt;&lt;/caption&gt; " &amp; _
	   "&lt;tr&gt; " &amp; _
	   "&lt;th&gt;&lt;font size=18 color=black&gt;&lt;u&gt;Network Drive:&lt;/u&gt;&lt;/font&gt;&lt;/th&gt; " &amp; _
	   "&lt;th&gt;&lt;font size=18 color=black&gt;&lt;u&gt;Connected:&lt;/u&gt;&lt;/font&gt;&lt;/th&gt; " &amp; _
	   "&lt;tr&gt; " &amp; _
	   "&lt;td align=left&gt;&lt;font size=10 color=black&gt;(G:) Rafacsii$ on 'Z02dbcvsc01'&lt;/font&gt;&lt;/td&gt; " &amp; _
		   "&lt;td align=center&gt;&lt;/td&gt; " &amp; _
	   "&lt;tr&gt; " &amp; _
	   "&lt;td align=left&gt;&lt;font size=10 color=black&gt;(H:) Rafacs$ on ' Z02dbcvsc01'&lt;/font&gt;&lt;/td&gt; " &amp; _
	   "&lt;td align=center&gt;&lt;/td&gt; " &amp; _
	   "&lt;tr&gt; " &amp; _
	   "&lt;td align=left&gt;&lt;font size=10 color=black&gt;(I:) User on 'Z02rscvsc07\User Share' &lt;/font&gt;&lt;/td&gt; " &amp; _
	   "&lt;td align=center&gt;&lt;/td&gt; " &amp; _
	   "&lt;tr&gt; " &amp; _
	   "&lt;td align=left&gt;&lt;font size=10 color=black&gt;(J:) Local on 'Z02rscvsc07\NOVAShare\Mis' &lt;/font&gt;&lt;/td&gt; " &amp; _
	   "&lt;td align=center&gt;&lt;/td&gt; " &amp; _
	   "&lt;tr&gt; " &amp; _
	   "&lt;td align=left&gt;&lt;font size=10 color=black&gt;(K:) Pubarc on 'Z02rscvsc07' &lt;/font&gt;&lt;/td&gt; " &amp; _
	   "&lt;td align=center&gt;&lt;/td&gt; " &amp; _
	   "&lt;tr&gt; " &amp; _
	   "&lt;td align=left&gt;&lt;font size=10 color=black&gt;(L:) APPLShare on 'Z02rscvsc07' &lt;/font&gt;&lt;/td&gt; " &amp; _
	   "&lt;td align=center&gt;&lt;/td&gt; " &amp; _
	   "&lt;tr&gt; " &amp; _
	   "&lt;td align=left&gt;&lt;font size=10 color=black&gt;(M:) Imroot$ on 'Z02dbcvsc01' &lt;/font&gt;&lt;/td&gt; " &amp; _
	   "&lt;td align=center&gt;&lt;/td&gt; " &amp; _
	   "&lt;tr&gt; " &amp; _
	   "&lt;td align=left&gt;&lt;font size=10 color=black&gt;(O:) itsopshre on 'Z02rscvsc07' &lt;/font&gt;&lt;/td&gt; " &amp; _
	   "&lt;td align=center&gt;&lt;/td&gt; " &amp; _
	   "&lt;tr&gt; " &amp; _
	   "&lt;td align=Left&gt;&lt;font size=10 color=black&gt;(P:) DocProd on 'Z02c4cvsc01' &lt;/font&gt;&lt;/td&gt; " &amp; _
	   "&lt;td align=center&gt;&lt;/td&gt; " &amp; _
	   "&lt;tr&gt; " &amp; _
	   "&lt;td align=Left&gt;&lt;font size=10 color=black&gt;(Q:) PrintShare on 'Z02TBCVSC02(Z02tbcvsc02)' &lt;/font&gt;&lt;/td&gt; " &amp; _
	   "&lt;td align=center&gt;&lt;/td&gt; " &amp; _
	   "&lt;tr&gt; " &amp; _
	   "&lt;/font&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;"
objDocument.Close

	Dim pstrUserName,pstrGroups,pstrFailed,pstrSpecialVolChar
	'Modeless oIE, "VSC Logon Script is running, please wait...&lt;/p&gt;&lt;/p&gt; getting User Name"
	pstrUserName = fstrGetUserProperty("samAccountName")
	'Modeless oIE, "VSC Logon Script is running, please wait...&lt;/p&gt;&lt;/p&gt; getting group membership"
	pstrGroups = ucase(fstrGetUserProperty("MemberOf"))
	if InStr(pstrGroups, "VSC C3 SERVICE ACCOUNTS") then
	pstrSpecialVolChar = "Z"
	end if
	If fblnMapDriveAndFolder("I:", "\\Z02APPVSC01\User Share", "\" &amp; pstrUserName) = False Then
		pstrFailed = pstrFailed &amp; "&lt;/p&gt;" &amp; "I:" &amp; "\\Z02APPVSC01\User Share\" &amp; pstrUserName &amp; "\  Has NOT been mapped"
	End If
	'Modeless oIE, "VSC Logon Script is running, please wait...&lt;/p&gt;&lt;/p&gt;Mapping " &amp; "G:" &amp; pcstrC3Server &amp; pstrSpecialVolChar &amp; "RAFACSII$\"
	If fblnMapDriveAndFolder("G:", pcstrC3Server &amp; pstrSpecialVolChar &amp; "RAFACSII$", "") = False Then
		pstrFailed = pstrFailed &amp; "&lt;/p&gt;" &amp; "G:" &amp; pcstrC3Server &amp; pstrSpecialVolChar &amp; "RAFACSII$\  Has NOT been mapped"
	End If
	'Modeless oIE, "VSC Logon Script is running, please wait...&lt;/p&gt;&lt;/p&gt;Mapping " &amp; "H:" &amp; pcstrC3Server &amp; pstrSpecialVolChar &amp; "RAFACS$\"
	If fblnMapDriveAndFolder("H:", pcstrC3Server &amp; pstrSpecialVolChar &amp; "RAFACS$", "") = False Then
		pstrFailed = pstrFailed &amp; "&lt;/p&gt;" &amp; "H:" &amp; pcstrC3Server &amp; pstrSpecialVolChar &amp; "RAFACS$\  Has NOT been mapped"
	End If
	if InStr(pstrGroups, "VSC USERS - CIS") then
	'Modeless oIE, "VSC Logon Script is running, please wait...&lt;/p&gt;&lt;/p&gt;Mapping " &amp; "J:\\Z02RSCVSC04\NOVAShare\MIS\LOCAL"
	If fblnMapDriveAndFolder("J:", "\\Z02RSCVSC04\NOVAShare\MIS\LOCAL", "") = False Then
	   	pstrFailed = pstrFailed &amp; "&lt;/p&gt;" &amp; "J:" &amp; "\\Z02RSCVSC04\NOVAShare\MIS\LOCAL  Has NOT been mapped"
	   End If
	end if	
	'Modeless oIE, "VSC Logon Script is running, please wait...&lt;/p&gt;&lt;/p&gt;Mapping " &amp; "K:\\Z02APPVSC01\PUBARC\"
   q If fblnMapDriveAndFolder("K:", "\\Z02APPVSC01\PUBARC", "") = False Then
		pstrFailed = pstrFailed &amp; "&lt;/p&gt;" &amp; "K:" &amp; "\\Z02APPVSC01\PUBARC\  Has NOT been mapped"
	End If
	if InStr(pstrGroups, "VSC USERS - CIS") then
	'Modeless oIE, "VSC Logon Script is running, please wait...&lt;/p&gt;&lt;/p&gt;Mapping " &amp; "L:\\Z02RSCVSC04\APPLShare\"
	If fblnMapDriveAndFolder("L:", "\\Z02RSCVSC04\APPLShare\", "") = False Then
	   	pstrFailed = pstrFailed &amp; "&lt;/p&gt;" &amp; "L:" &amp; "\\Z02RSCVSC04\APPLShare\  Has NOT been mapped"
	   End If
	end if
'	if InStr(pstrGroups, "VSC C3 Service Accounts") then
'	Modeless oIE, "VSC Logon Script is running, please wait...&lt;/p&gt;&lt;/p&gt;Mapping " &amp; "L:\\Z02RSCVSC04\APPLShare\"
'	If fblnMapDriveAndFolder("L:", "\\Z02RSCVSC04\APPLShare\", "") = False Then
'		  pstrFailed = pstrFailed &amp; "&lt;/p&gt;" &amp; "L:" &amp; "\\Z02RSCVSC04\APPLShare\  Has NOT been mapped"
'	   End If
'	end if	
	'Modeless oIE, "VSC Logon Script is running, please wait...&lt;/p&gt;&lt;/p&gt;Mapping " &amp; "M:" &amp; pcstrC3Server &amp; pstrSpecialVolChar &amp; "IMROOT$\"
	If fblnMapDriveAndFolder("M:", pcstrC3Server &amp; pstrSpecialVolChar &amp; "IMROOT$", "") = False Then
		pstrFailed = pstrFailed &amp; "&lt;/p&gt;" &amp; "M:" &amp; pcstrC3Server &amp; pstrSpecialVolChar &amp; "IMROOT$\  Has NOT been mapped"
	End If
'
'Sets up mappings for Supervisory share - \\Z02RSCVSC04\MGMTShare - Added by Rene 12/19/2006
'
	if InStr(pstrGroups, "VSC _ADJUDICATIONS_MGMT_ZEN - CIS") then
	'Modeless oIE, "VSC Logon Script is running, please wait...&lt;/p&gt;&lt;/p&gt;Mapping " &amp; "N:\\Z02RSCVSC04\SUPVShare\"
	If fblnMapDriveAndFolder("N:", "\\Z02RSCVSC04\SUPVShare", "") = False Then
	   	pstrFailed = pstrFailed &amp; "&lt;/p&gt;" &amp; "N:" &amp; "\\Z02RSCVSC04\SUPVShare\  Has NOT been mapped"
	   End If
	end if
	if InStr(pstrGroups, "VSC _SIIO_ZEN - CIS") then
	'Modeless oIE, "VSC Logon Script is running, please wait...&lt;/p&gt;&lt;/p&gt;Mapping " &amp; "N:\\Z02RSCVSC04\SUPVShare\"
	If fblnMapDriveAndFolder("N:", "\\Z02RSCVSC04\SUPVShare", "") = False Then
	   	pstrFailed = pstrFailed &amp; "&lt;/p&gt;" &amp; "N:" &amp; "\\Z02RSCVSC04\SUPVShare\  Has NOT been mapped"
	   End If
	end if	
	if InStr(pstrGroups, "VSC _N_DRIVE - CIS") then
	'Modeless oIE, "VSC Logon Script is running, please wait...&lt;/p&gt;&lt;/p&gt;Mapping " &amp; "N:\\Z02RSCVSC04\SUPVShare\"
	If fblnMapDriveAndFolder("N:", "\\Z02RSCVSC04\SUPVShare", "") = False Then
	   	pstrFailed = pstrFailed &amp; "&lt;/p&gt;" &amp; "N:" &amp; "\\Z02RSCVSC04\SUPVShare\  Has NOT been mapped"
	   End If
	end if	
'
'End of Supervisory share mappings
'
	'Modeless oIE, "VSC Logon Script is running, please wait...&lt;/p&gt;&lt;/p&gt;Mapping " &amp; "Checking to see if using Citrix"
	if fblnCitrix = false then
	'Modeless oIE, "VSC Logon Script is running, please wait...&lt;/p&gt;&lt;/p&gt;Mapping P:\\Z02C4CVSC01\DocProd"
	If fblnMapDriveAndFolder("P:", "\\Z02C4CVSC01\DocProd", "") = False Then
	pstrFailed = pstrFailed &amp; "&lt;/p&gt;" &amp;  "P:\\Z02C4CVSC01\DocProd Has NOT been mapped"
	End If
	end if
	'Modeless oIE, "VSC Logon Script is running, please wait...&lt;/p&gt;&lt;/p&gt;Setting the PATH variable"
	if fblnSetUserEnvVar("PATH",pcstrPath,True) = false then
	pstrFailed = pstrFailed &amp; "&lt;/p&gt;" &amp; "Could not set the Path environment variable to: " &amp; "&lt;/p&gt;" &amp; pcstrPath
	end if

if pstrFailed &lt;&gt; "" then
	'Modeless oIE, " The following Errors Occured:" &amp; pstrFailed
	call pause(10) 'pause for 5 seconds
end if




'Determines whether the drive is already mapped
'   If it is mapped to the wrong location this function will map it to
'	   the correct one
'   else if drive doesn't exist then
'	   map it
' Yuppers Get 'R Done
Function fblnMapDriveAndFolder(strDriveLetter,strServerName, strPath)
	On Error resume next
	fblnMapDriveAndFolder = True
	Dim pobjFsys
	Set pobjFsys = CreateObject("Scripting.FileSystemObject")
	'correction for wrong slash
	strServerName = Replace(strServerName, "/", "\")
	strPath = Replace(strPath, "/", "\")
	'Below will put a "\\" on the front of the server name if it doesn't exist
	If Left(strServerName, 2) &lt;&gt; "\\" Then
		strServerName = "\\" &amp; strServerName
	End If
	'Below will put take the "\" off of the end of the server name if it exists
	If Right(strServerName, 1) = "\" Then
		strServerName = Left(strServerName, Len(strServerName) - 1)
	End If
	'Below will put a "\" on the front of the path name if it doesn't exist
	If Left(strPath, 1) &lt;&gt; "\" And strPath &lt;&gt; "" Then
		strPath = "\" &amp; strPath
	End If
	'Below will put a ":" on the end of the strDriveLetter if it doesn't exist
	If Right(strDriveLetter, 1) &lt;&gt; ":" Then
		strDriveLetter = Left(strDriveLetter, 1) &amp; ":"
	End If
	If pobjFsys.FolderExists(strServerName &amp; strPath) = False Then
		'Create the folder because it doesn't exist
		pobjFsys.CreateFolder strServerName &amp; strPath &amp; "\"
	End If
	'Check to see if the drive is already mapped
	If pobjFsys.DriveExists(strDriveLetter) = True Then
		'Check to see if the drive letter is mapped to the correct folder

		If pobjFsys.FolderExists(strDriveLetter &amp; strPath) = False Or strPath = "" Then 'The drive is mapped to the wrong location
			'Map over the existing drive with the correct path
			If fblnMapDrive(strDriveLetter, strServerName, strPath, True) = False Then
			   fblnMapDriveAndFolder = false
			End If
		End If
	Else 'The drive doesn't exist
		'Map the drive
		If fblnMapDrive(strDriveLetter, strServerName, strPath, False) = False Then
			fblnMapDriveAndFolder = false
		End If
	End If

	Set pobjFsys = Nothing
	If Err.Number &lt;&gt; 0 Then
	err.clear
		fblnMapDriveAndFolder = False
	End If
End Function

Function fblnMapDrive(strDriveLetter, strServer, strFolderPath, blnRemoveFirst)' As Boolean
	On Error resume next
	fblnMapDrive = True
	Dim objNetwork
' Purpose of script to create a network object. (objNetwork)
' Then to apply the MapNetworkDrive method. 
	Set objNetwork = CreateObject("WScript.Network")
	If blnRemoveFirst = True Then
		objNetwork.RemoveNetworkDrive strDriveLetter, True, True
	End If
		objNetwork.MapNetworkDrive strDriveLetter, strServer &amp; strFolderPath, True
	If Err.Number &lt;&gt; 0 Then
		fblnMapDrive = False
	End If
End Function

function fblnSetUserEnvVar(strVariable, strValue, blnConcat)
 on  Error resume next
   dim wshShell, pobjEnv
   fblnSetUserEnvVar = true
   set WshShell = CreateObject("WScript.Shell")
   Set pobjEnv = WshShell.Environment("User")
   if blnConcat = true then
	pobjEnv(strVariable) = pobjEnv(strVariable) &amp;  strValue
   else
	pobjEnv(strVariable) = strValue
   end if

   if err.number &lt;&gt; 0 then
	fblnSetUserEnvVar = false
	err.clear
   end if
end function

Function fblnCitrix()
	Dim strComputer
	Dim objWMIService
	Dim clSettings
	Dim objRecord
	fblnCitrix   = true
on error resume next
	strComputer = "."
	Set objWMIService = GetObject("winmgmts:" _
		&amp; "{impersonationLevel=impersonate}!\\" _
		&amp; strComputer &amp; "\root\cimv2")
	Set clSettings = objWMIService.ExecQuery("Select * from Win32_OperatingSystem")
	fblnCitrix   = false
	For Each objRecord In clSettings
	if objRecord.WindowsDirectory &lt;&gt; "" then
		if left(objRecord.WindowsDirectory,2) = "P:" then
			fblnCitrix  = true
			exit for
		end if
	end if


	Next
if err.number &lt;&gt; 0 then
	msgbox err.description, "fblnCitrix",vbcritical
end if	
	Set objWMIService = Nothing
	Set clSettings = Nothing
End Function

'This function will return the specified property
Function fstrGetUserProperty(strProperty)
	On Error resume next
	Dim pstrConnect, pstrVal

	Dim pobjUser 'As ActiveDs.IADsUser
	pstrConnect = fstrADSpath
	Set pobjUser = GetObject(pstrConnect)
	pstrVal = pobjUser.Get(strProperty)
	if isArray(pstrVal) = true then
	fstrGetUserProperty = join(pstrVal)
	else
	fstrGetUserProperty = pstrVal
	end if

	If Err.Number &lt;&gt; 0 Then
		MsgBox Err.Description, vbCritical
	End If
	Set pobjUser = Nothing
End Function

'Gets the local Active Directory information
' Used to obtain the string to connect the user's AD object
Function fstrADSpath() 'As String
	Dim pobjAdSysInfo 'As ActiveDs.ADSystemInfo
	'Set pobjAdSysInfo = New ActiveDs.ADSystemInfo
	Set pobjAdSysInfo = CreateObject("AdSystemInfo")
	fstrADSpath = "LDAP://" &amp; pobjAdSysInfo.UserName

	Set pobjAdSysInfo = Nothing
End Function

function fblnSetUserEnvVar(strVariable, strValue, blnConcat)
 on  Error resume next
   dim wshShell, pobjEnv
   fblnSetUserEnvVar = true
   set WshShell = CreateObject("WScript.Shell")
   Set pobjEnv = WshShell.Environment("User")
   if blnConcat = true then
	if instr(1,ucase(pobjEnv(strVariable)),ucase(strValue)) &lt;= 0 then
		pobjEnv(strVariable) = pobjEnv(strVariable) &amp;  strValue
	end if
   else
	pobjEnv(strVariable) = strValue
   end if

   if err.number &lt;&gt; 0 then
	fblnSetUserEnvVar = false
	err.clear
   end if
end function

'Close the Splash Screen
objExplorer.quit 

'******************************************************************************
'   This will pause the number of seconds passed to it
'******************************************************************************
Sub pause(seconds)
	Dim strTime 
	strTime = (second(Time) + seconds)
	If (strTime &gt;= 60) Then
		strTime = (strTime - 60)
	End If
	Do Until (strTime = (second(Time)))

	Loop
End Sub

REM 'Routine for Splash Screen
REM Sub modeless(oIE, sprompt)
REM with oIE 
	REM .fullscreen = True : .navigate "about:blank" 
  REM While .readystate &lt;&gt; 4 : wscript.sleep 100 : Wend 
  REM with .document 
	REM .write "&lt;table bgcolor=lightblue border=3 width=100% bordercolor=black cellspacing=6 cellpadding=6" &amp; _ 
	   REM "height=100%&gt;&lt;tr valign=middle&gt;&lt;td align=center&gt; " &amp; _
	   REM "&lt;caption align=center&gt;&lt;font size=20&gt;&lt;b&gt;&lt;i&gt; Mapping Network Drives.... &lt;/b&gt;&lt;/i&gt;&lt;/font&gt;&lt;/caption&gt; " &amp; _
	   REM "&lt;tr&gt; " &amp; _
	   REM "&lt;th&gt;&lt;font size=18 color=black&gt;&lt;u&gt;Network Drive:&lt;/u&gt;&lt;/font&gt;&lt;/th&gt; " &amp; _
	   REM "&lt;th&gt;&lt;font size=18 color=black&gt;&lt;u&gt;Connected:&lt;/u&gt;&lt;/font&gt;&lt;/th&gt; " &amp; _
	   REM "&lt;tr&gt; " &amp; _
	   REM "&lt;td align=left&gt;&lt;font size=10 color=black&gt;(G:) Rafacsii$ on 'Z02dbcvsc01'&lt;/font&gt;&lt;/td&gt; " &amp; _
		   REM "&lt;td align=center&gt;&lt;/td&gt; " &amp; _
	   REM "&lt;tr&gt; " &amp; _
	   REM "&lt;td align=left&gt;&lt;font size=10 color=black&gt;(H:) Rafacs$ on ' Z02dbcvsc01'&lt;/font&gt;&lt;/td&gt; " &amp; _
	   REM "&lt;td align=center&gt;&lt;/td&gt; " &amp; _
	   REM "&lt;tr&gt; " &amp; _
	   REM "&lt;td align=left&gt;&lt;font size=10 color=black&gt;(I:) User on 'Z02rscvsc07\User Share' &lt;/font&gt;&lt;/td&gt; " &amp; _
	   REM "&lt;td align=center&gt;&lt;/td&gt; " &amp; _
	   REM "&lt;tr&gt; " &amp; _
	   REM "&lt;td align=left&gt;&lt;font size=10 color=black&gt;(J:) Local on 'Z02rscvsc07\NOVAShare\Mis' &lt;/font&gt;&lt;/td&gt; " &amp; _
	   REM "&lt;td align=center&gt;&lt;/td&gt; " &amp; _
	   REM "&lt;tr&gt; " &amp; _
	   REM "&lt;td align=left&gt;&lt;font size=10 color=black&gt;(K:) Pubarc on 'Z02rscvsc07' &lt;/font&gt;&lt;/td&gt; " &amp; _
	   REM "&lt;td align=center&gt;&lt;/td&gt; " &amp; _
	   REM "&lt;tr&gt; " &amp; _
	   REM "&lt;td align=left&gt;&lt;font size=10 color=black&gt;(L:) APPLShare on 'Z02rscvsc07' &lt;/font&gt;&lt;/td&gt; " &amp; _
	   REM "&lt;td align=center&gt;&lt;/td&gt; " &amp; _
	   REM "&lt;tr&gt; " &amp; _
	   REM "&lt;td align=left&gt;&lt;font size=10 color=black&gt;(M:) Imroot$ on 'Z02dbcvsc01' &lt;/font&gt;&lt;/td&gt; " &amp; _
	   REM "&lt;td align=center&gt;&lt;/td&gt; " &amp; _
	   REM "&lt;tr&gt; " &amp; _
	   REM "&lt;td align=left&gt;&lt;font size=10 color=black&gt;(O:) itsopshre on 'Z02rscvsc07' &lt;/font&gt;&lt;/td&gt; " &amp; _
	   REM "&lt;td align=center&gt;&lt;/td&gt; " &amp; _
	   REM "&lt;tr&gt; " &amp; _
	   REM "&lt;td align=Left&gt;&lt;font size=10 color=black&gt;(P:) DocProd on 'Z02c4cvsc01' &lt;/font&gt;&lt;/td&gt; " &amp; _
	   REM "&lt;td align=center&gt;&lt;/td&gt; " &amp; _
	   REM "&lt;tr&gt; " &amp; _
	   REM "&lt;td align=Left&gt;&lt;font size=10 color=black&gt;(Q:) PrintShare on 'Z02TBCVSC02(Z02tbcvsc02)' &lt;/font&gt;&lt;/td&gt; " &amp; _
	   REM "&lt;td align=center&gt;&lt;/td&gt; " &amp; _
	   REM "&lt;tr&gt; " &amp; _
	   REM "&lt;/font&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;" 
	REM .title = "MESSAGE: _________________________________" 
	 REM 'With .ParentWindow 
	REM '  .resizeto 350,100 1
	REM '  .moveto (.screen.width - 400)\2, (.screen.height - 100)\2 
	REM 'End With 
	REM With .body.style
	  REM .borderStyle = "outset" 
	  REM .borderWidth = "4px" 
	REM End With 
	REM .bgcolor = "white"
	REM .body.scroll = "NO" 
  REM End With 
  REM .visible = true 
REM End with 
REM End Sub

0 answers to this question

Recommended Posts

There have been no answers to this question yet

This topic is now closed to further replies.
  • Recently Browsing   0 members

    • No registered users viewing this page.
  • Posts

    • Beelink SEi13 Pro review: Awesome 13th-gen i9 performance for under $540 by Steven Parker Beelink is back with another Mini PC, this time it is the SEi13 Pro, which includes an Intel i9-13900HK that came out in Q2 2023 with a base clock of 4.1 GHz, a Turbo Boost of 5.4 GHz, and a default TDP of 45W that can boost up to 115W; here though it is limited to a boost of 65W. Below are its full specifications. Beelink SEi13 Pro Dimensions 158 x 158 x 55.8mm Weight 796g CPU TDP Intel Core i9-13900HK (Base 4.1GHz, Turbo 5.4GHz 14C, 20T, 24MB L3 Cache) Min: 35W Base: 45W Turbo: 115W (65W) Graphics Intel Iris® Xe Graphics eligible (96 EUs @ 1500MHz) NPU No Memory 32GB Dual SO-DIMM LPDDR5 6000MHz (Soldered) Storage Dual M.2 2280 PCle4.0 X4 (Crucial P3 Plus 1TB) PCIe Expansion No Ethernet 2.5GbE (Intel I226-V) Bluetooth Bluetooth v5.2 Wireless LAN Wi-Fi 6 (Intel AX200) 2.4Gbps Kensington Lock No SD Card reader No Power Input Output Input: 100-240V AC, 50/60Hz 19V 5.26A Front I/O Ports Power Button CLR CMOS pinhole 1 x 3.5mm Audio jack 1 x USB 3.2 Gen 2 Type-C (10 Gbps Data) 1 x USB 3.2 Gen 2 Type-A (10 Gbps) Rear I/O Ports 2 x USB 3.2 Gen 2 Type-A (10 Gbps) 1 x 2.5G RJ45 LAN + WOL 1 x DisplayPort 1.4a 1 x USB 2.0 Type A 1 x HDMI 2.0b 1 x 3.5mm Audio jack 1 x USB 3.2 Gen 2 Type-C (10 Gbps Data & Video) 1 x AC in Audio Built-in Speakers, Built-in MIC Colors Space Gray, Frost Silver OS Windows 11 Pro 24H2 Price (MSRP) $639 ($524 discount price) Bold denotes our configuration. The SEi13 Pro comes in just one configuration and two colors: Space Gray or Frost Silver, the latter of which we were sent. A Windows 11 Pro license is also preloaded. What's in the box SEi13 Pro 13900HK HDMI cable Power adapter User manual We'll come back to the Docking station, because although they sent it to me, it is an optional purchase, and I am sure readers would like to know what they are getting if they just purchase the SEi13 Pro by itself. The packaging is a familiar affair for a Mini PC. The box is completely white, aside from some decals of the Mini PC and branding. Upon removing the outer cardboard sleeve and opening the box, you will find the SEi13 Pro sitting in a cardboard mold above a Hello card and booklet that has guidance on controls, how to access it to swap out the SSD or memory, and safety information in several European languages, along with an HDMI lead and a power cable. What’s In The Box 1 x SEi13 Pro Mini PC 1 x Power Adapter 1 x HDMI Cable 1 x User manual The SEi13 Pro does not come with a VESA mount option, which is a shame. However, you do have everything you need to get going. Design The exterior looks like a smaller variant of the GEEKOM SEi13 Pro that we reviewed last year, in the sense that it is made from one piece of aluminum alloy. It essentially encases the entire PC so that there is no detachable lid. The top is completely flat, with the Beelink logo painted in black and centered on the top of the Mini PC. All of the edges are rounded off, so there are no sharp edges, and it definitely has a premium feel to it. At almost 1.3kg it's not exactly light, but for very good reason. This Mini PC is supposed to let you do some gaming on it, so the larger case needs to be able to dock using its internal full 1x PCIe X8 slot, which we'll come to in a bit. The front of the SEi13 Pro includes an audio jack, and two USB 3.2 Gen 2 ports, one Type A, the other Type C, unfortunately it's not possible to connect a screen on the front, which is a bit of an inconvenience. What looks like four holes across the top of the front is what Beelink calls a "360° omnidirectional" mic array; there's no button to deactivate it, though, which might be a bit of a privacy concern. Unlike with the GTi13 Ultra, the power button here does not incorporate a fingerprint sensor. Beelink claims that the SEi13 Pro is quiet too, with a measured 32dB in their lab when operated with a 65W TDP, which is slightly more than the base 45W, and could be considered under some load. In my testing, I could not hear it at all, even when running the benchmarks. Beelink uses the MCS 2.0 Cooling System, which accounts for the low noise levels, and makes the following claim on its product page: I can confirm the SEi13 Pro generally did not get hot to the touch beyond a bit of warmth on the top of the Mini PC during the Cinebench 2024 test, and barely made any noise that I could hear. As far as looks go, it is a completely silver/gray, and thanks to the shell being made from one piece of aluminum, there are no joints to be seen on the sides or up top where you would normally find a "lid" that can be removed to access the internals. It goes without saying that thanks to the aluminum finish, it isn't a fingerprint magnet. The top Beelink logo is a nice touch, too; it looks and feels like premium hardware. Teardown This is where things get interesting. To access, you first have to remove the four rubber covers, which are weakly glued in and indented; a small flat-head screwdriver or Stanley knife is enough for the job. Then you can remove four tiny screws and lift off the plastic back plate. Next, remove two more tiny screws to remove the dust cover. The speaker module is fastened to the dust cover, so you could also remove it with the four screws, but the ribbon cable is long enough to set it to the side (as you can see in the above image). Next, remove two screws to release and remove the SSD heat sink. This is also taped in, so you can just leave it hanging to the side to manage the SSD. In the User Guide, there is only one instruction about removing two screws to remove the heat sink. There is no instruction on how to remove the back plate or dust cover, which is a bit weird; you are left to figure it out yourself. As was the case with the GTi13 Ultra, this thing isn't built for simple access, although I have to admit it was slightly easier with fewer screws and one less bolt! Even though it is suggested to "PLEASE DUST REGULARLY", I would not want to be removing and attaching that plate continuously, also because the screws are so small (M.2-like), it doesn't take much to damage the thread. So yes, it is possible to add an additional SSD (2280 M.2) inside the SEi13 Pro. However, it is not possible to expand the memory, because it's soldered in. Usage BIOS The SEi13 Pro uses an AMIBIOS, which is similar to what HP, Dell and other PC manufacturers use to lock down customization of the machine's values, like CPU or memory over/underclocking, as well as power management. However, the BIOS here is not locked down, and you can configure it to your heart's content. WINDOWS On first boot, you are prompted to complete the setup of Windows 11 Pro, meaning you do not have to fork out for a license. After completing setup and updates, I discovered I was on build 26100.4652, which included the July 2025 Patch Tuesday update (KB5062553). In addition, Beelink does not contain any bloatware on its PCs, so that is always a bonus. The SEi13 Pro supports up to three screens natively through the single Type C USB 3.2 rear port (supporting Data & Video), along with one full DisplayPort 1.4a (4K @ 144Hz), and an HDMI 2.0b port. However, the front Type-C port is USB 3.2 gen 2 (10 Gbps) with no DP support. Regarding connectivity, from left to right, there's an AC in, Thunderbolt 4 port above an audio jack, an HDMI 2.0b, above a DisplayPort, next to that dual Type A USB 3.2 Gen 2 above 2.5GbE ports, and a further two Type A USB 3.2 Gen 2 on the right side. Around the front, there a Type A USB 3.2 Gen 2 port, SD Card slot, Type C USB 3.2 Gen 2 port, a port for a 3.5mm headphone jack, power light indicator, and power button that doubles as a fingerprint reader. I linked my Edifier 360DB over Bluetooth, and I did not experience any noticeable audio delays. As you can see from the above images, there's no Kensington lock option here, which is a shame. The entire top and sides are one piece of aluminum with ample venting on the sides for air cooling. In regard to the SEi13 Pro's size, the above images should show a bit more clearly how it sort of sits in the middle between the quite large GTi13 Ultra, and smaller GEEKOM IT13 (2025), despite being powered by the same Intel i9-13900HK CPU. The smaller GEEKOM build results in some higher CPU temperatures under load, of which the Beelink builds have absolutely no issue with. Benchmarks With that out of the way, and because people like that sort of thing, I ran some benchmarks and compared to Mini PCs with the same exact CPU (but all have different memory configurations). The latest Intel Graphics driver (32.0.101.6913) was installed. For the benchmarks, I used Cinebench 2024, 7-Zip, AS SSD, and CrystalDiskMark. 3DMark, PCMark 10, and Procyon (Windows ML for CPU and GPU) were provided to Neowin by UL Solutions; Primate Labs Inc. provided us with a commercial version of Geekbench 6. I skipped using Geekbench AI here because the SEi13 Pro does not contain an NPU, nor do the comparison Mini PCs. 3DMark Time Spy tests gaming capability with DX12 graphics performance. PCMark tests are a mix of CPU and real-world productivity tests, such as using an office suite, web browsing, light photo/video editing, and making conference calls. Cinebench stresses the entire CPU as it is a multi-threaded rendering test. Geekbench is a synthetic benchmark that is great for a quick look at the potential performance across a wide range of workloads. I also used HWiNFO to monitor hardware sensors and temperature readings. Beelink SEi13 Pro Intel i9-13900HK Beelink GTi13 Ultra Intel i9-13900HK Geekom IT13 (2025) Intel i9-13900HK 3DMark: Time Spy Steel Nomad Light Steel Nomad 1,362 846 125 2,148 1,437 207 1,727 1,200 173 PCMark 10: Standard Extended test 5,414 4,637 6,034 5,912 5,749 5,357 Procyon: Windows ML CPU Windows ML GPU 85 77 111 179 76 95 Geekbench 6: Single Multicore Compute (OpenCL) 2,165 7,181 12,617 2,417 13,307 17,409 2,427 10,215 15,200 Cinebench 2024: Single Multicore 97 782 104 977 102 699 7-Zip 66,457 100,122 79,066 Geekom IT13 (2025) has DDR4 memory. The highest temperature recorded during benchmarking was in Time Spy at 58C; here we can see the much more effective cooling with the larger case compared to the GEEKOM SEi13 (with i9-13900H), which reached 87.7C, thanks to its far smaller aluminum case. I ran the Time Spy test three times and recorded the highest score, which surprised me because it is lower than the other two Mini PCs with the same CPU. While Procyon WindowsML (CPU) did better than the GEEKOM build, this was the only score that bettered any of the other two. We aren't exactly sure why this mini PC performed lower with a better setup of LPDDR5 6000 MT/s. My contact suggested I lower the frequency, but that just resulted in even lower overall scores. However, as you might see from these scores, don't think you can replace your gaming desktop with this configuration; you'd still need a dedicated GPU if you intended to do much of any gaming on it, which is where the dock that we later test can come in. Browser High Low Chrome 27.5 27.0 Edge 25.7 24.0 Firefox 23.3 23.0 Next up, I tested browsing performance using Speedometer 3.0. Speedometer provides a value and also a range showing the highest and lowest scores after three runs, as indicated in the chart above by the two scores for each browser. It's clear to see that Chrome bested its rivals by almost 2 points on the high and 3 on the low. This was actually better than the GTi13 Ultra by some margin (4.5 on the low and whopping 5.3 on the high). I also tested the SSD's capability using AS SSD and CrystalDiskMark 8.0.6. AS SSD CrystalDiskMark The Crucial P3 Plus performs well within its rated speeds here, and despite running all of the above benchmark tests, the SEi13 Pro did not even get warm, and no annoying noises were coming from the single fan that cooled the unit. Conclusion My experience had mixed results. I was unsure why a better memory configuration performed worse for this PC. I tried turning off Core Isolation, but that did not affect the score at all. I also tried 5600 and 5200 MT/s configurations in the BIOS, but that just lowered the scores even further. For me, this still loses a point for the awkward way you have to access the SEi13 Pro, with no documentation on hand to accomplish it, but it ticks the boxes in other areas. Type-C and Type-A ports on the front. You can connect three screens with the included full-sized HDMI and DisplayPort, along with the rear USB Type-C 3.2 port, which supports DisplayPort. Which brings us to the next complaint I have, for which it also loses a point: no USB4 (or Thunderbolt), and the rear USB ports do not have a colored visual indicator if they are Gen 3.0 or 2.0. Although I suppose you could get used to the fact that the USB 2.0 port is under the HDMI port. These decisions most likely contributed to keeping its price down, because at under $550, I reckon it still gets a pass. It may not be perfect, but it's definitely a great choice for a small business office environment and any other situation where gaming is not important. The Beelink SEi13 Pro is available right now for $539 on the official website or for $539 on Amazon, which is 16% off its MSRP. Although this Mini PC has a 13th-gen Intel mobile CPU, I still feel like the deal price is right for what you get: a sturdy, powerful, and well-built mini PC. As an Amazon Associate, I earn from qualifying purchases.
    • Tbf I had no idea this app existed so would've never read the article if it used its actual name
    • Was shopping at GFS and saw this product. Man they are shoving Copilot into everything now.
    • You like to lie a lot to make your point valid? 35 million apps? Really? All run currently on Windows 11? Your whole post is full of holes it doesn’t speak any truth. It proves you’re scared of Linux creeping up on Windows that you have to lie. Wow. 🤷🏻‍♂️
    • Not really. If you are someone impacted by this article, then (like I said before) for whatever reason, you want to stay on a specific version of software and not update. A rolling release would be terrible for someone like that.
  • Recent Achievements

    • Week One Done
      Stephen Leibowitz earned a badge
      Week One Done
    • Week One Done
      Homayoun Hotak earned a badge
      Week One Done
    • Dedicated
      Profit earned a badge
      Dedicated
    • One Month Later
      hhgygy earned a badge
      One Month Later
    • Week One Done
      hhgygy earned a badge
      Week One Done
  • Popular Contributors

    1. 1
      +primortal
      640
    2. 2
      ATLien_0
      240
    3. 3
      Xenon
      170
    4. 4
      neufuse
      153
    5. 5
      +FloatingFatMan
      124
  • Tell a friend

    Love Neowin? Tell a friend!