Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Untuk alasan performa atau keamanan, Anda mungkin ingin membatasi perintah Windows PowerShell yang tersedia untuk aplikasi host Anda. Untuk melakukan ini, Anda membuat kosong System.Management.Automation.Runspaces.InitialSessionState dengan memanggil metode System.Management.Automation.Runspaces.InitialSessionState.Create*, lalu tambahkan hanya perintah yang Anda inginkan yang tersedia.
Menggunakan runspace yang hanya memuat perintah yang Anda tentukan memberikan performa yang ditingkatkan secara signifikan.
Anda menggunakan metode kelas System.Management.Automation.Runspaces.SessionStateCmdletEntry untuk menentukan cmdlet untuk status sesi awal.
Anda juga dapat membuat perintah menjadi privat. Perintah privat dapat digunakan oleh aplikasi host, tetapi tidak oleh pengguna aplikasi.
Menambahkan perintah ke runspace kosong
Contoh berikut menunjukkan cara membuat InitialSessionState kosong dan menambahkan perintah ke dalamnya.
namespace Microsoft.Samples.PowerShell.Runspaces
{
using System;
using System.Collections.ObjectModel;
using System.Management.Automation;
using System.Management.Automation.Runspaces;
using Microsoft.PowerShell.Commands;
using PowerShell = System.Management.Automation.PowerShell;
/// <summary>
/// This class contains the Main entry point for the application.
/// </summary>
internal class Runspace10b
{
/// <summary>
/// This sample shows how to create an empty initial session state,
/// how to add commands to the session state, and then how to create a
/// runspace that has only those two commands. A PowerShell object
/// is used to run the Get-Command cmdlet to show that only two commands
/// are available.
/// </summary>
/// <param name="args">Parameter not used.</param>
private static void Main(string[] args)
{
// Create an empty InitialSessionState and then add two commands.
InitialSessionState iss = InitialSessionState.Create();
// Add the Get-Process and Get-Command cmdlets to the session state.
SessionStateCmdletEntry ssce1 = new SessionStateCmdletEntry(
"Get-Process",
typeof(GetProcessCommand),
null);
iss.Commands.Add(ssce1);
SessionStateCmdletEntry ssce2 = new SessionStateCmdletEntry(
"Get-Command",
typeof(GetCommandCommand),
null);
iss.Commands.Add(ssce2);
// Create a runspace.
using (Runspace myRunSpace = RunspaceFactory.CreateRunspace(iss))
{
myRunSpace.Open();
using (PowerShell powershell = PowerShell.Create())
{
powershell.Runspace = myRunSpace;
// Create a pipeline with the Get-Command command.
powershell.AddCommand("Get-Command");
Collection<PSObject> results = powershell.Invoke();
Console.WriteLine("Verb Noun");
Console.WriteLine("----------------------------");
// Display each result object.
foreach (PSObject result in results)
{
Console.WriteLine(
"{0,-20} {1}",
result.Members["verb"].Value,
result.Members["Noun"].Value);
}
}
// Close the runspace and release any resources.
myRunSpace.Close();
}
System.Console.WriteLine("Hit any key to exit...");
System.Console.ReadKey();
}
}
}
Membuat perintah bersifat privat
Anda juga dapat membuat perintah privat, dengan mengaturnya properti System.Management.Automation.CommandInfo.Visibility ke System.Management.Automation.SessionStateEntryVisibilityPrivate. Aplikasi host dan perintah lain dapat memanggil perintah tersebut, tetapi pengguna aplikasi tidak dapat. Dalam contoh berikut, perintah Get-ChildItem bersifat privat.
defaultSessionState = InitialSessionState.CreateDefault();
commandIndex = GetIndexOfEntry(defaultSessionState.Commands, "Get-ChildItem");
defaultSessionState.Commands[commandIndex].Visibility = SessionStateEntryVisibility.Private;
this.runspace = RunspaceFactory.CreateRunspace(defaultSessionState);
this.runspace.Open();
Lihat Juga
Membuat InitialSessionState