78 lines
2.5 KiB
C#
78 lines
2.5 KiB
C#
// <copyright file="GetProcessSample02.cs" company="Microsoft Corporation">
|
|
// Copyright (c) 2009 Microsoft Corporation. All rights reserved.
|
|
// </copyright>
|
|
// 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.
|
|
|
|
namespace Microsoft.Samples.PowerShell.Commands
|
|
{
|
|
using System;
|
|
using System.Diagnostics;
|
|
using System.Management.Automation; // Windows PowerShell namespace.
|
|
#region GetProcCommand
|
|
|
|
/// <summary>
|
|
/// This class implements the get-proc cmdlet.
|
|
/// </summary>
|
|
[Cmdlet(VerbsCommon.Get, "Proc")]
|
|
public class GetProcCommand : Cmdlet
|
|
{
|
|
#region Parameters
|
|
|
|
/// <summary>
|
|
/// The names of the processes to act on.
|
|
/// </summary>
|
|
private string[] processNames;
|
|
|
|
/// <summary>
|
|
/// Gets or sets the list of process names on which
|
|
/// the Get-Proc cmdlet will work.
|
|
/// </summary>
|
|
[Parameter(Position = 0)]
|
|
[ValidateNotNullOrEmpty]
|
|
public string[] Name
|
|
{
|
|
get { return this.processNames; }
|
|
set { this.processNames = value; }
|
|
}
|
|
|
|
#endregion Parameters
|
|
|
|
#region Cmdlet Overrides
|
|
|
|
/// <summary>
|
|
/// The ProcessRecord method calls the Process.GetProcesses
|
|
/// method to retrieve the processes specified by the Name
|
|
/// parameter. Then, the WriteObject method writes the
|
|
/// associated processes to the pipeline.
|
|
/// </summary>
|
|
protected override void ProcessRecord()
|
|
{
|
|
// If no process names are passed to the cmdlet, get all
|
|
// processes.
|
|
if (this.processNames == null)
|
|
{
|
|
WriteObject(Process.GetProcesses(), true);
|
|
}
|
|
else
|
|
{
|
|
// If process names are passed to cmdlet, get and write
|
|
// the associated processes.
|
|
foreach (string name in this.processNames)
|
|
{
|
|
WriteObject(Process.GetProcessesByName(name), true);
|
|
}
|
|
} // if (processNames...
|
|
} // ProcessRecord
|
|
|
|
#endregion Cmdlet Overrides
|
|
} // End GetProcCommand class.
|
|
|
|
#endregion GetProcCommand
|
|
}
|
|
|