GetProcessSample03 – exempel
Det här exemplet visar hur du implementerar en cmdlet som hämtar processerna på den lokala datorn. Den innehåller en parameter som kan acceptera ett objekt från pipelinen eller ett värde från en egenskap för ett objekt vars egenskapsnamn är Name
samma som parameternamnet. Denna cmdlet är en förenklad version av Get-Process
cmdleten som tillhandahålls av Windows PowerShell 2.0.
Skapa exemplet med hjälp av Visual Studio.
När du Windows PowerShell 2.0 SDK navigerar du till mappen GetProcessSample03. Standardplatsen är C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0\Samples\sysmgmt\WindowsPowerShell\csharp\GetProcessSample03.
Dubbelklicka på ikonen för lösningsfilen (.sln). Exempelprojektet öppnas i Visual Studio.
I menyn Build (Skapa) väljer du Build Solution (Skapa lösning).
Biblioteket för exemplet kommer att byggas i standardmapparna \bin eller \bin\debug.
Köra exemplet
Skapa följande modulmapp:
[user]/documents/windowspowershell/modules/GetProcessSample03
Kopiera 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 getprossessample03
Kör cmdleten genom att köra följande kommando:
get-proc
Krav
Det här exemplet kräver Windows PowerShell 2.0.
Demonstrationer
Det här exemplet visar följande.
Deklarera en cmdlet-klass med hjälp av cmdlet-attributet.
Deklarera en cmdlet-parameter med attributet Parameter.
Ange positionen för parametern.
Ange att parametern tar indata från pipelinen. Indata kan tas från ett objekt eller ett värde från en egenskap för ett objekt vars egenskapsnamn är samma som parameternamnet.
Deklarera ett valideringsattribut för parameterindata.
Exempel
Det här exemplet visar en implementering av Get-Proc cmdlet som innehåller en Name
parameter som accepterar indata från pipelinen.
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 names of the
/// process that the cmdlet will retrieve.
/// </summary>
[Parameter(
Position = 0,
ValueFromPipeline = true,
ValueFromPipelineByPropertyName = true)]
[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 the cmdlet, get and write
// the associated processes.
foreach (string name in this.processNames)
{
WriteObject(Process.GetProcessesByName(name), true);
}
} // End if (processNames ...)
} // End ProcessRecord.
#endregion Overrides
} // End GetProcCommand.
#endregion GetProcCommand
}
Se även
Feedback
https://aka.ms/ContentUserFeedback.
Kommer snart: Under hela 2024 kommer vi att fasa ut GitHub-problem som feedbackmekanism för innehåll och ersätta det med ett nytt feedbacksystem. Mer information finns i:Skicka och visa feedback för