// // Copyright (c) 2009 Microsoft Corporation. All rights reserved. // // DISCLAIMER OF WARRANTY: The software is licensed “as-is.” You // bear the risk of using it. Microsoft gives no express warranties, // guarantees or conditions. You may have additional consumer rights // under your local laws which this agreement cannot change. To the extent // permitted under your local laws, Microsoft excludes the implied warranties // of merchantability, fitness for a particular purpose and non-infringement. using System; using System.Diagnostics; using System.Management.Automation; //Windows PowerShell namespace using System.ComponentModel; // This sample shows how to create a simple cmdlet. To test this // cmdlet, the snapin must be registered. First, run the command: // installutil GetProcessSample01.dll // Then run: // Add-PSSnapin GetProcessSnapIn01 // After the snapin has been loaded, you can run: // get-proc namespace Microsoft.Samples.PowerShell.Commands { #region GetProcCommand /// /// This class implements the Get-Proc cmdlet. /// [Cmdlet(VerbsCommon.Get, "Proc")] public class GetProcCommand : Cmdlet { #region Cmdlet Overrides /// /// The ProcessRecord method calls the Process.GetProcesses /// method to retrieve the processes of the local computer. /// Then, the WriteObject method writes the associated processes /// to the pipeline. /// protected override void ProcessRecord() { // Retrieve the current processes. Process[] processes = Process.GetProcesses(); // Write the processes to the pipeline to make them available // to the next cmdlet. The second argument (true) tells Windows // PowerShell to enumerate the array and to send one process // object at a time to the pipeline. WriteObject(processes, true); } #endregion Overrides } //GetProcCommand #endregion GetProcCommand #region PowerShell snap-in /// /// Create this sample as an PowerShell snap-in /// [RunInstaller(true)] public class GetProcPSSnapIn01 : PSSnapIn { /// /// Create an instance of the GetProcPSSnapIn01 /// public GetProcPSSnapIn01() : base() { } /// /// Get a name for this PowerShell snap-in. This name will be used in registering /// this PowerShell snap-in. /// public override string Name { get { return "GetProcPSSnapIn01"; } } /// /// Vendor information for this PowerShell snap-in. /// public override string Vendor { get { return "Microsoft"; } } /// /// Gets resource information for vendor. This is a string of format: /// resourceBaseName,resourceName. /// public override string VendorResource { get { return "GetProcPSSnapIn01,Microsoft"; } } /// /// Description of this PowerShell snap-in. /// public override string Description { get { return "This is a PowerShell snap-in that includes the get-proc cmdlet."; } } } #endregion PowerShell snap-in }