Runspace runspace = RunspaceFactory.CreateRunspace();
runspace.Open();
runspace.SessionStateProxy.SetVariable( "location", "c:\\" );
Pipeline pipeline = runspace.CreatePipeline();
pipeline.Commands.AddScript( "get-childitem $location" );
// this splits the output into the text and variable
Command cmd = new Command( "tee-object" );
// this is where the result array will end up
cmd.Parameters.Add( "variable", "invoke_results" );
pipeline.Commands.Add( cmd );
// forces the rest of the output to string
pipeline.Commands.Add( "out-string" );
Collection<PSObject> results = pipeline.Invoke();
var errors = pipeline.Error;
if( 0 < errors.Count )
{
// there might be more. For now, we read the first
var oneError = errors.Read( 1 );
ConsoleColor formerConsoleColor = Console.ForegroundColor;
Console.ForegroundColor = ConsoleColor.Red;
Console.WriteLine( "Error: {0}", oneError[0] );
Console.ForegroundColor = formerConsoleColor;
}
else
// hooray, no errors
{
object[] resArray = (object[])runspace.SessionStateProxy.GetVariable( "invoke_results" );
Func<List<String>, object, List<String>> nameAcc =
( n, o ) =>
{
n.Add( o.ToString() );
return n;
};
List<String> names = resArray.AsEnumerable().Aggregate( new List<String>(),
nameAcc
);
foreach( var list in names )
{
Console.WriteLine( list );
}
}
runspace.Close();
This was much easier than trying to implement my own custom host.
Wednesday, December 9, 2009
Capturing Output as String and Variable in Powershell
I'm embedding a posh shell into a C# app I'm writing, and I needed a way to capture the text output of the app, as well as the results as an array. This is what I came up with:
Labels:
powershell
Tuesday, December 8, 2009
Facebook Scalability Story
Here's a synopsis of a presentation given as part of the CNS lecture series, discussing Facebook's architecture.
Even though it is just an overview, it is pretty detailed, and gives interesting little factoids such as:
Even though it is just an overview, it is pretty detailed, and gives interesting little factoids such as:
- 600k photos/sec
- php for the front end
- 30K servers, in two datacenters
- ”Work fast and don’t be afraid to break things.”
Labels:
admin
Thursday, December 3, 2009
MS SQL Server Pivot Tables
Another one for the "don't lose me" pile...
MS SQL 2005 and onward have a
Notes here.
MS SQL 2005 and onward have a
PIVOT
function, which acts like an Excel pivot table.Notes here.
Labels:
lookat
Subscribe to:
Posts (Atom)