84 lines
3.4 KiB
VB.net
84 lines
3.4 KiB
VB.net
'
|
|
' Copyright (c) 2006 Microsoft Corporation. All rights reserved.
|
|
'
|
|
' THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF
|
|
' ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO
|
|
' THE IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A
|
|
' PARTICULAR PURPOSE.
|
|
'
|
|
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
|