Ukázka Runspace06
Tento příklad ukazuje, jak přidat modul do objektu System. Management. Automation. prostředí runspace. Initialsessionstate , aby byl modul načten při otevření prostředí runspace. Modul poskytuje rutinu Get-Proc (definovaná ve vzorku GetProcessSample02), která se spouští synchronně pomocí objektu System. Management. Automation. PowerShell .
Požadavky
tato ukázka vyžaduje Windows PowerShell 2,0.
Demonstruje
Tato ukázka demonstruje následující.
Vytváření objektu System. Management. Automation. prostředí runspace. Initialsessionstate
Přidání modulu do objektu System. Management. Automation. prostředí runspace. Initialsessionstate
Vytvoření objektu System. Management. Automation. prostředí runspace. runspace , který používá objekt System. Management. Automation. prostředí runspace. Initialsessionstate .
Vytváří se objekt System. Management. Automation. PowerShell , který používá prostředí runspace.
Přidání rutiny Get-proc modulu do kanálu objektu System. Management. Automation. PowerShell .
Synchronní spuštění příkazu.
Extrahování vlastností z objektů System. Management. Automation. PSObject vrácených příkazem
Příklad
Tato ukázka vytvoří prostředí runspace, které používá objekt System. Management. Automation. prostředí runspace. Initialsessionstate k definování prvků, které jsou k dispozici při otevření prostředí runspace. V této ukázce je modul, který definuje rutinu Get-Proc, přidán do počátečního stavu relace.
namespace Microsoft.Samples.PowerShell.Runspaces
{
using System;
using System.Collections.ObjectModel;
using System.Management.Automation;
using System.Management.Automation.Runspaces;
using PowerShell = System.Management.Automation.PowerShell;
/// <summary>
/// This class contains the Main entry point for this host application.
/// </summary>
internal class Runspace06
{
/// <summary>
/// This sample shows how to define an initial session state that is
/// used when creating a runspace. The sample invokes a command from
/// a binary module that is loaded by the initial session state.
/// </summary>
/// <param name="args">Parameter not used.</param>
/// <remarks>
/// This sample assumes that user has coppied the GetProcessSample02.dll
/// that is produced by the GetProcessSample02 sample to the current
/// directory.
/// This sample demonstrates the following:
/// 1. Creating a default initial session state.
/// 2. Adding a module to the initial session state.
/// 3. Creating a runspace that uses the initial session state.
/// 4. Creating a PowerShell object that uses the runspace.
/// 5. Adding the module's get-proc cmdlet to the PowerShell object.
/// 6. Running the command synchronously.
/// 7. Using PSObject objects to extract and display properties from
/// the objects returned by the cmdlet.
/// </remarks>
private static void Main(string[] args)
{
// Create the default initial session state and add the module.
InitialSessionState iss = InitialSessionState.CreateDefault();
iss.ImportPSModule(new string[] { @".\GetProcessSample02.dll" });
// Create a runspace. Notice that no PSHost object is supplied to the
// CreateRunspace method so the default host is used. See the Host
// samples for more information on creating your own custom host.
using (Runspace myRunSpace = RunspaceFactory.CreateRunspace(iss))
{
myRunSpace.Open();
// Create a PowerShell object.
using (PowerShell powershell = PowerShell.Create())
{
// Add the cmdlet and specify the runspace.
powershell.AddCommand(@"GetProcessSample02\get-proc");
powershell.Runspace = myRunSpace;
Collection<PSObject> results = powershell.Invoke();
Console.WriteLine("Process HandleCount");
Console.WriteLine("--------------------------------");
// Display the results.
foreach (PSObject result in results)
{
Console.WriteLine(
"{0,-20} {1}",
result.Members["ProcessName"].Value,
result.Members["HandleCount"].Value);
}
}
// Close the runspace to release any resources.
myRunSpace.Close();
}
System.Console.WriteLine("Hit any key to exit...");
System.Console.ReadKey();
}
}
}
Viz také
Váš názor
https://aka.ms/ContentUserFeedback.
Připravujeme: V průběhu roku 2024 budeme postupně vyřazovat Problémy GitHubu jako mechanismus zpětné vazby pro obsah a nahradíme ho novým systémem zpětné vazby. Další informace najdete tady:Odeslat a zobrazit názory pro