Ejemplo de código RunSpace03 (VB.NET)
Aquí está el código fuente de VB.NET para la aplicación de consola descrita en "Creación de una aplicación de consola que ejecuta un script específico". Este ejemplo utiliza la clase System.Management.Automation.Runspaceinvoke para ejecutar un script que recupera información de proceso para la lista de nombres de procesos pasados al script. Muestra cómo pasar objetos de entrada a un script y cómo recuperar objetos de error así como los objetos de salida.
Nota
Puede descargar el archivo fuente VB.NET (runspace03.vb) para este ejemplo utilizando el Kit de desarrollo de software de Windows para Windows Vista y Microsoft .NET Framework 3.0 Runtime Components. Para obtener instrucciones de descarga, consulte Cómo instalar Windows PowerShell y descargar el SDK de Windows PowerShell. Los archivos fuente descargados están disponibles en el directorio
Ejemplo de código
Imports System
Imports System.Collections
Imports System.Collections.Generic
Imports System.Collections.ObjectModel
Imports System.Text
Imports Microsoft.VisualBasic
Imports System.Management.Automation
Imports System.Management.Automation.Host
Imports System.Management.Automation.Runspaces
Namespace Microsoft.Samples.PowerShell.Runspaces
Class Runspace03
''' <summary>
''' This sample uses the RunspaceInvoke class to execute
''' a script that retrieves process information for the
''' list of process names passed into the script.
''' It shows how to pass input objects to a script and
''' how to retrieve error objects as well as the output objects.
''' </summary>
''' <param name="args">Unused</param>
''' <remarks>
''' This sample demonstrates the following:
''' 1. Creating an instance of the RunspaceInvoke class.
''' 2. Using this instance to execute a string as a PowerShell script.
''' 3. Passing input objects to the script from the calling program.
''' 4. Using PSObject to extract and display properties from the objects
''' returned by this command.
''' 5. Retrieving and displaying error records that were generated
''' during the execution of that script.
''' </remarks>
Shared Sub Main(ByVal args() As String)
' Define a list of processes to look for
Dim processNames() As String = {"lsass", "nosuchprocess", _
"services", "nosuchprocess2"}
' The script to run to get these processes. Input passed
' to the script will be available in the $input variable.
Dim script As String = "$input | get-process -name {$_}"
' Create an instance of the RunspaceInvoke class.
Dim invoker As New RunspaceInvoke()
Console.WriteLine("Process HandleCount")
Console.WriteLine("--------------------------------")
' Now invoke the runspace and display the objects that are
' returned...
Dim errors As System.Collections.IList = Nothing
Dim result As PSObject
For Each result In invoker.Invoke(script, processNames, errors)
Console.WriteLine("{0,-20} {1}", _
result.Members("ProcessName").Value, _
result.Members("HandleCount").Value)
Next result
' Now process any error records that were generated while
' running the script.
Console.WriteLine(vbCrLf & _
"The following non-terminating errors occurred:" & vbCrLf)
If Not (errors Is Nothing) AndAlso errors.Count > 0 Then
Dim err As PSObject
For Each err In errors
System.Console.WriteLine(" error: {0}", err.ToString())
Next err
End If
System.Console.WriteLine(vbCRLF & "Hit any key to exit...")
System.Console.ReadKey()
End Sub 'Main
End Class 'Runspace03
End Namespace
Ver también
Guía del programador de Windows PowerShell
SDK de Windows PowerShell