Saturday, May 28, 2011

Analyse event logs for Service Control Manager activities from windowsservices

Sometime you might want to start and stop kind of activities out of event logs for windows services . here is powershell script for this
$eventL = Get-EventLog -LogName "System" -Source "Service Control Manager" ;
Get-Service | ForEach-Object {
$st1 = "";
$st2 = "";
$st3 = "";
$st1 = $_.Status;
$st2 = $_.DisplayName;
$st3 = $_.Name;

#Write-Host $st1 $st2 $st3 -foregroundcolor cyan;

$eventL | where { $_.Message.Contains($st2) -eq "true" } | Select-Object -First 1 | ForEach-Object {

Write-Host $st1 $st2 $st3 -foregroundcolor cyan;
$st4 = "";
$st5 = "";
$st4 = $_.Message;
$st5 = $_.TimeGenerated;
Write-Host $st4 $st5;

}

}
$eventL = $null;

Now that you have decided the culprit windows service, use this script to get whole available history:

$eventL = Get-EventLog -LogName "System" -Source "Service Control Manager" ;

Get-Service | ForEach-Object {

if($_.Name -eq "AAAAAAAAAAAA"){

$st1 = "";
$st2 = "";
$st3 = "";
$st1 = $_.Status;
$st2 = $_.DisplayName;
$st3 = $_.Name;

#Write-Host $st1 $st2 $st3 -foregroundcolor cyan;

$eventL | where { $_.Message.Contains($st2) -eq "true" } | ForEach-Object {

#Write-Host $st1 $st2 $st3 -foregroundcolor cyan;
$st4 = "";
$st5 = "";
$st4 = $_.Message;
$st5 = $_.TimeGenerated;
Write-Host $st4 $st5;

}

}

}
$eventL = $null;

Might be the case , you only want to list down which service is stopped and which one is active :

Get-Service | ForEach-Object {

$st1 = "";
$st2 = "";
$st3 = "";
$st1 = $_.Status;
$st2 = $_.DisplayName;
$st3 = $_.Name;

Write-Host $st1 "," $st2 "," $st3 -foregroundcolor cyan;

}

You may also like:


get last app pool recycle timings

Wednesday, May 25, 2011

Multiple TargetPath under EcmDocumentRouterRule | EcmDocumentRouter , Content Organizer Rules , SharePoint 2010

In SharePoint 2010 with Content organizer  Feature, we can route a document to the target based on predefined rules.

If multiple rules condition satisfy for current document being put in drop off library, priority of rule decides which rule will run.

 

My requirement is :

Either

1. Run multiple rules for single document so that same document may be routed to multiple targets.

Or

2. Under single rule define multiple targetpath so that single document may be routed to multiple locations base don predefined rules.

 

Reference :

http://msdn.microsoft.com/en-us/library/microsoft.office.recordsmanagement.recordsrepository.ecmdocumentrouterrule_properties.aspx

Reply 1 By http://social.technet.microsoft.com/profile/kefang%20chen/?ws=usercard-mini

Hi,

If you want to implement the requirement you mentioned, it is not necessary to use the Content Organizer feature.

You can create an 'ItemAdded' event receiver for all the document libraries. After you uploaded document to library, you can call the method 'SPListItem.CopyTo()' to copy current document to destination.

For this topic you can see the following document.

http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.splistitem.copyto.aspx

Reply 1.1 By http://social.technet.microsoft.com/profile/mayur%20joshi/?ws=usercard-mini

Chen,

What if I want to avoid customization using Object Model. Can the content organizer then help in this. I have a similar requirement to this. I have location property which is multi value field. Based on the selections need to route the document to the appropriate folders. Can you please highlight how this can be achieved?

Thanks,

Mayur

Reply 1.1.1 By http://social.technet.microsoft.com/profile/hemantrhtk/?ws=usercard-mini

Mayur

In your case it is achivable out of box.

 

Define as much rules as much you have targets.

 

In the condition of each rule you can define, based on meta data field( which is your location ) route the document to desired target.

 Reply 1.1.1.1 by http://social.technet.microsoft.com/profile/mayur%20joshi/?ws=usercard-mini

Hemant,

Wish that was the case, i cant set as much rules because numerous permutation and combination that can happen with the countries (its a multi choice field).

I have raised another thread located here explaining the entire scenario. Any help will be highly appreciated.

Thanks,

Mayur Joshi

 

Monday, May 16, 2011

Two exactly same strings fail while comparison in c# .Net

I had an input field which had a space , some browsers were giving different hex for space in these input fields.

Finally I found , a space may not be a space there are as much as 25 different representations for space in Hex.

.Replace((char)0xA0, ' ') worked but better way is using .Normalize(System.Text.NormalizationForm.FormKC)

Reference : http://msdn.microsoft.com/en-us/library/ebza6ck1(v=vs.80).aspx
and http://msdn.microsoft.com/en-us/library/system.text.normalizationform(v=vs.80).aspx

Sunday, May 15, 2011

"Central Administration>General Application Settings>External Service Connections >Configure Send To Connections" code for this

This is the way we define a connection to a site where we would like to drop our documents.

 

Now in my case there could be hundreds of target sites created by code as and when required.

For each site created I want to write few lines of code which will do exactly what /_admin/OfficialFileAdmin.aspx  page does.

 

 

So i want code for what /_admin/OfficialFileAdmin.aspx ( Central Administration>General Application Settings>External Service Connections >Configure Send To Connections) does.

 

 

just try out like:
SPWebApplication app = SPWebApplication.Lookup(new Uri("http://hemant1236"));
SPOfficialFileHost host = new SPOfficialFileHost(true);
host.OfficialFileUrl = new Uri("http://hemant1236/testsite1/_vti_bin/officialfile.asmx");
host.OfficialFileName = "hemant1236Test1saurabh";
host.ShowOnSendToMenu = true;
host.Action = SPOfficialFileAction.Move;

host.Explanation = "created at Time" + DateTime.Now.ToString() + " by custom utility.";

app.OfficialFileHosts.Add(host);

app.Update();

Friday, May 13, 2011

Name cannot begin with the '\' character, hexadecimal value 0x5C

Hi

 

While extending a claim based web application I get the error :

Name cannot begin with the '\' character, hexadecimal value 0x5C. Line 858, position 42.

Troubleshoot issues with Microsoft SharePoint Foundation.

Correlation ID: b2bdf10b-33d2-4630-8bab-8054c6ce310c

Date and Time: 5/13/2011 3:16:10 AM

 

any idea why it happen so .

 

In the log:

 

 

05/13/2011 04:03:37.57     w3wp.exe (0x0954)                           0x1A00    SharePoint Foundation             Runtime                           tkau    Unexpected    System.Xml.XmlException: Name cannot begin with the '\' character, hexadecimal value 0x5C. Line 858, position 42.    at System.Xml.XmlTextReaderImpl.Throw(Exception e)     at System.Xml.XmlTextReaderImpl.ParseAttributes()     at System.Xml.XmlTextReaderImpl.ParseElement()     at System.Xml.XmlTextReaderImpl.ParseElementContent()     at System.Xml.XmlLoader.LoadNode(Boolean skipOverWhitespace)     at System.Xml.XmlLoader.LoadDocSequence(XmlDocument parentDoc)     at System.Xml.XmlDocument.Load(XmlReader reader)     at System.Xml.XmlDocument.Load(String filename)     at Microsoft.SharePoint.Administration.SPAspConfigurationFile.ApplyZoneSettingsToWebConfig(Uri responseUri, SPIisSettings settings)     at Microsoft.SharePoint.Administration.SPWebApplication.Provision()     at Microsoft.SharePo...    16bc3d6e-05e4-45d0-984c-813ed7e0c515
05/13/2011 04:03:37.57*    w3wp.exe (0x0954)                           0x1A00    SharePoint Foundation             Runtime                           tkau    Unexpected    ...int.ApplicationPages.ExtendWebFarmPage.BtnSubmit_Click(Object sender, EventArgs e)     at System.Web.UI.WebControls.Button.OnClick(EventArgs e)     at System.Web.UI.WebControls.Button.RaisePostBackEvent(String eventArgument)     at System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument)     at System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)    16bc3d6e-05e4-45d0-984c-813ed7e0c515

Reply 1


In the app keys for main web application which is being extended; there was a key which referred a shared location like : "\\hemant1236\dropOff". The characters \\ in this app keys were the culprit. When I commented out this key , the web application was able to extend successfully.