Wednesday, November 21, 2007
Enterprise Vault PST Log file Parser
' Processes the _imp.ini file for results
' S.B. Temp Workaround
' 21st November 2007
Set fso = CreateObject("Scripting.FileSystemObject")
source="log.txt"
noofargs=Wscript.Arguments.Count
if noofargs>0 Then
source = Wscript.Arguments(0)
end if
Set f = fso.OpenTextFile(source, 1, True)
Do While not f.AtEndofStream
decodeline=f.ReadLine
if instr(decodeline,"Processing PST")<>0 Then
decodeline=trim(decodeline)
dec=split(decodeline,":")
decoded=trim(dec(3))
for inl=0 to 18
ignore=f.readline
next
result=f.readline
if instr(result,"success")<>0 Then
result = "Success"
else
result = "Failed"
end if
wscript.echo decoded & " : " & result
end if
loop
Sunday, October 07, 2007
BBC - In the Night Garden
But what on earth is it all about ? The weirdest collection of creatures and names all piled together into one program ?
Why it works I have no idea but my son loves it, my friends children love it, there's no other program on TV like it.
Tuesday, May 22, 2007
PSP Video output to your Monitor (RemoteJoy)
http://www.psp-hacks.com/2007/05/17/remotejoy-psp-video-out-via-usb/
And as proof of concept, I have got it working absolutely fine as you can see with a video from my PSP being shown ful screen on my monitor at work. :
Tuesday, February 20, 2007
Vista is Pony...
It's all very well making it look nice but it keeps crashing and I really don't have that much installed on it.
My main grip is Frontpage 2003 which will crash at the same point every time.
Windows is looking for a solution to the problem. yeah right... Never comes up with anything and the problems remain.
The incessant security dialogues that pop up are beyond a joke, you can crash it every time when trying to manipulate big files.. try writing a 2GB file to a live filesystem DVD over a wireless network.. Just sits there for ever getting itself into a twist.
Steer clear.. My own fault for jumping on the wagon too soon... maybe when SP1 arrives, it''ll be better.
S.
Friday, January 19, 2007
How to fix a failed HP Network Configuration Utility Upgrade
You need a RILO board or to be standing in front of the HP server of course.
NCU upgrade / fix to 8.1 (version 2)
All of this needs to be done from the RILO board.
1. Stop and Disable Microsoft Exchange System Attendant service
2. Load a CMD prompt
3. Type “ipconfig /all >c:\ips.txt” to record the current IP info.
- if gigabit and emea, record static route settings.
4. Type "set devmgr_show_nonpresent_devices=1"
5. cd\winnt\System32
6. start devmgmt.msc
7. Remove any Network Adapters that show up in the Device Manager
- The system will ask you to reboot after each one.. click NO.
8. Go to C:\CPQSYSTEM\pnpdrvs and delete any files beginning with n100, n1000,
cpqnet, cpqteam, q57
9. Go to C:\Winnt\inf and delete any files beginning with n100, n1000, cpqnet,
cpqteam, q57
10. Delete oem*.* from c:\winnt\inf
11. Enable verbose Setupapi logging by creating and populating the following registry value
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Setup
Value Name: LogLevel
Data Type: REG_DWORD
Value: FFFF
12. Rename the current setupapi.log
13. Reboot and allow PnP detection to detect and attempt to install the device using Microsoft in the box driver.
14. Assign the right IP address to the primary NIC (onboard).
15. RUN full HP SSD to update\install the NIC drivers & NCU utility from the Build3 directory.. (D:\server build\hp\ssd)
15.5 Reboot and relogin via the RILO.
16. Configure the NIC teaming according to WI (CITWI-0187) and Assign the production IP address to the Team ( recorded in c:\ips.txt)
- 100 / Full duplex, fault tolerant etc.
17. Reconfigure Gigabit card if present (recorded in c:\ips.txt)
- reset metrics as per standard
- reset routing and remote access
17.5 Rename all NICS as per the build 3 document.
17.7 Do an ipconfig /registerdns and nbtstat –RR to flush the dhcp settings and register correct settings.
18. Set Microsoft Exchange system Attendant to automatic
19. Reset Setupapi logging by creating and populating the following registry value
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Setup
Value Name: LogLevel
Data Type: REG_DWORD
Value: 0
20. Reboot
21. Login via mstsc /console and check all is ok.
Tuesday, August 15, 2006
Exchange 2003 SP2 move mailbox issue (Guid-ReplID Caching) Part 2
const HKEY_LOCAL_MACHINE = &H80000002
If (Wscript.Arguments.Count)<>2 Then
WScript.Echo ("Usage : cscript guidstore.vbs -s
WScript.Quit(1)
End If
If lcase(WScript.Arguments(0))="-s" Then
strcomputer=WScript.Arguments(1)
End If
Set StdOut = WScript.StdOut
Set oReg=GetObject("winmgmts:{impersonationLevel=impersonate}!\\" &_
strComputer & "\root\default:StdRegProv")
strKeyPath = "SYSTEM\CurrentControlSet\Services\MSExchangeIS\" & strcomputer
oReg.EnumKey HKEY_LOCAL_MACHINE, strKeyPath, arrSubKeys
For Each subkey In arrSubKeys
StdOut.WriteLine subkey
SubKeys = "SYSTEM\CurrentControlSet\Services\MSExchangeIS\" & strcomputer & "\" & subkey
strValueName = "Guid-Replid Caching"
dwValue = 0
oReg.SetDWORDValue HKEY_LOCAL_MACHINE,SubKeys,strValueName,dwValue
Next
Monday, August 07, 2006
Exchange 2003 SP2 move mailbox issue (Guid-ReplID Caching)
After moving mailboxes to an Exchange 2003 SP2 server, Outlook users may experience a crash when changing folders. The crash is a stack overflow caused by corruption in the GUID/Replid Mapping (GRM) cache on the target server. Remounting the mailbox store or restarting the Information Store service will resolve the crashing for affected users. Some users that have experienced the crashing problem may also experience problems with duplicate folders, delegate issues, and Free/Busy information. These problems persist after the restart and must be manually corrected.
More Information
In Exchange 2003 SP1, the GRM cache is disabled by default. In Exchange 2003 SP2, it is enabled by default. Enabling the GRM cache can lead to problems during mailbox moves to a target SP2 store. Its purpose is to handle lock contention that can affect performance during the move mailbox operation. The odds of the perf hit being severe are very low, but there is a slight chance. In most scenarios, a chance of slow is better than the alternative so we are working on a post-SP2 hotfix to disable it by default. In the meantime, you can disable the GRM cache on a per-database basis with the following registry value:
HKLM\System\CurrentControlSet\Services\MSExchangeIS\[server name]\Private-[store guid]
Value Name: Guid-Replid Caching
Value Type: DWORD
Value Data: 0
Notes
- For the registry change to take effect, remount the affected mailbox stores.
- The hotfix is still under investigation. There is no ETA at this time for its release.
- Disabling the cache will not affect users that have already experienced the problem, it only prevents mailboxes from getting into the problem state while moving them.
Thursday, July 27, 2006
Correcting SIP Addresses
This script cycles AD and checks for mismatches. If you specify /commit it will write the changes back to AD.
'==========================================================================
'
'
'
' NAME: SIPFix.vbs
'
' AUTHOR: Stuart Bennett
' DATE : 26-05-2006
'
' Usage: sipfix.vbs
Thursday, April 06, 2006
Mounting an exchange 2003 database on a different server.
This is just not the case and I've already restored several mailboxes by relinking them to different AD accounts in entirely seperate forests.
the key to it is LegacyDN.exe,a super tool which can be downloaded from www.microsoft.com/exchange. Don't ever run it in your production environment though..
Once in possesion of this, all you need is the .edb and .stm files.
I have an entire Virtual Server 2005 environment now for this. Create a new AD (call it whatever you want), extend it and install Exchage 2003. Call the Exchange org whatever you want, and the server itself can be whatever.
Once all is installed, I'd copy the VS2005 disks so you always have a ready environment for re-testing.
Running legacyDN.exe, you can then alter, the Orgname, the AG name, and the all importany LegacyDN name to match where the original DB came from. Once done, create a new store, but don't start it. Place the origianl DB's files in the location of the new store. Start it, run mailbox cleanup agent, then relink to any AD account you've created in your new directory.
Export with exmerge and job done.
I know RSG's save us in almost all cases, but exmerge will not see data when the msExchangeGUID cannot be matched to a AD account.
With the Virtual Server disk images in place, I can recover any mailbox in about 10 minutes these days.
Long live the illusion of identical environments for restores required, NOT ! If you want the full step by step guide, drop me an email.
Mounting an exchange 2003 database on a different server.
This is just not the case and I've already restored several mailboxes by relinking them to different AD accounts in entirely seperate forests.
the key to it is LegacyDN.exe,a super tool which can be downloaded from www.microsoft.com/exchange. Don't ever run it in your production environment though..
Once in possesion of this, all you need is the .edb and .stm files.
I have an entire Virtual Server 2005 environment now for this. Create a new AD (call it whatever you want), extend it and install Exchage 2003. Call the Exchange org whatever you want, and the server itself can be whatever.
Once all is installed, I'd copy the VS2005 disks so you always have a ready environment for re-testing.
Running legacyDN.exe, you can then alter, the Orgname, the AG name, and the all importany LegacyDN name to match where the original DB came from. Once done, create a new store, but don't start it. Place the origianl DB's files in the location of the new store. Start it, run mailbox cleanup agent, then relink to any AD account you've created in your new directory.
Export with exmerge and job done.
I know RSG's save us in almost all cases, but exmerge will not see data when the msExchangeGUID cannot be matched to a AD account.
With the Virtual Server disk images in place, I can recover any mailbox in about 10 minutes these days.
Long live the illusion of identical environments for restores required, NOT !
Tuesday, February 21, 2006
Wednesday, January 04, 2006
The WMF Virus Emails.
From a certain Mr Gordson.
Hello,
We are very sad to say that over the New Year the Campus was subjected to
several acts of mindless vandalism. As well as bricks being thrown through
windows, several members of staff have reported their cars as being the
subject of practical jokes. Some of these cars were filled with water whilst
others had graffiti daubed across them. We have uploaded the pictures of the
graffiti here http://playtimepiano.home.comcast.net/ in the hope that someone
may recognise the culprits work. If anyone can shed any light on this unfortunate
incident could they please contact the main office as soon as they have time.
Many Thanks & Best Regards,
Professor Robert Gordens
Yale
Monday, November 21, 2005
Hide multiple AD accounts from the GAL.
A simple script to read in a text file and hide the users from the GAL..
Naturally, to un-hide then change from TRUE to FALSE on the appropriate line.
S.
'==========================================================================
'
' NAME: HidefromAB.vbs
'
' AUTHOR: Woosie
' DATE : 21-11-2005
'
' COMMENT: Hide a list of users from the GAL. Win 2k3, Ex 2k3.
'
'==========================================================================
If Wscript.Arguments.Count = 0 Then
Wscript.Echo "Error, required argument missing."
WScript.Echo "Include filename to read in users."
Wscript.Quit(1)
End If
Const E_ADS_PROPERTY_NOT_FOUND = &H8000500D
Dim objDSE, objADObject, objClass, i, strPropName,debug
debug=1
sourcef = Wscript.Arguments(0)
Set fso = CreateObject("Scripting.FileSystemObject")
Set f = fso.OpenTextFile(sourcef, 1, True)
While Not f.AtEndofStream
decodeline=f.ReadLine
newuser=Trim(decodeline)
If debug=1 Then
WScript.Echo ("**Looking for " & newuser)
End If
Set objDSE = GetObject("LDAP://rootDSE")
Set objADObject = GetObject("LDAP://CN=" & newuser & ",ou=Users," & _
objDSE.Get("defaultNamingContext"))
objADObject.GetInfo
objADObject.msExchHideFromAddressLists=True
objADObject.SetInfo
Wend
Thursday, November 03, 2005
Jet Database Errors in Exchange
Error -1012 - JET_errOutOfDatabaseSpace
Maximum database size reached.. In 5.5/2k/2k3 standard edition, a paultry 16 Gb never went far. With the release of SP2 for Exchange 2003 though this has been ramped up to 75 Gb so we should not see this again.
Error -1018 - JET_errReadVerifyFailure
Checksum error on a database page. Rather vague but possible hardware fault in most cases.
Error -1019 - JET_errPageNotInitialized
Blank database page. There used to be data there, but not now.
Error -1020 - JET_errOutOfFileHandles
When exchange tried to use the database, windows thought it had various files open already and wouldn't give up any more. Bad windows...
Error -1022 - JET_errDiskIO
The disk IO error is rare but if it does rear its ugly head, it's very hardware'y and not exchange.
Wednesday, October 26, 2005
NT4 WMI Revisited gripe.
I had run this tiny WMI Script to enumerate the installed hotfixes on an old NT4 box.
strComputer = "."
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
Set colItems = objWMIService.ExecQuery("Select * from Win32_QuickFixEngineering",,48)
For Each objItem in colItems
Wscript.Echo "HotFixID: " & objItem.HotFixID
Wscript.Echo "Name: " & objItem.Name
Wscript.Echo "Status: " & objItem.Status
Next
Leave that running and before you know it, WinMgmt.exe will have consumed all available memory (virtual and otherwise) and the server is on its knees.
the reason being is that M$ changed their naming strategy in way hotfixes install themselves into the list of hotfixes applied. WMI_Quickfix engineering enters an endless loop trying to enumerate them.
M$ refused to fix this of course.. Why fix something when you just release a new version.
Tuesday, October 18, 2005
Exchange Server 2003 Service Pack 2
http://www.microsoft.com/exchange/downloads/2003/sp2/download.mspx
More QA Nightmares coming up :-(
Friday, August 05, 2005
OT : PC GTA San Andreas Plane Controls
Took me ages to find the key and I bought the original.. :-(
Almost onto Chapter 6.. What a game :-)
Friday, July 15, 2005
Exchange 2003 -1018 Whitepage
http://www.microsoft.com/downloads/details.aspx?familyid=7d6d90f2-50f8-4072-8ce9-b073069b8756&displaylang=en#overview
Thursday, June 09, 2005
Rightfax 9 Dialing Rules Export
I was unable to use any of the GUI's in Rightfax 9 to export the dialing rules database as since SP1, they have moved them to SQL tables.
Using SQL Manager, there are 3 tables I need as far as I can see.
dbo.DTDiallingRules : holds a list of every rule with unique Rule ID's
dbo.DTConfigurationDaillingRules : holds server GUID's plus associated Rule ID's
dbo.DTConfigurations : maps server name to server GUID's.
So it should be a matter of creating a DSN in ODBC manager to your SQL server, then exporting the 3 tables, cross referencing and job done. And so faxrules.vbs was born.
'==============================================
'
' VBScript Source File
'
' NAME: FaxRules.vbs
'
' AUTHOR: Woosie.
' DATE : 08-06-2005
'
' COMMENT: Export Rules on a daily basis to keep tabs on things.
'
'==============================================
Dim DTDR,DTCDR,DTC
' -------------------------
' Create Connection to ODBC
' -------------------------
' These lines may need changing.
DSN="rightFAXDSN"
uid="sa"
pwd="xxxxxxxx"
FullPath="c:\"
todays=FormatDateTime(Date,1)
Dim MyTime,MyHour,Myminute
MyTime=now
Myhour=hour(mytime)
myminute=minute(mytime)
times=myhour & "-" & myminute
FullPath=FullPath & "\" & todays & ".csv"
Set fso = CreateObject("Scripting.FileSystemObject")
Set objfile = fso.OpenTextFile(fullpath, 8, True)
Dim OBJdbConnection
Set OBJdbConnection = CreateObject("ADODB.Connection")
Set RS = CreateObject ("ADODB.Recordset")
Set SQLStmt = CreateObject("ADODB.Command")
' -------------------------
' Open Connection
' -------------------------
OBJdbConnection.ConnectionString = "dsn=" & DSN &";uid=" & uid & ";pwd=" & pwd &";DATABASE=RightFax;APP=ASP Script"
OBJdbConnection.Open
set rsDTCDR=createobject("adodb.recordset")
RSDTCDR.open "DTConfigurationsDialingRules",OBJdbConnection,3,3
objfile.writeline("Server,RuleID,SourceServer,Pattern,DestinationServer,Protocol,PriorityDelta,
Flags,PriorityMask,StartChannel,TimeofDayMask_0,TimeofDayMask_1,
TimeofDayMask_2,
TimeofDayMask_3,TimeofDayMask_4,TimeofDayMask_5,TimeofDayMask_6,
BeginDelete,BeginReplace,EndDelete,EndReplace,UserID,GroupID,EndChannel,
Comment,MinQueueDepth,ExtraWeight,DelayHour,
FaxSize,MLAccount,MLPassCode,MLDocAccount,DNDNotifyList,NotifySender")
DTCDR=rsDTCDR.GetRows()
DTCC=UBound(DTCDR,1)
DTCR=UBound(DTCDR,2)
For lo1=0 To DTCR
Rule=DTCDR(1,lo1)
Disabled=DTCDR(2,lo1)
If disabled = 0 Then
objfile.writeline(GUID2Server(DTCDR(0,lo1)) & ",Disabled")
Else
objfile.writeline(GUID2Server(DTCDR(0,lo1)) & "," & RuleID(rule))
End if
next
Set rsDTDR=Nothing
Set rsDTCDR=Nothing
Set rsDTTC=Nothing
Set objfile=Nothing
Function GUID2Server(target)
' -------------------------
' Return Servername from GUID
' -------------------------
set rsDTC=createobject("adodb.recordset")
RSDTC.open "DTConfigurations",OBJdbConnection,3,3
GUID2Server="Not Found"
DTC=rsDTC.GetRows()
DTCC1=UBound(DTC,1)
DTCR1=UBound(DTC,2)
For loGUID=0 To DTCR1
If target=DTC(0,loGUID) Then
GUID2Server=DTC(1,loGUID)
End if
Next
Set rsDTC=Nothing
End Function
Function RuleID(target)
set rsDTDR=createobject("adodb.recordset")
RSDTDR.open "DTDialingRules",OBJdbConnection,3,3
RuleID="Not Found"
DTC=rsDTDR.GetRows()
DTCC2=UBound(DTC,1)
DTCR2=UBound(DTC,2)
For loGUID=0 To DTCR2
If target=DTC(0,loGUID) Then
RuleID=""
For add=0 To DTCC2
RuleID=RuleID & chr(34) & DTC(add,loGUID) & Chr(34) & ","
Next
End If
Next
Set rsDTDR=Nothing
End Function
