Not
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Det här exemplet visar hur du skriver en cmdlet som hämtar processerna på den lokala datorn. Den innehåller en Name parameter som kan användas för att ange de processer som ska hämtas. Den här cmdleten är en förenklad version av cmdleten Get-Process som tillhandahålls av Windows PowerShell 2.0.
Så här skapar du exemplet med Hjälp av Visual Studio
Med Windows PowerShell 2.0 SDK installerat går du till mappen GetProcessSample02. Standardplatsen är
C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0\Samples\sysmgmt\WindowsPowerShell\csharp\GetProcessSample02.Dubbelklicka på ikonen för lösningsfilen (.sln). Då öppnas exempelprojektet i Visual Studio.
På menyn Build väljer du Build Solution för att skapa biblioteket för exemplet i standardmapparna
\bineller\bin\debug.
Så här kör du exemplet
Skapa följande modulmapp:
[user]\Documents\WindowsPowerShell\Modules\GetProcessSample02Kopiera exempelsammansättningen till modulmappen.
Starta Windows PowerShell
Kör följande kommando för att läsa in sammansättningen i Windows PowerShell:
Import-Module getprossessample02Kör följande kommando för att köra cmdleten:
Get-Proc
Krav
Det här exemplet kräver Windows PowerShell 2.0.
Demonstrerar
Det här exemplet visar följande.
Deklarera en cmdlet-klass med hjälp av cmdlet-attributet.
Deklarera en cmdlet-parameter med parameterattributet.
Ange parameterns position.
Deklarera ett valideringsattribut för parameterindata.
Exempel
Det här exemplet visar en implementering av cmdleten Get-Proc som innehåller en Name parameter.
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 retrieved by the cmdlet.
/// </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 process objects 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);
}
} // End if (processNames...).
} // End ProcessRecord.
#endregion Cmdlet Overrides
} // End GetProcCommand class.
#endregion GetProcCommand
}