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
|