Export Clixml - PowerShell
Overview
Export-Clixml exports PowerShell cmdlets and providers to a Common Language Infrastructure (CLI) assembly. This enables the cmdlets and providers to be used from non-PowerShell environments, such as C# or F#.
Syntax
Export-Clixml [[-InputObject] <PSSnapInInfo>] [-Namespace <string>] [-Path <string>] [-Force] [-Confirm] [-WhatIf] [-OutVariable <string>]
Options/Flags
-InputObject
Specifies the PSSnapInInfo object for the snap-in containing the cmdlets and providers to export.
-Namespace
Specifies the namespace for the exported cmdlets and providers. The default namespace is “PowerShell”.
-Path
Specifies the path to the file where the exported cmdlets and providers will be saved. The default path is the current directory.
-Force
Forces the export to overwrite an existing file without prompting for confirmation.
-Confirm
Prompts for confirmation before exporting the cmdlets and providers.
-WhatIf
Shows what would happen if the command were run without actually exporting the cmdlets and providers.
-OutVariable
Specifies a variable to store the exported cmdlets and providers.
Examples
Simple Example
This command exports the Get-Process cmdlet to a file named Process.clixml in the current directory:
Export-Clixml -InputObject Get-Process -Path Process.clixml
Complex Example
This command exports all cmdlets and providers from the Microsoft.PowerShell.Management snap-in to a file named Management.clixml in the C:\Exports directory:
Export-Clixml -InputObject (Get-PSSnapin -Name Microsoft.PowerShell.Management) -Path C:\Exports\Management.clixml
Common Issues
- If the specified path is not valid or does not have write permissions, the export will fail.
- If the specified namespace is already in use by another assembly, the export will fail.
Integration
The exported cmdlets and providers can be used from non-PowerShell environments using the System.Management.Automation namespace. For example, the following C# code uses the Get-Process cmdlet exported in the previous example:
using System.Management.Automation;
namespace CSharpExample
{
class Program
{
static void Main(string[] args)
{
// Create a PowerShell runspace.
using (PowerShell runspace = PowerShell.Create())
{
// Add the exported assembly to the runspace.
runspace.AddAssembly("Process.clixml");
// Create a command to get the processes.
PowerShellCommand command = new PowerShellCommand("Get-Process");
// Execute the command.
Collection<PSObject> results = runspace.Invoke(command);
// Print the process names.
foreach (PSObject result in results)
{
Console.WriteLine(result.Members["Name"].Value);
}
}
}
}
}
Related Commands
- Get-PSSnapin
- Import-Clixml
- New-PSSnapIn
- Remove-PSSnapin