myITforum.com Community Forum myITforum.com Community Forum

Home  Forums  Blogs  Live Support chat  Search Articles  Wiki  FAQ  Email Lists  Register  Login  My Profile  Inbox  Address Book  My Subscription  My Forums 

Photo Gallery  Member List  Search  Calendars  FAQ  Ticket List  Log Out

All Forums RSS Feed Subscription:


  


script that exports and imports folder structure in SMS 2003

 
View related threads: (in this forum | in all forums)

Logged in as: Guest
  Printable Version
All Forums >> [Scripting Technologies] >> VB Script >> script that exports and imports folder structure in SMS 2003 Page: [1]
Login
Message << Older Topic   Newer Topic >>
script that exports and imports folder structure in SMS... - 11/19/2008 1:13:11 AM   
avolkov173

 

Posts: 5
Score: 0
Joined: 10/7/2008
Status: offline
Can anybody help with below script?
This script should export folder structure to txt file, file does get greated but it's empty.

Option Explicit

Const Forreading = 1
Const ForWriting = 2

Dim objSwbemLocator
Dim objSWbemServices
Dim ProviderLoc
Dim Location
Dim ConversionArray(20000),importarraynodeid,importarrayobjecttype,importarrayname,importarrayparentnodeid

'Main
If WScript.Arguments.Count <> 2 Then
  WScript.Echo("No arguments found, please provide an operation and a filename to use.")
  Wscript.echo
  Wscript.echo("USAGE: Cscript smscontainers.vbs operation filename")
  Wscript.echo
  Wscript.echo("    operation: This can be either import or export")
  Wscript.echo("    Filename:  The file will be created in the current directory")
  Wscript.echo
  Wscript.echo("    eg: Cscript smscontainers.vbs export S01Folders.txt")
  Wscript.quit(2)
End If
ConnectSms()

Select case Wscript.arguments.item(0)
Case "import":
   Importcontainers(Wscript.arguments.item(1))
Case "export":
   Exportcontainers(Wscript.arguments.item(1))
case else:
   Wscript.echo("Invalid operation please use import or export as operation in lowercase")
End Select

'Functions
Sub ImportContainers(ImportFile)
Dim objFSO,objfile
Dim colobjectcontainernode,container
Dim a,strnextline,i,j,k
Set objFSO = CreateObject("Scripting.FileSystemObject")

'Initialize conversionarray
For j = 0 to cint(findhighestcontainernodeid(Wscript.arguments.item(1)))
   conversionarray(j) = 0
Next

ReadImportfiletoArray(importfile) '<----- Read IMPORT FILE
Do Until importarraynodeid.count = 0
     i = 0
     Do while i <= importarraynodeid.count - 1
       k = importarrayparentnodeid(i)
       WScript.Echo importarraynodeid.count & " importarraynodeid: " & importarraynodeid(i) & " arrayparentnodeid " & importarrayparentnodeid(i) & " " & ConversionArray(k+1)
       If (cint(importarrayparentnodeid(i)) = 0) Or (cint(conversionarray(k+1)) <> 0) Then
          CreateFolder importarraynodeid(i),importarrayobjecttype(i),importarrayname(i),importarrayparentnodeid(i),i '<-----Create Foldersb
          i = i - 1
       End If 
       i = i + 1
     Loop
     exportconversionarray()
Loop
End Sub

Sub ExportContainers(ExportFile)
Dim objFSO,objfile
Dim colobjectcontainernode,container
Set objFSO = CreateObject("Scripting.FileSystemObject")
CreateTextfile(Wscript.arguments.item(1))

Set objFile = objFSO.OpenTextFile(ExportFile, ForWriting)
Set colobjectcontainernode=objSWbemServices.Execquery("select * from sms_objectcontainernode")

'Write to text file
For each container in colobjectcontainernode
  objFile.WriteLine container.Containernodeid & ";" & container.objecttype & ";" & container.name & ";" & container.parentcontainernodeid
Next
objFile.close
End Sub

Sub ReadImportfiletoArray(importfile)
Dim objfso,objfile
Dim tmp,strnextline,l
Set importarraynodeid = CreateObject("System.Collections.ArrayList")
Set importarrayobjecttype = CreateObject("System.Collections.ArrayList")
Set importarrayname = CreateObject("System.Collections.ArrayList")
Set importarrayparentnodeid = CreateObject("System.Collections.ArrayList")
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFile = objFSO.OpenTextFile(ImportFile, ForReading)
Do Until objFile.AtEndOfStream
   strnextline = objFile.readline
   tmp = Split(strnextline,";")
   importarraynodeid.add(tmp(0))
   importarrayobjecttype.add(tmp(1))
   importarrayname.add(tmp(2))
   importarrayparentnodeid.add(tmp(3))
Loop
End Sub

Sub ConnectSms()
set objSwbemLocator = CreateObject("WbemScripting.SWbemLocator")
set objSWbemServices= objSWbemLocator.ConnectServer(".", "root\sms")
Set ProviderLoc = objSWbemServices.InstancesOf("SMS_ProviderLocation")

For Each Location In ProviderLoc
       If Location.ProviderForLocalSite = True Then
           Set objSWbemServices = objSWbemLocator.ConnectServer(Location.Machine, "root\sms\site_" + Location.SiteCode)
       End If
Next
End Sub

'Helper Functions
Sub CreateFolder (cnoldid,cntype,cnname,cnparentid,elementid)
   Dim objNewConsoleFolder,object
   Set objNewConsoleFolder = objSWbemServices.Get("SMS_ObjectContainerNode").SpawnInstance_()
   objNewConsoleFolder.ObjectType= cntype
   objNewConsoleFolder.Name = cnname
   objNewConsoleFolder.ParentContainerNodeID = conversionarray(cnparentid+1)
   set object =  objNewConsoleFolder.Put_
   WScript.Echo "Created Folder " & cnoldid & " " & object.keys("containernodeid")
   conversionarray(cnoldid+1) = object.keys("containernodeid")
   importarraynodeid.removeat(CInt(elementid))
   importarrayobjecttype.removeat(CInt(elementid))
   importarrayname.removeat(CInt(elementid))
   importarrayparentnodeid.removeat(CInt(elementid))
End Sub


Function CreateTextFile(strFilename)
Dim objFSO,objFile
Set objFSO = CreateObject("Scripting.FileSystemObject")
If NOT objFSO.FileExists(strFilename) Then
     Set objFile = objFSO.CreateTextFile(strfilename)
     objfile.close
   End if
End Function

Function FindHighestcontainernodeid(Importfile)
Dim objFSO,objfile
Dim colobjectcontainernode,container
Dim a,strnextline,i
i=0
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFile = objFSO.OpenTextFile(ImportFile, ForReading)

Do Until objFile.AtEndOfStream
   strNextLine = objFile.Readline
  a = split (strnextline,";")
  if cint(a(0)) > i Then
    i = cint(a(0))
  End If
Loop
FindHighestcontainernodeid = i
End Function

Sub exportconversionarray()
Dim objFSO,objfile
Dim colobjectcontainernode,container
Dim a,strnextline,i

CreateTextfile("conversionarray.txt")
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFile = objFSO.OpenTextFile("conversionarray.txt", ForWriting)

For i = 0 to findhighestcontainernodeid(Wscript.arguments.item(1))
   objfile.writeline i & ";" & conversionarray(i)
Next
objfile.close
End Sub
Post #: 1
RE: script that exports and imports folder structure in... - 11/20/2008 4:36:36 PM   
rbennett806


Posts: 885
Score: 18
Joined: 6/14/2006
Status: offline
Well, I quickly tossed this together and it seemed to output the information you were wanting...

Option Explicit

Dim strSCCMServerFQDN, strSiteCode, strDomainControllerFQDN, strUserName, strPassword
Dim objWshShell, objFSO, objLocator, objSMS, OutputFile, ReturnValue

Set objWshShell = CreateObject("WScript.Shell")
Set objFSO = CreateObject ("Scripting.FileSystemObject")


' Enter the custom information for the following variables.
strUserName = "DomainName\UserName"
strPassword = "UserNamePassword"
strSCCMServerFQDN = "Server.MyDomain.com"
strSiteCode = "XXX"
strDomainControllerFQDN = "DCServerName.MyDomain.com"


ConnectToSCCM
ReturnValue = ConnectToSCCM
If ReturnValue = "NoAccess" Then
   wscript.echo "Unable to connect to the SCCM provider. Either the user credentials entered are incorrect, or else this account may not have the needed rights and permissions to access the SCCM environment."
   wscript.quit
End If

set OutputFile = objFSO.OpenTextFile("C:\test.txt", 8, True, True)
GetContainerNodeInformation

wscript.echo "DONE"
wscript.quit



' ~$~----------------------------------------~$~
Function ConnectToSCCM
' Attempts to connect to the SCCM environment.
Set objLocator = CreateObject("WbemScripting.SWbemLocator")
Set objSMS = objLocator.ConnectServer(strSCCMServerFQDN, "root\sms\site_" & strSiteCode, strUserName, strPassword)
If Err then
   Err.Clear
   ConnectToSCCM = "NoAccess"
   Exit Function
End If
ConnectToSCCM = "Accessed"
End Function

' ~$~----------------------------------------~$~
Sub GetContainerNodeInformation
' Attempts to obtain the container node information.
Dim NodeInfo, objItem
Set NodeInfo = objSMS.ExecQuery ("select * from SMS_ObjectContainerNode")
For Each objItem in NodeInfo
   OutputFile.writeline(objItem.ContainerNodeID & ";" & objItem.Name & ";" & objItem.ParentContainerNodeID & ";" & objItem.ObjectType)
Next
End Sub


(in reply to avolkov173)
Post #: 2
Page:   [1]
All Forums >> [Scripting Technologies] >> VB Script >> script that exports and imports folder structure in SMS 2003 Page: [1]
Jump to:





New Messages No New Messages
Hot Topic w/ New Messages Hot Topic w/o New Messages
Locked w/ New Messages Locked w/o New Messages
 Post New Thread
 Reply to Message
 Post New Poll
 Submit Vote
 Delete My Own Post
 Delete My Own Thread
 Rate Posts



  
Forum Software © ASPPlayground.NET Advanced Edition 2.4.5 ANSI

0.297