ScriptBlock Class
Definition
Important
Some information relates to prerelease product that may be substantially modified before it’s released. Microsoft makes no warranties, express or implied, with respect to the information provided here.
An object representing a pre-compiled block of powershell script.
public ref class ScriptBlock : System::Runtime::Serialization::ISerializable
[System.Serializable]
public class ScriptBlock : System.Runtime.Serialization.ISerializable
public class ScriptBlock : System.Runtime.Serialization.ISerializable
public class ScriptBlock
[<System.Serializable>]
type ScriptBlock = class
interface ISerializable
type ScriptBlock = class
interface ISerializable
type ScriptBlock = class
Public Class ScriptBlock
Implements ISerializable
Public Class ScriptBlock
- Inheritance
-
ScriptBlock
- Attributes
- Implements
Remarks
This class track a block of script in a compiled form. It is also used for direct invocation of the script block.
1. Overview
Script block comes in two forms,
a. Full form (cmdlet form)
This comes in following format
{ begin { statementlist; } process { statementlist; } end { statementlist; } }
This form is used for running the script in a pipeline like a cmdlet.
b. Simple form
This comes in following format
{ statementlist; }
2. Script block execution
For the full form (or cmdlet form) of script block, the script block itself is part of a pipeline. Its execution is handled through ScriptCommandProcessor, which involves execution of begin/process/end blocks like a cmdlet. If a scriptblock in simple form is used in a pipeline, its execution is done through ScriptCommandProcessor also, with some of begin/process/end blocks default to be empty.
A script block in simple form can be directly invoked (outside of a pipeline context). For example,
{"text"}.Invoke()
A scriptblock can be directly invoked internally or externally through runspace API.
This class will handle the logic for direct invocation of script blocks.
Constructors
ScriptBlock(SerializationInfo, StreamingContext) |
Obsolete.
Protected constructor to support ISerializable. |
Properties
Ast |
Returns the AST corresponding to the script block. |
Attributes |
Return all attributes on a script block. |
DebuggerHidden |
DebuggerHidden. |
File |
The script file that defined this script block. |
Id |
The unique ID of this script block. |
IsConfiguration |
Get/set whether this scriptblock is a Configuration. |
IsFilter |
Get/set whether this scriptblock is a filter. |
Module |
Get the PSModuleInfo object for the module that defined this scriptblock. |
StartPosition |
Return the PSToken object for this function definition... |
Methods
CheckRestrictedLanguage(IEnumerable<String>, IEnumerable<String>, Boolean) |
Check the script block to see if it uses any language constructs not allowed in restricted language mode. |
Create(String) |
Create a script block based on a script to be parsed when execution context is provided. |
GetNewClosure() |
Returns a new scriptblock bound to a module. Any local variables in the callers context will be copied into the module. |
GetObjectData(SerializationInfo, StreamingContext) |
Support for ISerializable. |
GetPowerShell(Boolean, Object[]) |
Returns PowerShell object representing the pipeline contained in this ScriptBlock, similar to the GetPowerShell() method. If the 'isTrustedInput' flag parameter is set to True, then the GetPowerShell() implementation supports extended conversion operations (such as replacing variable values with their current values) that might otherwise be unsafe if applied to untrusted input. |
GetPowerShell(Dictionary<String,Object>, Dictionary<String,Object>, Boolean, Object[]) |
Returns PowerShell object representing the pipeline contained in this ScriptBlock, using variables supplied in the dictionary. |
GetPowerShell(Dictionary<String,Object>, Dictionary<String,Object>, Object[]) |
Returns PowerShell object representing the pipeline contained in this ScriptBlock, using variables supplied in the dictionary. |
GetPowerShell(Dictionary<String,Object>, Object[]) |
Returns PowerShell object representing the pipeline contained in this ScriptBlock, using variables supplied in the dictionary. |
GetPowerShell(Object[]) |
Returns PowerShell object representing the pipeline contained in this ScriptBlock. |
GetSteppablePipeline() |
Get a steppable pipeline object. |
GetSteppablePipeline(CommandOrigin, Object[]) |
Get a steppable pipeline object. |
GetSteppablePipeline(CommandOrigin) |
Get a steppable pipeline object. |
Invoke(Object[]) |
Execute this node with the specified arguments. The arguments show up in the script as $args with $_ being the first argument. |
InvokeReturnAsIs(Object[]) |
Execute this node with the specified arguments. The arguments show up in the script as $args. This overload return the raw (unwrapped) result so it can be more efficient. |
InvokeWithContext(Dictionary<String,ScriptBlock>, List<PSVariable>, Object[]) |
A method that allows a scriptblock to be invoked with additional context in the form of a set of local functions and variables to be defined in the scriptblock's scope. The list of variables may include the special variables $input, $_ and $this. |
InvokeWithContext(IDictionary, List<PSVariable>, Object[]) |
A method that allows a scriptblock to be invoked with additional context in the form of a set of local functions and variables to be defined in the scriptblock's scope. The list of variables may include the special variables $input, $_ and $this. This overload of the function takes a hashtable and converts it to the required dictionary which makes the API easier to use from within a PowerShell script. |
ToString() |
Returns the text of the script block. The return value might not match the original text exactly. |