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.
Setelah membuat runspace, Anda dapat menambahkan perintah dan skrip Windows PowerShell ke alur, lalu memanggil alur secara sinkron atau asinkron.
Membuat alur
Kelas System.Management.Automation.PowerShell menyediakan beberapa metode untuk menambahkan perintah, parameter, dan skrip ke alur. Anda dapat memanggil alur secara sinkron dengan memanggil kelebihan beban metode System.Management.Automation.PowerShell.Invoke*, atau secara asinkron dengan memanggil kelebihan beban System.Management.Automation.PowerShell.BeginInvoke* lalu metode System.Management.Automation.PowerShell.EndInvoke*.
TambahkanCommand
Buat objek System.Management.Automation.PowerShell.
PowerShell ps = PowerShell.Create();
Tambahkan perintah yang ingin Anda jalankan.
ps.AddCommand("Get-Process");
Panggil perintah .
ps.Invoke();
Jika Anda memanggil metode System.Management.Automation.PowerShell.AddCommand* lebih dari sekali sebelum Anda memanggil metode System.Management.Automation.PowerShell.Invoke*, hasil perintah pertama disalurkan ke yang kedua, dan sebagainya. Jika Anda tidak ingin menyalurkan hasil perintah sebelumnya ke perintah, tambahkan dengan memanggil System.Management.Automation.PowerShell.AddStatement* sebagai gantinya.
AddParameter
Contoh sebelumnya menjalankan satu perintah tanpa parameter apa pun. Anda dapat menambahkan parameter ke perintah dengan menggunakan metode System.Management.Automation.PSCommand.AddParameter* Misalnya, kode berikut mendapatkan daftar semua proses yang diberi nama powershell
berjalan di komputer.
PowerShell.Create().AddCommand("Get-Process")
.AddParameter("Name", "powershell")
.Invoke();
Anda dapat menambahkan parameter tambahan dengan memanggil System.Management.Automation.PSCommand.AddParameter* berulang kali.
PowerShell.Create().AddCommand("Get-Command")
.AddParameter("Name", "Get-VM")
.AddParameter("Module", "Hyper-V")
.Invoke();
Anda juga dapat menambahkan kamus nama dan nilai parameter dengan memanggil metode System.Management.Automation.PowerShell.AddParameters*.
IDictionary parameters = new Dictionary<String, String>();
parameters.Add("Name", "Get-VM");
parameters.Add("Module", "Hyper-V");
PowerShell.Create().AddCommand("Get-Command")
.AddParameters(parameters)
.Invoke()
AddStatement
Anda dapat mensimulasikan batching dengan menggunakan metode System.Management.Automation.PowerShell.AddStatement*, yang menambahkan pernyataan tambahan ke akhir alur Kode berikut mendapatkan daftar proses yang berjalan dengan nama powershell
, lalu mendapatkan daftar layanan yang sedang berjalan.
PowerShell ps = PowerShell.Create();
ps.AddCommand("Get-Process").AddParameter("Name", "powershell");
ps.AddStatement().AddCommand("Get-Service");
ps.Invoke();
Tambahkan Skrip
Anda dapat menjalankan skrip yang ada dengan memanggil metode System.Management.Automation.PowerShell.AddScript*. Contoh berikut menambahkan skrip ke alur dan menjalankannya. Contoh ini mengasumsikan sudah ada skrip bernama MyScript.ps1
dalam folder bernama D:\PSScripts
.
PowerShell ps = PowerShell.Create();
ps.AddScript(File.ReadAllText(@"D:\PSScripts\MyScript.ps1")).Invoke();
Ada juga versi metode System.Management.Automation.PowerShell.AddScript* yang mengambil parameter boolean bernama useLocalScope
. Jika parameter ini diatur ke true
, maka skrip dijalankan dalam cakupan lokal. Kode berikut akan menjalankan skrip dalam cakupan lokal.
PowerShell ps = PowerShell.Create();
ps.AddScript(File.ReadAllText(@"D:\PSScripts\MyScript.ps1"), true).Invoke();
Memanggil alur secara sinkron
Setelah Anda menambahkan elemen ke alur, Anda memanggilnya. Untuk memanggil alur secara sinkron, Anda memanggil kelebihan beban metode System.Management.Automation.PowerShell.Invoke*. Contoh berikut menunjukkan cara memanggil alur secara sinkron.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Management.Automation;
namespace HostPS1e
{
class HostPS1e
{
static void Main(string[] args)
{
// Using the PowerShell.Create and AddCommand
// methods, create a command pipeline.
PowerShell ps = PowerShell.Create().AddCommand ("Sort-Object");
// Using the PowerShell.Invoke method, run the command
// pipeline using the supplied input.
foreach (PSObject result in ps.Invoke(new int[] { 3, 1, 6, 2, 5, 4 }))
{
Console.WriteLine("{0}", result);
} // End foreach.
} // End Main.
} // End HostPS1e.
}
Memanggil alur secara asinkron
Anda memanggil alur secara asinkron dengan memanggil kelebihan beban System.Management.Automation.PowerShell.BeginInvoke* untuk membuat objek IAsyncResult, lalu memanggil metode System.Management.Automation.PowerShell.EndInvoke*.
Contoh berikut menunjukkan cara memanggil alur secara asinkron.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Management.Automation;
namespace HostPS3
{
class HostPS3
{
static void Main(string[] args)
{
// Use the PowerShell.Create and PowerShell.AddCommand
// methods to create a command pipeline that includes
// Get-Process cmdlet. Do not include spaces immediately
// before or after the cmdlet name as that will cause
// the command to fail.
PowerShell ps = PowerShell.Create().AddCommand("Get-Process");
// Create an IAsyncResult object and call the
// BeginInvoke method to start running the
// command pipeline asynchronously.
IAsyncResult asyncpl = ps.BeginInvoke();
// Using the PowerShell.Invoke method, run the command
// pipeline using the default runspace.
foreach (PSObject result in ps.EndInvoke(asyncpl))
{
Console.WriteLine("{0,-20}{1}",
result.Members["ProcessName"].Value,
result.Members["Id"].Value);
} // End foreach.
System.Console.WriteLine("Hit any key to exit.");
System.Console.ReadKey();
} // End Main.
} // End HostPS3.
}
Lihat Juga
Membuat InitialSessionState
Membuat runspace yang dibatasi