Thursday, December 31, 2009

Resetting search index error

From Prashanth's blog

I was trying to reset the search index on my dev box and the following error message comes up while doing so:
The application is unable to accept further updates because the last attempt to persist the state failed.
Checking the event logs show up following messages:
Unable to Reset search application 'Shared Services'. Microsoft.Office.Server.Search.Administration.DatabaseException: Unable to persist changes to the search application object due to a previous error persisting changes. See event log for more information on the cause. Only read operations are possible until the issue is resolved. ---> System.Runtime.InteropServices.COMException (0x80040DBA): The application is unable to accept further updates because the last attempt to persist the state failed. See the event log for more details. at Microsoft.Office.Server.Search.Administration.MSSITLB.IGatherApplication2.ValidateVersionForWrite(Int32 lLastVersion, Int32& plVersionOut) at Microsoft.Office.Server.Search.Administration.SearchApi.WriteAndReturnVersion(CodeToRun`1... .. remoteCode, VoidCodeToRun localCode, Int32 versionIn) --- End of inner exception stack trace --- at Microsoft.Office.Server.Search.Administration.SearchApi.WriteAndReturnVersion(CodeToRun`1 remoteCode, VoidCodeToRun localCode, Int32 versionIn) at Microsoft.Office.Server.Search.Administration.SearchApi.ResetApp(Int32 versionIn) at Microsoft.Office.Server.Search.Administration.SearchApi.ResetApp()
To fix it, I tried the following steps:

  • Operations -> Services on server -> Office Sharepoint Server Search - > stop
  • Started the service again
  • SSP site -> search settings
  • Here you need to associate the SSP with the search database
  • Once its done, go back to the search settings page and wait for sometime for the indexer to complete its job (probably 2-3 minutes)
  • Now the search index can be reset.

Posted by Prashanth Palakollu at 10:29 AM

Monday, December 21, 2009

Event 7076, 6398, 6482 regularly displayed in the Event Log on a SharePoint Server

Hi,

The SharePoint Product Group has experienced a lot of customers reporting an issue where they would get Event 7076, 6398, 6482 regularly displayed in the Event Log on a SharePoint Server. Information to help identify the event log messages is below.

Apart from the Event Log messages the symptoms that the customer may see is:

In SharePoint Server 2007, tasks that are scheduled do not run.

When you try to manage IIS 6.0 by using Server Manager, you receive a blank page, or you receive the following error message:

the path specified cannot be used at this time

A Windows Server 2003 hotfix is now available for this issue.

946517    FIX: You may be unable to manage IIS 6.0 by using Server Manager if two threads access IIS 6.0 at the same time
http://support.microsoft.com/default.aspx?scid=kb;EN-US;946517

Event Log details:

Event Id: 7076
Event Source: Office SharePoint Server
The Message text will contain:
- "Microsoft.Office.Server.Search.Administration.SearchAdminSharedWebServiceInstance"

- "Attempted to read or write protected memory. This is often an indication that other memory is corrupt."

- A reference to the Metabase in the call stack.

Event Id: 6398
Event Source: Windows SharePoint Services 3
The Message text will contain:  
- "Microsoft.Office.Server.Administration.ApplicationServerAdministrationServiceJob"

- "Attempted to read or write protected memory. This is often an indication that other memory is corrupt."

Event Id: 6482
Event Source: Office SharePoint Server
The Message text will contain:
- "Microsoft.Office.Server.Search.Administration.SearchAdminSharedWebServiceInstance"

- "Attempted to read or write protected memory. This is often an indication that other memory is corrupt."

- A reference to the Metabase in the call stack.

Nick.

Published Thursday, January 31, 2008 5:22 PM by nickmac

Filed under: MOSS 2007, Supportability

Comments
# MSDN Blog Postings » Event 7076, 6398, 6482 regularly displayed in the Event Log on a SharePoint Server

PingBack from http://msdnrss.thecoderblogs.com/2008/01/31/event-7076-6398-6482-regularly-displayed-in-the-event-log-on-a-sharepoint-server/

Thursday, January 31, 2008 2:08 AM by MSDN Blog Postings » Event 7076, 6398, 6482 regularly displayed in the Event Log on a SharePoint Server

# re: Event 7076, 6398, 6482 regularly displayed in the Event Log on a SharePoint Server

A workaround for us, in lieu of the hotfix, was to simply restart the "Windows SharePoint Services Timer" service.

The restart of this service fixed the "corrupt memory" events and also got rid of the blank Internet Information Services Administrator page.

The SharePoint trace logs also contained error information that was cleared up once we restarted this service.

Monday, February 04, 2008 5:50 PM by mcnga1

MSSOAP Error

> I am trying to connect to a .Net web service in foxpro 8. If I connect to a web service that is not password protected, it works fine. However, when I try to connect to a web service that is password protected, I get this error:
>
> OLE IDispatch exception code 0 from WSDLReader: WSDLReader:XML Parser failed at linenumber 0, lineposition 0, reason is: Access is denied.
> HRESULT=0x1: Incorrect function.
> - WSDLReader:Loading of the WSDL file failed HRESULT=0x80070057: The parameter is incorrect.
> - Client:One of the parameters supplied is invalid. HRESULT=0x80070057: The parameter is incorrect.
>
>
> The WSDLReader is called inside of SOAPCLIENT_INIT method...See below:
>
> **This code is part of the foxpro class WSHandler--> connectws method
>
> * SOAPCLIENT_CLASS => "MSSOAP.SoapClient30"
> THIS.wsObject = CREATEOBJECT(SOAPCLIENT_CLASS)
> THIS.SetClientProperties()
> THIS.wsObject.SOAPCLIENT_INIT(THIS.WSDL, THIS.Service, THIS.Port, THIS.WSML)
> THIS.SetConnectorProperties()
>
> I have read that you can set the proxy user name and password in the SetConnectorProperties(), but this this doesn't seem to make since, because the access denied error occurs on the SOAPCLIENT_INIT line. (Before SetConnectorProperties() is encountered)
>
> If anyone has connected to a webservice on a password protected website, please help!!!
>
> Thank you,
>
> Darren Shafer
> Amerisafe Insurance Co, Inc.
> Programmer / Analyst
I figured out why this wasn't working and I figured I would post the solution in case anyone else was wondering. If you are trying to access a webservice that is protected using BASIC AUTHENTICATION then the following code will allow you to send a username, password with your soap request:
*Create a Simple Object Access Protocol Object
wsClient = CREATEOBJECT("MSSOAP.SoapClient30")
*Attempt to read the Wsdl file for the webservice
wsClient.mssoapinit([WebServicePath],[WebServiceName])
*Authentication
wsClient.ConnectorProperty("AuthUser") = ALLTRIM([username])
wsClient.ConnectorProperty("AuthPassword") = ALLTRIM([password])
*When using Soap 3.0, set Authentication Scheme property ( 1 is for Basic Authentication)
wsClient.ConnectorProperty("WinHTTPAuthScheme") = 1

What pages are controlled by the Simple.Master

Simple.Master

· AccessDenied.aspx

· confirmation.aspx

· error.aspx

· login.aspx

· reqacc.aspx

· signout.aspx

· webdeleted.aspx

Server Application Unavailable Message

If you have ever received an error message on a .Net application that simply stated "Server Application Unavailable" you might find this useful.
When you receive this error, make sure to check the event viewer on the server. This is found under administrative tools. Under the application event log, you will likely find an error that states: "It is not possible to run two different versions of ASP.NET in the same IIS process. Please use the IIS Administration tool to run the application in a separate process."
An application pool is a process that responds to web requests under IIS. An application pool does not have a setting for what type of ASP.Net applications will be run in it. Instead, it loads the appropriate libraries when an ASP.Net application is loaded in the process. Because the libraries for ASP.Net 1.1 and ASP.Net 2.0 are similar, but not the same, the application pool cannot respond to requests for both types of applications at the same time. This can cause sporadic behaviour if you are using the server at the same time as another developer and you have applications using different versions of the framework in the same application pool.
Make sure that on your server there is an application pool dedicated to ASP.Net 2.0 applications and one for ASP.Net 1.1 applications. When you add an ASP.Net application to the server, make sure you select the right application pool for it.

Original Post

Tool

Allow Anonymous Posts

By Daniel Bugday

I configured the "discussion" list on http://www.sharepointforum.com to allow anonymous posts.

This is how i did it:

1. Allow anonymous for the Web Application (using central admin)

image
2. Allow anynomous access to the site (Site Actions)

image
3. Break Inheritance using Actions > on the "discussion list" and then click Settings > Anonymous Access and allow everything except delete items

image
4. Then go to the "Discussion" list > Settings  > Advanced Setttings and allow "All Items" under Read and only their own under "Edit Access"

image

How to fix: Recurring Meeting Workspace error: ‘g_InstanceID’ is undefined

SharePoint Designer Support Team Blog

Scenarios:

After changing the master page on a Meeting Workspace site, the recurring meeting workspace hyperlinks under “Select a date from the list below” do not work and throw a JavaScript error.

If you create a custom master page and use it for your Meeting Workspaces, a JavaScript error is thrown.

Error:
‘g_InstanceID’ is undefined

Cause:
The g_instanceId global JavaScript variable is declared in a script registered runtime by the Microsoft.SharePoint.Meetings.PropertyBag web control. This control is used in the master page that’s used by Meeting Workspace sites called “MWSDefault.master” (located on server in 12 hive\TEMPLATE\GLOBAL\).

Steps to Reproduce:

  1. Create a new Workspace: Site Actions-> Create Site -> Select [Meetings] Basic Meeting Workspace, click Create.
  2. On Workspace site, add a Calendar list: Site Actions -> Create -> [Tracking] Calendar.
  3. Add a new event to Calendar list, make recurring event, and select [x] Use a Meeting Workspace to organize attendees, agendas, documents, minutes, and other details for this event. Click OK.
  4. Follow steps to create workspace for Calendar event. Go to workspace.
  5. Change master page for workspace: Site Actions -> Site Settings -> [Look and Feel] Master page -> select any master page for Site Master Page and System Master Page. Click OK. Go back to workspace.
  6. Now the links under “Select a date from the list below:” do not work and throw a JavaScript error message: ‘g_InstanceID’ is undefined .

Workaround:

  1. Open SharePoint Designer 2007. Go to File | Open Site and connect to SharePoint site.
  2. Expand out _catalogs -> masterpage -> open master page used on Meeting Workspace.
  3. In Code View, add the following line of code under <%@ Import Namespace="Microsoft.SharePoint" %> tag:

<%@ Register Tagprefix="Meetings" Namespace="Microsoft.SharePoint.Meetings" Assembly="Microsoft.SharePoint, Version=12.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" %>

  1. Add the following line of code after opening <body …> tag: <Meetings:PropertyBag runat="server"/>
  2. Save master page, check in (if necessary), and publish major version.

Credit Card Prefixes

Clicky

WRQ Reflection for the web

See Michael.Benjamin

904-xxx-xxxx

Reflection for the Web is terminal emulation software that securely connects browser users to applications on IBM, HP, UNIX, Unisys, OpenVMS, and CRS/GSD hosts. Strong authentication and encryption capabilities safely deliver fully functioning host applications across the public Internet. And a secure token authorization feature adds a layer of LDAP access control in front of your host applications, integrating them into your modern security infrastructure.

How to Enable Incoming Email to a SharePoint List or Library

Posted by ken zheng on April 23, 2008

SharePoint users can add content to discussion boards, announcements, calendars, libraries (document, picture and form) and blogs via email. By setting your list or library up to receive email, you can efficiently update the content of your site without having to navigate the SharePoint frontend.

  1. Login to your SharePoint site.
  2. Navigate to the list or document library you want to email to.
  3. Click Settings.
  4. Choose List Settings or Document Library Settings respectively.
  5. In the far right column, select Incoming Email Settings.
  6. Click Yes to allow items to be added through email and create an email address to which you will send the items.
  7. OPTIONAL: You can modify other Incoming Email Settings regarding attachments, messages, meeting invitations and security on this page, as well.
  8. When finished, click OK to complete the setup. Incoming email has now been enabled for your SharePoint list or library.

Before you begin emailing content to your SharePoint site, there are a few things you need to know. First, if your security settings are set to only accept email messages based on list permission, you must have user permission to write content to the list. In addition, it is required that you email from the email address specified in your SharePoint user profile. Content coming from unknown email addresses or users without “contribute” permissions will not be added to the list or library.

Once you have covered these basic rules, you can add content to document, picture and form libraries by simply sending emails to the specified address with the item attached. It will appear in the appropriate library within minutes. Please note, there is a small bug that requires you include text in the email message or the item will not get added. This can be dummy text, as it will not appear in the library.

In order to email to a SharePoint calendar, the process is slightly different. You have to create and send a meeting invitation from your Microsoft Outlook calendar to the address specified. It will automatically appear on the calendar. To add content to all other lists, send a standard email with the entry title in the subject field and the entry body in the message of the email. The entry will populate the list appropriately.

IIS - After creating a site it will not start.

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\HTTP\Parameters -> ListenOnlyList

Reference:

Setting metabase property DisableSocketPooling has no effect

also

FIX: IIS 6.0 incorrectly binds to ports when IP addresses are added to the IP inclusion list

and

http://www.issociate.de/board/goto/929609/IIS_-_invalid_network_name.html

Interwoven - Replacing the Entity DB

Entity Database Background

TeamSite uses an internal structure called the Entity Database to store information about various TeamSite entities such as users, groups, and roles.  Normally, the Entity Database is invisible to the user, and any entities that TeamSite needs are created automatically, either when TeamSite is first installed, or when a new user first logs on.

However, there are some circumstances in which the TeamSite Entity Database may become corrupted.   Usually, this can be corrected by using the 'iwuser' command line tool to remove any corrupt entities from the database.  However, in extreme cases, there may be no alternative but to re-build the Entity Database from scratch.

By default, the Entity Database is found in `iwgethome`/local, and most TeamSite installations use this location. If there are no files in this directory, check the active iw.cfg file to see if another location for the Entity Database has been specified

Removing an Existing Entity Database

Note that any user preferences stored in the Entity Database will be lost when this procedure is followed. In current versions of TeamSite, (TS 5.0.2 and earlier, TS5.5.2 and earlier), this is the only significant side effect of replacing the Entity Database. In the future, it's possible that there will be other side effects or lost data.

Windows

  1. Stop TeamSite:
2.       net stop iwserver


3.   



  1. Rename the <iw-home>\local\entities directory for example, to entities.bak



Initializing a New (Replacement) Entity Database


There are a few 'standard' entities that are required to be in the Entity Database before some Interwoven applications will function normally. These may be added using a perl script called 'add_edb.pl'. This is the same script that the TeamSite installer program runs to create the Entity Database when TeamSite is first installed. The entities it adds are a group called 'IWGLOBAL', and eight roles. The roles are the four standard TeamSite roles, plus four others that may be needed by other optional Interwoven programs. Before running add_edb.pl, make sure that the TeamSite server is running. The add_edb script uses the 'iwuser' command line tool to do its work, and this tool needs to communicate with iwserver.



Run this script with one argument - the location of the iwhome directory, which can be found by issuing the `iwgethome` command. You will see nine data files in entities/data when this script is finished. The index and the other data files will be re-generated automatically, one at a time, as each user logs on. If you do not see the expected nine data files, look at the log file called add_edb.log found in `iwgethome`/install to see why it failed.



Windows



  1. Reboot the server. TeamSite will create a new entities directory.


  2. Run the following command to recreate the entity database:



<iw-home>\iw-perl\bin\iwperl <iw-home>\install\add_edb.pl <iw-home>

Recommendations for SharePoint Application Pool Settings

Joel Oleson's Blog

30 Free SharePoint Apps

Clicky

Enable Breadcrumb Navigation in SharePoint

by Mauro Cardarelli

I've had a few clients ask how to give users a better navigation experience through the various SharePoint pages.  To me, there are two problems... (1) navigating the page hierarchy (i.e. finding your way back to the previous pages without having to use the browser Back button) and (2) navigating to “peer” pages once you find yourself in the right section of the portal.

For peer navigation I often use a simple list web part with all peers defined.  In one case, I created a “tab-like” navigation at the top of the page using HTML (through FrontPage 2003).  It actually worked out very well but is not the easiest thing to scale... you have to use your templates!  For page hierarchies, I recommend breadcrumb navigation.  It is also simple but works well.  There are a few third party web parts available but this also comes with native SharePoint.  Here is how you enable breadcrumb navigation...

1. Open any of the default.aspx pages for an area template. For example, the SPSTOPIC\default.aspx page.  These are located in the SharePoint file collection (i.e. \Program Files\Common Files\...)

2. Locate the following code that renders the page title:

< tr> < td ID="onetidPageTitle" class="ms-pagetitle"> <  SPSWC:CategoryProperty runat="server" Property="Name" />< /td> < /tr>

3. Comment this entry

4. Replace the code with the following:

< tr>< td> < SPSWC:BreadCrumbTrail runat="server" id="BreadCrumbTrail2" TitleLocId=MultiPage_BreadcrumbWebPartTitle VerticalMode = "false" FrameType="None" /> < /td>< /tr>

(remove the spaces I placed after the '<' ... this text editor does weird things with my HTML!)

5. Save  your changes

Published Saturday, July 23, 2005 5:48 AM by Mauro

Time Problems

From

Q: One of our networking workstation displays "The current SNTP value is: time.windows.com,0x1" when using net time /querysntp. I thought it should synchronize the time with DC. Why?

A: It is because the regedit has NtpSever poiting to the Time.Windows.Com. In many cases, you may have this settings if you install a computer in a workgroup and then upgare it to the domain computer. The computer still synchronize the DC time if the regedit has Type = NT5DS.

SQL Problems with SharePoint

Address Windowing Extensions (AWE)

from a quote:

Unlike most applications, you can configure SQL Server to use more than 2 GB of RAM by enabling the AWE (Address Windowing Extensions) memory setting, either on the same memory screen or via the sp_configure procedure by adjusting the "AWE enabled" setting. Both of these are advanced settings that cannot be seen without enabling the "show advanced options" setting.

SP2 for Sharepoint

Clicky

Setting the SharePoint 2007 Navigation Flyout Level

One of the biggest improvements with SharePoint 2007 has been navigation.  The breadcrumbs help and the tabs make a lot of sense.  One of the nice features of the tabs is that you can have an automatic flyout menu for subsites.  Let's say you have a top level 'Clients' tab with a subsite per client.  The navigation will allow you to hover over the 'Clients' tab and see a flyout menu with links to each client site (automatically).  Very nice!

Let's say you have Project sites per client.  When you hover over your Clients tab, you don't get an automatic second level for project sites.  Why?  The default setting is set to only show one level for the flyout.  How do you change it?  Look for the 'MaximumDynamicDisplayLevels' property in the default.master file.  It is set to '1'.  Change it to '2' and you have two levels of flyout navigation from your top site.  Done.

Published Wednesday, May 30, 2007 5:31 PM by Mauro

Adding an extra server to an existing SharePoint farm

by Christian Dam

Extend Drives on VM

Clicky

How to create your own custom 404 error page and handle redirect in SharePoint 2007 (MOSS)?

blog.rafelo.com

Jingmei Li's MSDN Blog

Favicon in SharePoint

Peter Alan

I just added my favicon to my site. Here is how I did it:

1) Saved the favicon.ico file in my Images library.
2) Edited the Master page and add the following code, I have an absolute link for my icon.
<link rel="shortcut icon" href="http://www.*.com/images/favicon.ico">

This worked great. Remember that you have to do this in every master page on your site if you want it to show up in the other sites.

Also, I found that if I changed the favicon, I was trying different ones, that I would have to close all my browsers for it to refresh to the new favicon, it seems that the browser caches the favicon.

Closed WebParts

http://yoursite/whatever/default.aspx?contents=1

also to access the "Edit Page" mode:

?ToolPaneView=2

Black Lists

http://whatismyipaddress.com/staticpages/index.php/is-my-ip-address-blacklisted

https://www.us.sorbs.net/

Adding robots.txt to SharePoint

by Randy Drisgill

Friend of mine asked me about this today and I had to look it up because its been a while since I have done anything with robots.txt. Turns out its not as easy as just adding the robots.txt file to the web server root. SharePoint likes to block access to the file, so you will need to add a managed path from Central Admin.
Here are the steps:

  1. Open Central Admin and navigate to Application Management > Define Managed Paths
  2. Select your specific web application from the drop down
  3. Add a new path for /robots.txt
  4. Switch the type to Explicit inclusion
  5. Click OK
  6. Run IISREST

This is all you need to do, but if you still get a permissions problem, right-click on robots.txt and give "Everyone" Read permissions to the file.

Posted by Randy Drisgill Monday, January 26, 2009

MOSS SEO – 302 Pages Redirect

by Kerry

Wednesday, October 14, 2009

Programmatically Purge Logs Files on an Age Basis

Programmatically Purge Logs Files on an Age Basis
By Pierre Marmignon @ 4:29 PM :: 266 Views :: 0 Comments :: clip_image001:: Scripting, Tech Tips

Looking for Automation of Maintenance tasks, I've had to write a script that'll run as a scheduled task to Purge Log Files, but only logs older than a specified number of days.

Googling to find if that kind of script already exists I've found a nice blog with some example I've used to start.

I've worked on this script to adapt it to my needs and came with two new scripts.

These new scripts have been designed to run as Scheduled Tasks so they're logging everything within the Application EventLog.

You can set the file extension so they're easily adaptable to purge other kind of files (like backups for example).

The first one has been designed to clean the "C:\WINDOWS\system32\LogFiles" Root. It'll parse the 1-Level Subfolders and delete every log file that meets the specified criteria.

That's very useful for a IIS Server hosting a Default Web Interface installation (or another Website) because It'll clean every IIS Site Logs (if stored in the default location) but also the "HTTPERR" Logs.

As this kind of script could be dangerous, the Delete Action has been commented and you'll have to uncomment it when you have tested the script is working correctly in your environment (because basically It'll log but not delete).

Purge Logs Files within 1-Level Subfolders (Case "C:\WINDOWS\system32\LogFiles")

'---------------------------------------------------------------------------------

Option Explicit
On Error Resume Next
Dim intDaysOld, strObjTopFolderPath, strLogFIleSuffix, ObjFS, ObjTopFolder, objShell, tmpObjFileName
Dim ObjLogFolder, ObjW3SvcFolder, ObjSubFolder, ObjLogFile, ObjFile
intDaysOld = 5 'Number of days to retain on the server
strObjTopFolderPath    = "C:\WINDOWS\system32\LogFiles" 'The location of your log files Subfolders
strLogFileSuffix    = ".log" 'The suffix of your log files
Set ObjFS = CreateObject("Scripting.FileSystemObject")
Set ObjTopFolder = ObjFS.GetFolder(strObjTopFolderPath)
Set objShell = Wscript.CreateObject("Wscript.Shell")
PurgeLogs()
Sub PurgeLogs()
    WriteLog 0,"Purge Logs Script Starting with Root Folder: " & ObjTopFolder.Path
For Each ObjLogFolder in ObjTopFolder.SubFolders
            WriteLog 0,"Purge Logs Script Parsing SubFolder: " & ObjLogFolder.name
Set ObjSubFolder = ObjFS.GetFolder(ObjLogFolder)
                For each ObjLogFile in ObjSubFolder.files
On Error Resume Next
Err.Clear
Set ObjFile = ObjFS.GetFile(ObjLogFile)
If datediff("d",ObjFile.DateLastModified,Date()) > intDaysOld and lcase(right(ObjLogFile,len(strLogFileSuffix)))=strLogFileSuffix then
                            tmpObjFileName = ObjFile.Name
'*****************************************************
                            'DON'T UNCOMMENT THIS UNTIL YOU KNOW IT WORKS PROPERLY!!!
                            'ObjFile.Delete
                            '*****************************************************
If Not Err then
                                WriteLog 8,"Purge Logs Script has Deleted SucessFully " & ObjSubFolder.name & "\" & tmpObjFileName
Else
                                WriteLog 16,"Purge Logs Script Error While Deleting " & ObjSubFolder.name & "\" & tmpObjFileName
End If
                        End If   
                    Set ObjFile = nothing
Next
Set ObjSubFolder = nothing
Next
Set ObjTopFolder = nothing
Set ObjFS = nothing
End Sub
Sub WriteLog(evType,msg)
on error resume next
Err.Clear
    objShell.LogEvent evType, msg
End Sub

'---------------------------------------------------------------------------------

Purge Logs Files within a specified Folder (Case "C:\WINDOWS\system32\LogFiles\W3SVC1")

This other script has been designed to delete Log Files only within a specified folder, but you can also use it to purge, for example, daily backups after one week or one month.

'---------------------------------------------------------------------------------

Option Explicit
On Error Resume Next
Dim intDaysOld, strObjTopFolderPath, strLogFIleSuffix, ObjFS, ObjTopFolder, objShell, tmpObjFileName
Dim ObjLogFolder, ObjW3SvcFolder, ObjSubFolder, ObjLogFile, ObjFile
intDaysOld = 5 'Number of days to retain on the server
strObjTopFolderPath    = "C:\WINDOWS\system32\LogFiles" 'The location of your log files
strLogFileSuffix    = ".log" 'The suffix of your log files
Set ObjFS = CreateObject("Scripting.FileSystemObject")
Set ObjTopFolder = ObjFS.GetFolder(strObjTopFolderPath)
Set objShell = Wscript.CreateObject("Wscript.Shell")
PurgeLogs()
Sub PurgeLogs()
    WriteLog 0,"Purge Logs Script Starting with Root Folder: " & ObjTopFolder.Path
For each ObjLogFile in ObjTopFolder.files
On Error Resume Next
Err.Clear
Set ObjFile = ObjFS.GetFile(ObjLogFile)
If datediff("d",ObjFile.DateLastModified,Date()) > intDaysOld and lcase(right(ObjLogFile,len(strLogFileSuffix)))=strLogFileSuffix then
                    tmpObjFileName = ObjFile.Name
'*****************************************************
                    'DON'T UNCOMMENT THIS UNTIL YOU KNOW IT WORKS PROPERLY!!!
                    'ObjFile.Delete
                    '*****************************************************
If Not Err then
                            WriteLog 8,"Purge Logs Script has Deleted SucessFully " & ObjTopFolder.name & "\" & tmpObjFileName
Else
WriteLog 16,"Purge Logs Script Error While Deleting " & ObjTopFolder.name & "\" & tmpObjFileName
                        End If
                End If   
            Set ObjFile = nothing
Next
    Set ObjFS = nothing
End Sub
Sub WriteLog(evType,msg)
on error resume next
Err.Clear
    objShell.LogEvent evType, msg
End Sub

'---------------------------------------------------------------------------------

Purge Exports and Logs Files within specified Folders (Case Daily Exports)

This other script has been designed to delete Exports (backups) AND Log Files only within specified folders.

Initially it has been written to clear XenApp App Export Manager / XenApp Policies Export Manager Export Files and associated logs, but it can be easily adaptated to handle for example SQL dumps or any kind or backups / exports.

'---------------------------------------------------------------------------------

Option Explicit
On Error Resume Next
Dim intDaysOld, strObjTopLogsFolderPath, strObjTopExportsFolderPath, strLogFIleSuffix, strExpFileSuffix, ObjFS, objShell, tmpObjFileName
Dim ObjLogFolder, ObjW3SvcFolder, ObjTopLogsFolder, ObjTopExportsFolder, ObjLogFile, ObjExpFile, ObjFile
intDaysOld = 30 'Number of days to retain on the server
strObjTopExportsFolderPath = "\\MyServer\Exports" 'The location of your Exports files
strObjTopLogsFolderPath    = "\\MyServer\Exports\Logs" 'The location of your log files
strExpFileSuffix    = ".ctxtools" 'The suffix of your export files
strLogFileSuffix    = ".log"    'The suffix of your log files
Set ObjFS = CreateObject("Scripting.FileSystemObject")
Set ObjTopLogsFolder = ObjFS.GetFolder(strObjTopLogsFolderPath)
Set ObjTopExportsFolder = ObjFS.GetFolder(strObjTopExportsFolderPath)
Set objShell = Wscript.CreateObject("Wscript.Shell")
PurgeExports()
PurgeLogs()
Sub PurgeExports()
    WriteLog 0,"Purge Exports Files Task Starting with Root Folder: " & ObjTopExportsFolder.Path
For each ObjExpFile in ObjTopExportsFolder.files
On Error Resume Next
Err.Clear
Set ObjFile = ObjFS.GetFile(ObjExpFile)
  If datediff("d",ObjFile.DateLastModified,Date()) > intDaysOld and lcase(right(ObjExpFile,len(strExpFileSuffix)))=strExpFileSuffix then
                    tmpObjFileName = ObjFile.Name
'*****************************************************
                    'DON'T UNCOMMENT THIS UNTIL YOU KNOW IT WORKS PROPERLY!!!
                    'ObjFile.Delete
                    '*****************************************************
If Not Err then
                            WriteLog 8,"Purge Exports Files Task has Deleted SucessFully " & ObjTopExportsFolder.name & "\" & tmpObjFileName
Else
                            WriteLog 16,"Purge Exports Files Task Error While Deleting " & ObjTopExportsFolder.name & "\" & tmpObjFileName
End If
  End If   
Set ObjFile = nothing
  Next
End Sub
Sub PurgeLogs()
    WriteLog 0,"Purge Export Logs Files Task Starting with Root Folder: " & ObjTopLogsFolder.Path
For each ObjLogFile in ObjTopLogsFolder.files
On Error Resume Next
            Err.Clear
Set ObjFile = ObjFS.GetFile(ObjLogFile)
If datediff("d",ObjFile.DateLastModified,Date()) > intDaysOld and lcase(right(ObjLogFile,len(strLogFileSuffix)))=strLogFileSuffix then
                    tmpObjFileName = ObjFile.Name
'*****************************************************
                    'DON'T UNCOMMENT THIS UNTIL YOU KNOW IT WORKS PROPERLY!!!
                    'ObjFile.Delete
                    '*****************************************************
If Not Err then
                            WriteLog 8,"Purge Export Logs Files Task has Deleted SucessFully " & ObjTopLogsFolder.name & "\" & tmpObjFileName
  Else
                            WriteLog 16,"Purge Export Logs Files Task Error While Deleting " & ObjTopLogsFolder.name & "\" & tmpObjFileName
End If
                End If   
            Set ObjFile = nothing
Next
End Sub
Sub WriteLog(evType,msg)
on error resume next
Err.Clear
    objShell.LogEvent evType, msg
End Sub

'---------------------------------------------------------------------------------

Tuesday, October 13, 2009

Testing Cross Posting with xPollinate

Adding robots.txt to SharePoint

by Randy Drisgill

Friend of mine asked me about this today and I had to look it up because its been a while since I have done anything with robots.txt. Turns out its not as easy as just adding the robots.txt file to the web server root. SharePoint likes to block access to the file, so you will need to add a managed path from Central Admin.
Here are the steps:

  1. Open Central Admin and navigate to Application Management > Define Managed Paths
  2. Select your specific web application from the drop down
  3. Add a new path for /robots.txt
  4. Switch the type to Explicit inclusion
  5. Click OK
  6. Run IISREST

This is all you need to do, but if you still get a permissions problem, right-click on robots.txt and give "Everyone" Read permissions to the file.

Posted by Randy Drisgill Monday, January 26, 2009

Thursday, June 11, 2009

H700

Linky Dinky Do

Voice Dialing

*FIX
From the Desktop Manager, I performed a soft reload (selecting the App Loader, advanced, erase all app data, Auto backup/restore option).
Took about 45mins
So far, no lockups when using voice dialing and/or my bluetooth headset.

Tuesday, June 9, 2009

Possible cause of periodic IE crash in SharePoint

by Rebecca Watson

If different version of Office products are installed, IE may crash intermittently when viewing SharePoint, for example, when trying to open an office document or clicking "edit in datasheet".

This may be due to conflicting DLLs--one for Office version 11 and one for Office version 12. Usually due to a blended Office install, ie, SharePoint Designer 2007 or Visio 2007 may be installed, but every other Office product is still 2003.

Look for owssupp.dll. You'll likely find it in 2 places, c:\Program Files\Microsoft Office\Office12\owssupp.dll and c:\Program Files\Microsoft Office\Office11\owssupp.dll. These guys are butting heads and the likely cause of the crashes.

Rename the Office 12 version to .old, leaving the Office 11 as is.

(c:\Program Files\Microsoft Office\Office12\owssupp.old)

Friday, June 5, 2009

Appalachian Trail


Trip to Springer Mountain – Start of the A.T.

From Left to Right Standing - Paul, Luis, Me, Jeremy, Eric, Rex, Manuel, Wyatt, Manuel (Squatting).