ZetCode

PowerShell Export-PSSession

最后修改:2025 年 2 月 15 日

在本文中,我们将介绍PowerShell中的Export-PSSession cmdlet。此cmdlet将远程会话中的命令导出到本地PowerShell模块。它实现了跨会话的命令重用。

Export-PSSession基础

Export-PSSession从远程会话中的命令创建模块。这允许在不重新连接的情况下本地使用远程命令。该cmdlet需要一个活动的PSSession才能导出。输出是带有代理函数的PowerShell模块。

Export-PSSession基本用法

使用Export-PSSession的最简单方法是使用会话对象。首先使用New-PSSession创建会话,然后导出其命令。模块将保存到指定的路径。这创建了可重用的命令集。

export1.ps1
$session = New-PSSession -ComputerName Server01
Export-PSSession -Session $session -OutputModule RemoteCommands

这会在Server01上创建一个会话并导出其命令。命令保存在名为RemoteCommands的模块中。该模块放置在模块路径中。

导出特定命令

您可以使用-CommandName参数仅导出特定命令。这会过滤哪些命令包含在输出模块中。支持通配符进行模式匹配。这减少了模块的大小和混乱。

export2.ps1
$session = New-PSSession -ComputerName Server01
Export-PSSession -Session $session -CommandName Get-* -OutputModule GetCommands

这仅从Server01导出以“Get-”开头的命令。生成的模块仅包含这些筛选后的命令。这对于创建专注的模块很有用。

导出到特定目录

默认情况下,模块保存在用户的模块路径中。您可以使用-OutputModulePath指定其他位置。这允许自定义模块存储。路径必须在运行命令之前存在。这对于测试模块很有用。

export3.ps1
$session = New-PSSession -ComputerName Server01
Export-PSSession -Session $session -OutputModule TempCommands -OutputModulePath C:\Temp

这将命令导出到C:\Temp\TempCommands而不是默认位置。稍后可以从该自定义路径导入模块。这对于临时模块很有用。

导出模块说明

您可以使用-Description为导出的模块添加元数据。使用Get-Module -ListAvailable时会显示此信息。这有助于记录模块的目的。描述存储在模块清单文件中。

export4.ps1
$session = New-PSSession -ComputerName Server01
Export-PSSession -Session $session -OutputModule ServerCmds -Description "Server01 management commands"

这创建了一个模块,其中包含有关其内容的描述性消息。此描述有助于用户理解模块的目的。这在共享环境中很有用。

导出特定模块版本

您可以为导出的模块指定版本号。使用-ModuleVersion进行设置。版本号有助于跟踪模块更新。遵循标准的版本格式(主版本.次版本.构建版本)。这对于模块管理很有用。

export5.ps1
$session = New-PSSession -ComputerName Server01
Export-PSSession -Session $session -OutputModule ServerTools -ModuleVersion 1.0.0

这会将ServerTools模块的版本1.0.0导出为命令。版本控制有助于跟踪更改和依赖项。这对于生产环境很重要。

导出带命令前缀

您可以使用-Prefix为所有导出的命令添加前缀。这可以避免与本地命令命名冲突。前缀将添加到每个命令名中。这使得区分远程命令变得容易。

export6.ps1
$session = New-PSSession -ComputerName Server01
Export-PSSession -Session $session -OutputModule Remote -Prefix Server01

这为所有导出的命令添加了“Server01”前缀。例如,Get-Process将变为Server01Get-Process。这有助于区分本地命令和远程命令。

导出特定格式文件

您可以使用-FormatTypeName和-FormatData包含自定义格式文件。这些文件控制对象的显示方式。这有助于保留远程会话的格式。格式数据包含在模块中。

export7.ps1
$session = New-PSSession -ComputerName Server01
$format = Get-FormatData -TypeName Some.Custom.Type
Export-PSSession -Session $session -OutputModule CustomFormats -FormatData $format

这会将命令导出以及Some.Custom.Type对象的自定义格式。使用模块时,格式会保留。这有助于保持一致性。

来源

PowerShell 文档

在本文中,我们介绍了PowerShell中的Export-PSSession cmdlet。

作者

我的名字是Jan Bodnar,我是一名充满热情的程序员,拥有丰富的编程经验。自2007年以来,我一直在撰写编程文章。迄今为止,我已撰写了1400多篇文章和8本电子书。我在编程教学方面拥有十多年的经验。

列出 所有 PowerShell 教程