// // Copyright (c) 2006 Microsoft Corporation. All rights reserved. // // THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF // ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO // THE IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A // PARTICULAR PURPOSE. // using System; using System.Collections.Generic; using System.Text; using System.Globalization; using System.Management.Automation; using System.Management.Automation.Host; using System.Management.Automation.Runspaces; namespace Microsoft.Samples.PowerShell.Host { /// /// A sample implementation of the PSHost abstract class for console /// applications. Not all members are implemented. Those that aren't /// throw a NotImplementedException. /// class MyHost : PSHost { /// /// Construct an instance of this PSHost implementation. Keep /// a reference to the hosting application object so it can /// be informed of when to exit. /// /// /// A reference to the host application object. /// public MyHost(Host01 program) { this.program = program; } private Host01 program; /// /// Return the culture info to use - this implementation just /// snapshots the curture info of the thread that created this object. /// public override System.Globalization.CultureInfo CurrentCulture { get { return originalCultureInfo; } } private CultureInfo originalCultureInfo = System.Threading.Thread.CurrentThread.CurrentCulture; /// /// Return the UI culture info to use - this implementation just /// snapshots the UI curture info of the thread that created /// this object. /// public override System.Globalization.CultureInfo CurrentUICulture { get { return originalUICultureInfo; } } private CultureInfo originalUICultureInfo = System.Threading.Thread.CurrentThread.CurrentUICulture; /// /// Not implemented by this example class. The call fails with /// an exception. /// public override void EnterNestedPrompt() { throw new NotImplementedException( "The method or operation is not implemented."); } /// /// Not implemented by this example class. The call fails /// with an exception. /// public override void ExitNestedPrompt() { throw new NotImplementedException( "The method or operation is not implemented."); } static Guid myId = Guid.NewGuid(); /// /// This implementation always returns the GUID /// allocated at instantiation time. /// public override Guid InstanceId { get { return myId; } } /// /// Return an appropriate string to identify you host implementation. /// Keep in mind that this string may be used by script writers to /// identify when your host is being used. /// public override string Name { get { return "MySampleConsoleHostImplementation"; } } /// /// This API is called before an external application process is started. /// Typically it's used to save state that the child process may alter /// so the parent can restore that state when the child exits. In this /// sample, we don't need this so the method simple returns. /// public override void NotifyBeginApplication() { return; // Do nothing... } /// /// This API is called after an external application process finishes. /// Typically it's used to restore state that the child process may /// have altered. In this sample, we don't need this so the method /// simple returns. /// public override void NotifyEndApplication() { return; // Do nothing... } /// /// Indicate to the host application that exit has /// been requested. Pass the exit code that the host /// application should use when exiting the process. /// /// public override void SetShouldExit(int exitCode) { program.ShouldExit = true; program.ExitCode = exitCode; } /// /// This sample does not implement a PSHostUserInterface component so /// this property simply returns null. /// public override PSHostUserInterface UI { get { return null; } } /// /// Return the version object for this application. Typically this /// should match the version resource in the application. /// public override Version Version { get {return new Version(1,0,0,0); } } } }