Thread: Powershell slow
View Single Post
Old 04-10-2008   #5 (permalink)
Swamy Channaveera
Guest


 

Re: Powershell slow

Following is the VBScript that produces the exact result as that of Powershell.

'On Error Resume Next

Const ADS_SCOPE_SUBTREE = 2
Const ForReading = 1

mbcount=0
SWcount=0
errcount=0

Set objConnection = CreateObject("ADODB.Connection")
Set objCommand = CreateObject("ADODB.Command")
objConnection.Provider = ("ADsDSOObject")
objConnection.Open "Active Directory Provider"
objCommand.ActiveConnection = objConnection

FilePath = "Migration.html"
Set objArgs = WScript.Arguments


Set objDictionary = CreateObject("Scripting.Dictionary")
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objTextFile = objFSO.OpenTextFile("c:\scripts\sam.txt", ForReading)

Set fso = CreateObject("Scripting.FileSystemObject")
set wfile = fso.opentextfile(filepath,2,true)


i = 0
Do While objTextFile.AtEndOfStream <> True
strNextLine = objTextFile.Readline
objDictionary.Add i, strNextLine
i = i + 1
mbcount = mbcount +1
Loop

wfile.writeline("<html>")
wfile.writeline("<head>")
wfile.writeline("<meta http-equiv='Content-Type' content='text/html;
charset=iso-8859-1'>")
wfile.writeline("<title> MIGRATION SWITCH STATUS Report</title>")
wfile.writeline("<style>")
wfile.writeline("<!--")
wfile.writeline("body, td {font-family:tahoma;font-size:11px;border:
border-width:1px; border-style:solid ; color #CCCCCC;}")
wfile.writeline("table{border: thin solid #000000;}")
wfile.writeline("-->")
wfile.writeline("</style>")

wfile.writeline("<meta http-equiv='Refresh' content = '10; '>")

wfile.writeline("<table width='60%' align='center' cellpadding='3'
cellspacing='3' '>")

wfile.writeline("<tr bgcolor='#CCCCCC'>")
wfile.writeline("<td colspan='3' height='45' align='center'>")
wfile.writeline("<font face='tahoma' color='#003399' size='2'><strong>
Mailbox Migration Switch Status Report</strong></font>")
wfile.writeline("</td>")
wfile.writeline("</tr>")
wfile.writeline("</table>")
wfile.writeline("<tr>")
wfile.writeline("<td colspan=5> </td>")
wfile.writeline("</tr>")



wfile.writeline("<table border='1' width='60%' align='center'
cellpadding='3' cellspacing='2' style='border-top: 1px solid #CCCCCC;
border-left: 1px solid #CCCCCC; border-right: 1px solid
#CCCCCC;border-bottom: 1px solid #CCCCCC;'>")


wfile.writeline("<tr align='center'>")
wfile.writeline("<td bgcolor='#CCCCCC' align='left' valign='top'
style='border-bottom: 1px solid #CCCCCC;' width='33%'><div
align='center'><strong>UserID</strong></div></td>")
wfile.writeline("<td bgcolor='#CCCCCC' align='left' valign='top'
style='border-bottom: 1px solid #CCCCCC;' width='33%'><div
align='center'><strong>Display Name</strong></div></td>")
wfile.writeline("<td bgcolor='#CCCCCC' align='left' valign='top'
style='border-bottom: 1px solid #CCCCCC;' width='34%'><div
align='center'><strong>Switched (Yes/No)</strong></div></td>")
wfile.writeline("</tr>")


For Each objItem in objDictionary
objCommand.CommandText = "SELECT samAccountName,altrecipient,displayname
FROM " & _
"'LDAP://dc=UD1,dc=UTILITY' " & _
"WHERE samAccountName = '" & objDictionary.Item(objItem) & "'"
objCommand.Properties("SearchScope") = ADS_SCOPE_SUBTREE
Set objRecordSet = objCommand.Execute

'Wscript.Echo objRecordSet.Fields("distinguishedname").Value


If objRecordSet.RecordCount = 0 Then
Wscript.Echo objDictionary.Item(objItem) & " NOT found"

errcount = errcount+1

Else
objRecordSet.MoveFirst

Do Until objRecordSet.EOF

wfile.writeline("<tr>")
wfile.writeline("<td>" &
objRecordSet.Fields("samaccountname").Value & "</td>")
wfile.writeline("<td>" &
objRecordSet.Fields("displayname").Value & "</td>")

if left(objRecordSet.Fields("altrecipient").Value,8) = "CN=Quest" then
' Wscript.Echo objRecordSet.Fields("displayname").Value & " is not
migrated "
wfile.writeline("<td align='Center'>No</td>")


else
' Wscript.Echo objRecordSet.Fields("displayname").Value & " is migrated "
wfile.writeline("<td align='Center'>Yes</td>")
swcount = swcount+1

end if
' Wscript.Echo objRecordSet.Fields("displayname").Value &
objRecordSet.Fields("altrecipient").Value & " is migrated "
objRecordSet.MoveNext
Loop


End If

Next

wfile.writeline("<tr></tr>")
wfile.writeline("<table border='1' width='60%' align='center'
cellpadding='3' cellspacing='0' style='border-top: 1px #CCCCCC; border-left:
1px solid #CCCCCC; border-right: 1px solid #CCCCCC;border-bottom: 1px solid
#CCCCCC;'>")
wfile.writeline("<tr>")
wfile.writeline("<td width='33%' align='left'>Last Updated: " & now() &
"</td>")
wfile.writeline("<td width='67%' align='left'>Total number of mailboxes : "
& mbcount & " | Switched : " & SWcount & " | Pending : " &
mbcount-errcount-swcount & " | Error : " & errcount & "</td>")

wfile.writeline("</tr>")

wfile.writeline("</table><p>")

' wfile.writeline("<td width='34%' align='left'> Switched : " & SWcount & "
/ Pending : " & mbcount-errcount-swcount & " / Error : " & errcount & "</td>")




objtextfile.close
mbcount=0
SWcount=0





"Marco Shaw [MVP]" wrote:
Quote:

> Swamy Channaveera wrote:
Quote:

> > The script is as follows
> >
> > get-content user.txt | foreach { get-qaduser $-} | sort altrecipient |
> > select-object displayname, altrecipient | convertto-html list.htm
>
> And how about the VBScript version also. Maybe there's something we can
> pass along to MS on this for them to look into...
>
> Marco
>
>
> --
> Microsoft MVP - Windows PowerShell
> http://www.microsoft.com/mvp
>
> PowerGadgets MVP
> http://www.powergadgets.com/mvp
>
> Blog:
> http://marcoshaw.blogspot.com
>
My System SpecsSystem Spec