Like Richard, I don't have Outlook or CDO to test, but I did a literal translation of your script. Since we are dealing with a COM object, the Boolean values might not always work out.

 Code:
$servername = "MYSERVERNAME"

$PR_HAS_RULES = &663A000B
$PR_URL_NAME = &6707001E
$PR_CREATOR = &3FF8001E
$fso = CreateObject("Scripting.FileSystemObject")
$wfile = $fso.opentextfile("c:\forwardingRules.ini",2,1)
;$wfile.writeline("Mailbox,FolderPath,Creator,AdressObject,SMTPForwdingAddress")
$conn = CreateObject("ADODB.Connection")
$com = CreateObject("ADODB.Command")
$iAdRootDSE = GetObject("LDAP://RootDSE")
$strNameingContext = $iAdRootDSE.Get("configurationNamingContext")
$strDefaultNamingContext = $iAdRootDSE.Get("defaultNamingContext")
$Conn.Provider = "ADsDSOObject"
$Conn.Open("ADs Provider")
$svcQuery = "<LDAP://" + $strNameingContext + ">;(&(objectCategory=msExchExchangeServer)(cn=" + $Servername + "));cn,name,legacyExchangeDN;subtree"
$Com.ActiveConnection = $Conn
$Com.CommandText = $svcQuery
$Rs = $Com.Execute
While Not $rs.eof	
  $GALQueryFilter = "(&(&(&(& (mailnickname=*)(!msExchHideFromAddressLists=TRUE)(| (&(objectCategory=person)(objectClass=user)(msExchHomeServerName=" + $rs.fields("legacyExchangeDN") + ")) )))))"
  $strQuery = "<LDAP://" + $strDefaultNamingContext + ">;" + $GALQueryFilter + ";distinguishedName,mailnickname;subtree"
  $com.Properties("Page Size").Value = 100
  $Com.CommandText = $strQuery
  $Rs1 = $Com.Execute
  While Not $Rs1.eof
    procmailboxes($servername,$rs1.fields("mailnickname"))
    ? $rs1.fields("mailnickname")
    $rs1.movenext
  Loop
  $rs.movenext
Loop
$rs.close
$wfile.close
$fso = ""
$conn = ""
$com = ""
? "Done"

Function procmailboxes($servername,$mailboxname)
  $objSession = CreateObject("MAPI.Session") 
  $objSession.Logon("","",0,1,1,1,$servername + @CRLF + $mailboxname
  $objInfoStores = $objSession.InfoStores 
  $objInfoStore = $objSession.GetInfoStore 
  If $objSession.outofoffice = 1
    $Inbox = $objSession.Inbox
    If $inbox.fields.item($PR_HAS_RULES).value = 1
      $objMessages = $inbox.HiddenMessages
      For Each $objMessage In $objMessages 
        If $objMessage.type = "IPM.Rule.Message"
          $procrule($objMessage,$mailboxname,$inbox.fields.item(PR_URL_NAME).value)
        EndIf
      Next
    EndIf 
  EndIf
EndFunction

Function procrule($objmessage,$MailboxName,$folderpath)
  $frule = 0
  $splitarry = Split(hextotext($objmessage.fields.item(&65EF0102)),Chr(132),-1,1)
  If UBound($splitarry) <> 0
    ?
    ? "Mailbox Name :" + $MailboxName
    ? "Folder Path :" + $folderpath
    ? "Rule Created By : " + $objmessage.fields.item(PR_CREATOR).value
    $mbname = $MailboxName
    $fpath = $folderpath
    $creator = $objmessage.fields.item(PR_CREATOR).value
    $frule = 1
  EndIf
  $tfirst = 0
  $addcount = 1
  For $i=0 To UBound($splitarry)
    $addrrsplit = Split($splitarry($i),Chr(176),-1,1)
    For $j=0 To UBound($addrrsplit)
      $addrcontsep = Chr(3) + "0"
      If InStr($addrrsplit($j),$addrcontsep)
        If $tfirst = 1
          $addcount = $addcount + 1
          ?
          ? "Address Object :" + $addcount
          ReDim Preserve $resarray(1,1,1,1,1,$addcount)
          $resarray(1,0,0,0,0,$addcount) = $mbname
          $resarray(1,1,0,0,0,$addcount) = $fpath
          $resarray(1,1,1,0,0,$addcount) = $creator		
          If InStr($addrrsplit($j),"0/o=")
            $resarray(1,1,1,1,0,$addcount) = SubStr($addrrsplit($j),(InStr($addrrsplit($j),"0/o=")+1),Len($addrrsplit($j)))
            ? "ExchangeDN :" + SubStr($addrrsplit($j),(InStr($addrrsplit($j),"0/o=")+1),Len($addrrsplit($j)))
          Else 
            ? "Address :" + SubStr($addrrsplit($j),3,Len($addrrsplit($j)))
            $resarray(1,1,1,1,0,$addcount) = SubStr($addrrsplit($j),3,Len($addrrsplit($j)))
          EndIf 
          $tfirst = 1		
        EndIf
        $smtpsep = Chr(254) + "9"
        If InStr($addrrsplit($j),$smtpsep)
          $slen = InStr($addrrsplit($j),$smtpsep) + 2
          $elen = InStr($addrrsplit($j),Chr(3))
          ? "SMTP Forwarding Address : " + SubStr($addrrsplit($j),$slen,($elen-$slen))
          $resarray(1,1,1,1,1,$addcount) = SubStr($addrrsplit($j),$slen,($elen-$slen))
        EndIf
      EndIf
    Next
  Next

  If $frule = 1
    For $r=1 To UBound($resarray,6)
      $wfile.writeline("[" + $resarray(1,0,0,0,0,$r) + "]" + @CRLF + "Name=" + $resarray(1,1,1,0,0,$r) + @CRLF + "forwardto=" + $resarray(1,1,1,1,1,$r) + @CRLF + "creator=" + $resarray(1,1,1,0,0,$r))
    Next
  EndIf
EndFunction


Function hextotext($binprop)
  $arrnum = Len($binprop)/2
  ReDim $aout($arrnum)
  $slen = 1
  For $i=1 To $arrnum
    If CLng("&" + SubStr($binprop,$slen,2)) <> 0
      $aOut($i) = Chr(CLng("&" + SubStr($binprop,$slen,2)))
      ? CLng("&" + SubStr($binprop,$slen,2)) + "," + chr(CLng("&" + SubStr($binprop,$slen,2)))
    EndIf
    $slen = $slen+2
  Next
  $hextotext = Join($aOUt,"")
EndFunction