Discussion:
Get computer name as variable to use in vbs script.
(too old to reply)
spacemancw
2009-04-28 12:08:09 UTC
Permalink
I have the following script below. I didn't write it. It finds Storage
groups, mail and public stores and paths on exchange 2003.
But it starts with a dialog box asking the user for tha name of the
server.
I want to have it run automatically unattended.
I want to get rid of the first two lines and define 'strServer' as a
variable that the script can find no matter what the name of the
server I put it on.

For example:

strServer=getTheNameOfThisServer.

So that I can use strServer later on in the script. How do I do that?
Thanks

===========================

strTitle="Mailbox Storage DB Report"
strServer=InputBox("What is the name of the Exchange
Server?",strTitle,"TANK")




SGReport strServer
WScript.Quit

Sub SGReport(strServer)
Dim iServer
Dim iSGs
Dim iMBS

Set iServer=CreateObject("CDOEXM.ExchangeServer")
Set iSGs=CreateObject("CDOEXM.StorageGroup")
Set iMBs=CreateObject("CDOEXM.MailboxStoreDB")
Set iMPs=CreateObject("CDOEXM.PublicStoreDB")
iServer.DataSource.Open strServer

On Error Resume Next

arrSGs=iServer.StorageGroups

For i=0 To UBound(arrSGs)
strSGUrl=arrSGs(i)
'WScript.Echo strSGUrl
iSGs.DataSource.Open "LDAP://" & iServer.DirectoryServer &
"/" & strSGUrl
strData=strData & iSGs.Name & vbcrlf
strData=strData & " LogPath: " &iSGs.LogFilePath & VBCRLF
strData=strData & " SysPath: " & iSGs.SystemFilePath &
VBCRLF & VBCRLF

arrPFStores=iSGs.PublicStoreDBs
For j=0 To UBound(arrPFStores)
iMPS.DataSource.open "LDAP://" & arrPFStores
(j)
strData=strData & " " & iMPS.Name& vbTab & " Path:" &
iMPS.DBPath&vbcrlf

next

Next





For k=0 To UBound(arrSGs)
strSGUrl=arrSGs(k)
'WScript.Echo strSGUrl
iSGs.DataSource.Open "LDAP://" & iServer.DirectoryServer &
"/" & strSGUrl
strData=strData & iSGs.Name & vbcrlf
strData=strData & " LogPath: " &iSGs.LogFilePath & VBCRLF
strData=strData & " SysPath: " & iSGs.SystemFilePath &
VBCRLF & VBCRLF



arrMBStores=iSGs.MailboxStoreDBs
For m=0 To UBound(arrMBStores)
iMBS.DataSource.open "LDAP://" & arrMBStores
(m)
strData=strData & " " & iMBS.Name& vbTab & "
Path:" & iMBS.DBPath&vbcrlf




Next


Next

WScript.Echo strData

End sub


===========================
Pegasus [MVP]
2009-04-28 12:28:45 UTC
Permalink
Post by spacemancw
I have the following script below. I didn't write it. It finds Storage
groups, mail and public stores and paths on exchange 2003.
But it starts with a dialog box asking the user for tha name of the
server.
I want to have it run automatically unattended.
I want to get rid of the first two lines and define 'strServer' as a
variable that the script can find no matter what the name of the
server I put it on.
strServer=getTheNameOfThisServer.
So that I can use strServer later on in the script. How do I do that?
Thanks
===========================
strTitle="Mailbox Storage DB Report"
strServer=InputBox("What is the name of the Exchange
Server?",strTitle,"TANK")
SGReport strServer
WScript.Quit
Sub SGReport(strServer)
Dim iServer
Dim iSGs
Dim iMBS
Set iServer=CreateObject("CDOEXM.ExchangeServer")
Set iSGs=CreateObject("CDOEXM.StorageGroup")
Set iMBs=CreateObject("CDOEXM.MailboxStoreDB")
Set iMPs=CreateObject("CDOEXM.PublicStoreDB")
iServer.DataSource.Open strServer
On Error Resume Next
arrSGs=iServer.StorageGroups
For i=0 To UBound(arrSGs)
strSGUrl=arrSGs(i)
'WScript.Echo strSGUrl
iSGs.DataSource.Open "LDAP://" & iServer.DirectoryServer &
"/" & strSGUrl
strData=strData & iSGs.Name & vbcrlf
strData=strData & " LogPath: " &iSGs.LogFilePath & VBCRLF
strData=strData & " SysPath: " & iSGs.SystemFilePath &
VBCRLF & VBCRLF
arrPFStores=iSGs.PublicStoreDBs
For j=0 To UBound(arrPFStores)
iMPS.DataSource.open "LDAP://" & arrPFStores
(j)
strData=strData & " " & iMPS.Name& vbTab & " Path:" &
iMPS.DBPath&vbcrlf
next
Next
For k=0 To UBound(arrSGs)
strSGUrl=arrSGs(k)
'WScript.Echo strSGUrl
iSGs.DataSource.Open "LDAP://" & iServer.DirectoryServer &
"/" & strSGUrl
strData=strData & iSGs.Name & vbcrlf
strData=strData & " LogPath: " &iSGs.LogFilePath & VBCRLF
strData=strData & " SysPath: " & iSGs.SystemFilePath &
VBCRLF & VBCRLF
arrMBStores=iSGs.MailboxStoreDBs
For m=0 To UBound(arrMBStores)
iMBS.DataSource.open "LDAP://" & arrMBStores
(m)
strData=strData & " " & iMBS.Name& vbTab & "
Path:" & iMBS.DBPath&vbcrlf
Next
Next
WScript.Echo strData
End sub
===========================
Have a look at the wsshell.ExpandEnvironmentStrings method of the
WScript.Shell object. There is a complete example in the downloadable help
file script56.chm. The computer name is available as %ComputerName%.
Alternatively you'll find the computer name under the Wscript.Network
object.
spacemancw
2009-04-28 19:18:39 UTC
Permalink
Post by Pegasus [MVP]
Post by spacemancw
I have the following script below. I didn't write it. It finds Storage
groups, mail and public stores and paths on exchange 2003.
But it starts with a dialog box asking the user for tha name of the
server.
I want to have it run automatically unattended.
I want to get rid of the first two lines and define 'strServer' as a
variable that the script can find no matter what the name of the
server I put it on.
strServer=getTheNameOfThisServer.
So that I can use strServer later on in the script. How do I do that?
Thanks
===========================
strTitle="Mailbox Storage DB Report"
strServer=InputBox("What is the name of the Exchange
Server?",strTitle,"TANK")
SGReport strServer
WScript.Quit
Sub SGReport(strServer)
Dim iServer
Dim iSGs
Dim iMBS
Set iServer=CreateObject("CDOEXM.ExchangeServer")
Set iSGs=CreateObject("CDOEXM.StorageGroup")
Set iMBs=CreateObject("CDOEXM.MailboxStoreDB")
Set iMPs=CreateObject("CDOEXM.PublicStoreDB")
iServer.DataSource.Open strServer
On Error Resume Next
arrSGs=iServer.StorageGroups
For i=0 To UBound(arrSGs)
           strSGUrl=arrSGs(i)
           'WScript.Echo strSGUrl
           iSGs.DataSource.Open "LDAP://" & iServer.DirectoryServer &
"/" & strSGUrl
           strData=strData & iSGs.Name & vbcrlf
           strData=strData & " LogPath: " &iSGs.LogFilePath & VBCRLF
           strData=strData & " SysPath: " & iSGs.SystemFilePath &
VBCRLF & VBCRLF
           arrPFStores=iSGs.PublicStoreDBs
           For j=0 To UBound(arrPFStores)
                       iMPS.DataSource.open "LDAP://" & arrPFStores
(j)
strData=strData & "  " & iMPS.Name& vbTab & " Path:" &
iMPS.DBPath&vbcrlf
     next
Next
For k=0 To UBound(arrSGs)
           strSGUrl=arrSGs(k)
           'WScript.Echo strSGUrl
           iSGs.DataSource.Open "LDAP://" & iServer.DirectoryServer &
"/" & strSGUrl
           strData=strData & iSGs.Name & vbcrlf
           strData=strData & " LogPath: " &iSGs.LogFilePath & VBCRLF
           strData=strData & " SysPath: " & iSGs.SystemFilePath &
VBCRLF & VBCRLF
           arrMBStores=iSGs.MailboxStoreDBs
           For m=0 To UBound(arrMBStores)
                       iMBS.DataSource.open "LDAP://" & arrMBStores
(m)
                       strData=strData & "  " & iMBS.Name& vbTab & "
Path:" & iMBS.DBPath&vbcrlf
           Next
Next
WScript.Echo strData
End sub
===========================
Have a look at the wsshell.ExpandEnvironmentStrings method of the
WScript.Shell object. There is a complete example in the downloadable help
file script56.chm. The computer name is available as %ComputerName%.
Alternatively you'll find the computer name under the Wscript.Network
object.- Hide quoted text -
- Show quoted text -
Thanks

I added this to the top of the script

Set wshShell = Wscript.CreateObject( "Wscript.Shell" )
WScript.Echo "HOSTNAME: " & wshShell.ExpandEnvironmentStrings
( "%COMPUTERNAME%" )
WScript.Echo "DOMAIN : " & wshShell.ExpandEnvironmentStrings
( "%USERDOMAIN%" )
WScript.Echo ""


strServer=wshShell.ExpandEnvironmentStrings( "%COMPUTERNAME%" )
Pegasus [MVP]
2009-04-28 19:55:47 UTC
Permalink
"spacemancw" <***@yahoo.com> wrote in message
news:312b8613-6406-419f-8c0a-Thanks

I added this to the top of the script

Set wshShell = Wscript.CreateObject( "Wscript.Shell" )
WScript.Echo "HOSTNAME: " & wshShell.ExpandEnvironmentStrings
( "%COMPUTERNAME%" )
WScript.Echo "DOMAIN : " & wshShell.ExpandEnvironmentStrings
( "%USERDOMAIN%" )
WScript.Echo ""

strServer=wshShell.ExpandEnvironmentStrings( "%COMPUTERNAME%" )

============

Thanks for the feedback. Note that the following will work too:

wscript.echo wshShell.ExpandEnvironmentStrings("User=%UserName%,
PC=%COMPUTERNAME%" )
T Lavedas
2009-04-28 20:46:53 UTC
Permalink
Post by spacemancw
Post by Pegasus [MVP]
Post by spacemancw
I have the following script below. I didn't write it. It finds Storage
groups, mail and public stores and paths on exchange 2003.
But it starts with a dialog box asking the user for tha name of the
server.
I want to have it run automatically unattended.
I want to get rid of the first two lines and define 'strServer' as a
variable that the script can find no matter what the name of the
server I put it on.
strServer=getTheNameOfThisServer.
So that I can use strServer later on in the script. How do I do that?
Thanks
===========================
strTitle="Mailbox Storage DB Report"
strServer=InputBox("What is the name of the Exchange
Server?",strTitle,"TANK")
SGReport strServer
WScript.Quit
Sub SGReport(strServer)
Dim iServer
Dim iSGs
Dim iMBS
Set iServer=CreateObject("CDOEXM.ExchangeServer")
Set iSGs=CreateObject("CDOEXM.StorageGroup")
Set iMBs=CreateObject("CDOEXM.MailboxStoreDB")
Set iMPs=CreateObject("CDOEXM.PublicStoreDB")
iServer.DataSource.Open strServer
On Error Resume Next
arrSGs=iServer.StorageGroups
For i=0 To UBound(arrSGs)
           strSGUrl=arrSGs(i)
           'WScript.Echo strSGUrl
           iSGs.DataSource.Open "LDAP://" & iServer.DirectoryServer &
"/" & strSGUrl
           strData=strData & iSGs.Name & vbcrlf
           strData=strData & " LogPath: " &iSGs.LogFilePath & VBCRLF
           strData=strData & " SysPath: " & iSGs.SystemFilePath &
VBCRLF & VBCRLF
           arrPFStores=iSGs.PublicStoreDBs
           For j=0 To UBound(arrPFStores)
                       iMPS.DataSource.open "LDAP://" & arrPFStores
(j)
strData=strData & "  " & iMPS.Name& vbTab & " Path:" &
iMPS.DBPath&vbcrlf
     next
Next
For k=0 To UBound(arrSGs)
           strSGUrl=arrSGs(k)
           'WScript.Echo strSGUrl
           iSGs.DataSource.Open "LDAP://" & iServer.DirectoryServer &
"/" & strSGUrl
           strData=strData & iSGs.Name & vbcrlf
           strData=strData & " LogPath: " &iSGs.LogFilePath & VBCRLF
           strData=strData & " SysPath: " & iSGs.SystemFilePath &
VBCRLF & VBCRLF
           arrMBStores=iSGs.MailboxStoreDBs
           For m=0 To UBound(arrMBStores)
                       iMBS.DataSource.open "LDAP://" & arrMBStores
(m)
                       strData=strData & "  " & iMBS.Name& vbTab & "
Path:" & iMBS.DBPath&vbcrlf
           Next
Next
WScript.Echo strData
End sub
===========================
Have a look at the wsshell.ExpandEnvironmentStrings method of the
WScript.Shell object. There is a complete example in the downloadable help
file script56.chm. The computer name is available as %ComputerName%.
Alternatively you'll find the computer name under the Wscript.Network
object.- Hide quoted text -
- Show quoted text -
Thanks
I added this to the top of the script
Set wshShell = Wscript.CreateObject( "Wscript.Shell" )
WScript.Echo "HOSTNAME: " & wshShell.ExpandEnvironmentStrings
( "%COMPUTERNAME%" )
WScript.Echo "DOMAIN  : " & wshShell.ExpandEnvironmentStrings
( "%USERDOMAIN%" )
WScript.Echo ""
strServer=wshShell.ExpandEnvironmentStrings( "%COMPUTERNAME%" )
There is also the WSHNetwork object ...

Set WshNetwork = CreateObject("WScript.Network")
WScript.Echo "Domain = " & WshNetwork.UserDomain
WScript.Echo "Computer Name = " & WshNetwork.ComputerName
WScript.Echo "User Name = " & WshNetwork.UserName

Tom Lavedas
***********
http://there.is.no.more/tglbatch/
Tom Lavedas
2010-02-05 13:35:22 UTC
Permalink
Once you capture the name of the computer using any of the forementioned
methods, how do you read the first 3 characters of the name?
For example, I have a script that I want to run on specific clients.
The hostname on those clients start with the city of where they are
located.
L-A-pcname
S-F-pcname
N-Y-pcname
I am looking to not only capture the name but do an if else statement
so that it reads the first 3 characters of the hostname and based on the
city let it install what is needed.
In this case I want L-A-pcname so I am thinking
IF %computername% ISEQUAL "L-A"
continue with script
ELSE
GOTOEND
--
El-Uapo
------------------------------------------------------------------------
El-Uapo's Profile:http://forums.techarena.in/members/179525.htm
View this thread:http://forums.techarena.in/server-scripting/1169892.htm
http://forums.techarena.in
IF /i "%computername:~0,3%"=="L-A" got :Continue
goto :EOF
:Continue
_____________________
Tom Lavedas

Loading...