[玩转系统] 导出-PSSession (Microsoft.PowerShell.Utility)
作者:精品下载站 日期:2024-12-14 02:07:37 浏览:15 分类:玩电脑
导出-PSSession (Microsoft.PowerShell.Utility)
导出-PSSession
模块 :Microsoft.PowerShell.Utility从另一个会话导出命令并将其保存在 PowerShell 模块中。
句法
Export-PSSession
[-OutputModule] <String>
[-Force]
[-Encoding <Encoding>]
[[-CommandName] <String[]>]
[-AllowClobber]
[-ArgumentList <Object[]>]
[-CommandType <CommandTypes>]
[-Module <String[]>]
[-FullyQualifiedModule <ModuleSpecification[]>]
[[-FormatTypeName] <String[]>]
[-Certificate <X509Certificate2>]
[-Session] <PSSession>
[<CommonParameters>]
描述
Export-PSSession
cmdlet 从本地或远程计算机上的另一个 PowerShell 会话 (PSSession) 获取 cmdlet、函数、别名和其他命令类型,并将它们保存在 PowerShell 模块中。要将命令从模块添加到当前会话,请使用 Import-Module
cmdlet。
与 Import-PSSession 将命令从另一个 PSSession 导入到当前会话不同,Export-PSSession 将命令保存在模块中。命令不会导入到当前会话中。
要导出命令,请使用 New-PSSession
cmdlet 创建包含要导出的命令的 PSSession。然后使用 Export-PSSession
cmdlet 导出命令。
为了防止命令名称冲突,Export-PSSession
默认导出所有命令,当前会话中存在的命令除外。您可以使用 CommandName 参数指定要导出的命令。
Export-PSSession
cmdlet 使用 PowerShell 的隐式远程处理功能。当您将命令导入到当前会话中时,它们会在原始会话或原始计算机上的类似会话中隐式运行。
示例
示例 1:从 PSSession 导出命令
此示例创建从本地计算机到 Server01 计算机的新 PSSession。除当前会话中存在的命令外,所有命令都将导出到本地计算机上名为 Server01 的模块。导出包括命令的格式数据。
$S = New-PSSession -ComputerName Server01
Export-PSSession -Session $S -OutputModule Server01
New-PSSession
命令在 Server01 计算机上创建 PSSession。 PSSession 存储在 $S
变量中。 Export-PSSession
命令将 $S
变量的命令和格式化数据导出到 Server01 模块中。
示例 2:导出 Get 和 Set 命令
此示例从服务器导出所有 Get
和 Set
命令。
$S = New-PSSession -ConnectionUri https://exchange.microsoft.com/mailbox -Credential [email protected] -Authentication Negotiate
Export-PSSession -Session $S -Module exch* -CommandName Get-*, Set-* -FormatTypeName * -OutputModule $PSHOME\Modules\Exchange -Encoding ASCII
这些命令将 Get
和 Set
命令从远程计算机上的 Microsoft Exchange Server 管理单元导出到 $PSHOME\Modules
中的 Exchange 模块> 本地计算机上的目录。将模块放置在 $PSHOME\Modules
目录中使得计算机的所有用户都可以访问它。
示例 3:从远程计算机导出命令
此示例从远程计算机上的 PSSession 导出 cmdlet,并将它们保存在本地计算机上的模块中。模块中的 cmdlet 将添加到当前会话中,以便可以使用它们。
$S = New-PSSession -ComputerName Server01 -Credential Server01\User01
Export-PSSession -Session $S -OutputModule TestCmdlets -Type Cmdlet -CommandName *test* -FormatTypeName *
Remove-PSSession $S
Import-Module TestCmdlets
Get-Help Test*
Test-Files
New-PSSession
命令在 Server01 计算机上创建 PSSession 并将其保存在 $S
变量中。 Export-PSSession
命令将名称以 Test 开头的 cmdlet 从 $S
中的 PSSession 导出到本地计算机上的 TestCmdlets 模块。
Remove-PSSession
cmdlet 从当前会话中删除 $S
中的 PSSession。此命令显示 PSSession 无需处于活动状态即可使用从会话导入的命令。 Import-Module
cmdlet 将 TestCmdlets 模块中的 cmdlet 添加到当前会话。该命令可以随时在任何会话中运行。
Get-Help
cmdlet 获取名称以 Test 开头的 cmdlet 的帮助。将模块中的命令添加到当前会话后,您可以使用 Get-Help
和 Get-Command
cmdlet 了解导入的命令。 Test-Files
cmdlet 已从 Server01 计算机导出并添加到会话中。 Test-Files
cmdlet 在导入命令的计算机上的远程会话中运行。 PowerShell 根据 TestCmdlets 模块中存储的信息创建会话。
示例 4:当前会话中的导出和破坏命令
此示例将存储在变量中的命令导出到当前会话中。
Export-PSSession -Session $S -AllowClobber -OutputModule AllCommands
此 Export-PSSession
命令将 $S
变量中 PSSession 中的所有命令和所有格式数据导出到当前会话中。 AllowClobber 参数包含与当前会话中的命令同名的命令。
示例 5:从关闭的 PSSession 导出命令
此示例演示当创建导出命令的 PSSession 关闭时如何使用特殊选项运行导出的命令。
如果导入模块时原始远程会话已关闭,则该模块将使用连接到原始计算机的任何打开的远程会话。如果当前没有与始发计算机的会话,则模块将重新建立会话。
要在远程会话中运行带有特殊选项的导出命令,您必须在导入模块之前创建带有这些选项的远程会话。使用带有 SessionOption 参数的 New-PSSession
cmdlet
$Options = New-PSSessionOption -NoMachineProfile
$S = New-PSSession -ComputerName Server01 -SessionOption $Options
Export-PSSession -Session $S -OutputModule Server01
Remove-PSSession $S
New-PSSession -ComputerName Server01 -SessionOption $Options
Import-Module Server01
New-PSSessionOption
cmdlet 创建一个 PSSessionOption 对象,并将该对象保存在 $Options
变量中。 New-PSSession
命令在 Server01 计算机上创建 PSSession。 SessionOption 参数使用存储在 $Options
中的对象。会话存储在 $S
变量中。
Export-PSSession
cmdlet 将命令从 $S
中的 PSSession 导出到 Server01 模块。 Remove-PSSession
cmdlet 删除 $S
变量中的 PSSession。
New-PSSession
cmdlet 创建一个连接到 Server01 计算机的新 PSSession。 SessionOption 参数使用存储在 $Options
中的对象。 Import-Module
cmdlet 从 Server01 模块导入命令。该模块中的命令在 Server01 计算机上的 PSSession 中运行。
参数
-AllowClobber
导出指定的命令,即使它们与当前会话中的命令具有相同的名称。
如果导出与当前会话中的命令同名的命令,导出的命令将隐藏或替换原始命令。有关详细信息,请参阅 about_Command_Precedence。
类型 :SwitchParameter
位置:命名
默认值:None
必需的:False
接受管道输入:False
接受通配符:False
-ArgumentList
导出使用指定参数(参数值)产生的命令变体。
例如,要导出 $S
中 PSSession 中证书 (Cert:) 驱动器中 Get-Item
命令的变体,请键入 Export-PSSession -会话 $S -Command Get-Item -ArgumentList cert:
。
Object[]
别名:Args
位置:命名
默认值:None
必需的:False
接受管道输入:False
接受通配符:False
-Certificate
指定用于对 Export-PSSession
创建的模块中的格式文件 (*.Format.ps1xml) 或脚本模块文件 (.psm1) 进行签名的客户端证书。输入包含证书的变量或获取证书的命令或表达式。
要查找证书,请使用 Get-PfxCertificate
cmdlet 或使用证书 (Cert:) 驱动器中的 Get-ChildItem
cmdlet。如果证书无效或没有足够的权限,该命令将失败。
X509证书2
位置:命名
默认值:None
必需的:False
接受管道输入:False
接受通配符:False
-CommandName
仅导出具有指定名称或名称模式的命令。允许使用通配符。使用CommandName或其别名名称。
默认情况下,Export-PSSession
会导出 PSSession 中的所有命令,但与当前会话中的命令同名的命令除外。这可以防止命令被隐藏或被当前会话中的命令替换。要导出所有命令,甚至是那些隐藏或替换其他命令的命令,请使用 AllowClobber 参数。
如果您使用 CommandName 参数,则不会导出命令的格式设置文件,除非您使用 FormatTypeName 参数。同样,如果您使用 FormatTypeName 参数,则除非使用 CommandName 参数,否则不会导出任何命令。
类型 :String[]
别名:Name
位置:2
默认值:会话中的所有命令。
必需的:False
接受管道输入:False
接受通配符:True
-CommandType
仅导出指定类型的命令对象。使用CommandType或其别名Type。
该参数可接受的值如下:
别名
:当前会话中的所有 PowerShell 别名。全部
:所有命令类型。它相当于Get-Command -Name *
。应用程序
:Path 环境变量 ($env:path
) 中列出的路径中除 PowerShell 文件之外的所有文件,包括 .txt、.exe 和 .dll 文件。Cmdlet
:当前会话中的 cmdlet。 Cmdlet 是默认设置。配置
:PowerShell 配置。有关更多信息,请参阅 about_Session_Configurations。ExternalScript
:Path 环境变量 ($env:path
) 中列出的路径中的所有 .ps1 文件。Filter
和Function
:所有 PowerShell 函数。Script
当前会话中的脚本块。工作流
PowerShell 工作流。有关详细信息,请参阅 about_工作流程。
这些值被定义为基于标志的枚举。您可以使用此参数将多个值组合在一起以设置多个标志。这些值可以作为值数组或这些值的逗号分隔字符串传递给 CommandType 参数。该 cmdlet 将使用二进制 OR 运算组合这些值。将值作为数组传递是最简单的选项,并且还允许您对值使用制表符补全。
类型 :CommandTypes
别名:Type
接受的值:别名、全部、应用程序、Cmdlet、配置、ExternalScript、筛选器、函数、脚本、工作流
位置:命名
默认值:会话中的所有命令。
必需的:False
接受管道输入:False
接受通配符:False
-Encoding
指定目标文件的编码类型。默认值为 utf8NoBOM
。
该参数可接受的值如下:
ascii
:使用 ASCII(7 位)字符集的编码。ansi
:使用当前区域性的 ANSI 代码页的编码。此选项是在 PowerShell 7.4 中添加的。bigendianunicode
:使用 big-endian 字节顺序以 UTF-16 格式进行编码。bigendianutf32
:使用 big-endian 字节顺序以 UTF-32 格式进行编码。oem
:使用 MS-DOS 和控制台程序的默认编码。unicode
:使用小端字节顺序以 UTF-16 格式进行编码。utf7
:以UTF-7格式编码。utf8
:以UTF-8格式编码。utf8BOM
:使用字节顺序标记 (BOM) 以 UTF-8 格式进行编码utf8NoBOM
:以 UTF-8 格式编码,不带字节顺序标记 (BOM)utf32
:以 UTF-32 格式编码。
从 PowerShell 6.2 开始,Encoding 参数还允许使用注册代码页的数字 ID(例如 -Encoding 1251
)或注册代码页的字符串名称(例如 -Encoding “windows-1251”
)。有关详细信息,请参阅 Encoding.CodePage 的 .NET 文档。
从 PowerShell 7.4 开始,您可以使用 Encoding 参数的 Ansi
值来传递当前区域性 ANSI 代码页的数字 ID,而无需手动指定。
笔记
不再建议使用UTF-7*。从 PowerShell 7.1 开始,如果为 Encoding 参数指定 utf7
,则会写入警告。
编码
接受的值:ASCII、BigEndianUnicode、BigEndianUTF32、OEM、Unicode、UTF7、UTF8、UTF8BOM、UTF8NoBOM、UTF32
位置:命名
默认值:UTF8无BOM
必需的:False
接受管道输入:False
接受通配符:False
-Force
覆盖一个或多个现有输出文件,即使该文件具有只读属性。
类型 :SwitchParameter
位置:命名
默认值:None
必需的:False
接受管道输入:False
接受通配符:False
-FormatTypeName
仅导出指定 Microsoft .NET Framework 类型的格式指令。输入类型名称。默认情况下,Export-PSSession
导出不在 System.Management.Automation 命名空间中的所有 .NET Framework 类型的格式指令。
此参数的值必须是由从中导入命令的会话中的 Get-FormatData
命令返回的类型名称。要获取远程会话中的所有格式数据,请键入 *
。
如果使用 FormatTypeName 参数,则除非使用 CommandName 参数,否则不会导出任何命令。
如果您使用 CommandName 参数,则不会导出命令的格式设置文件,除非您使用 FormatTypeName 参数。
类型 :String[]
位置:3
默认值:None
必需的:False
接受管道输入:False
接受通配符:False
-FullyQualifiedModule
该值可以是模块名称、完整的模块规范或模块文件的路径。
当该值是路径时,该路径可以是完全限定的或相对的。相对路径是相对于包含 using 语句的脚本进行解析的。
当该值为名称或模块规范时,PowerShell 会在 PSModulePath 中搜索指定的模块。
模块规范是一个具有以下键的哈希表。
ModuleName
- 必需 指定模块名称。GUID
- 可选 指定模块的 GUID。还必需至少指定以下三个键之一。
ModuleVersion
- 指定模块的最低可接受版本。
MaximumVersion
- 指定模块可接受的最大版本。RequiredVersion
- 指定模块的准确的、必需的版本。它不能与其他版本密钥一起使用。
您不能在同一命令中将 FullyQualifiedModule 参数指定为 Module 参数。这两个参数是互斥的。
类型 :模块规格[]
位置:命名
默认值:None
必需的:False
接受管道输入:False
接受通配符:False
-Module
仅导出指定 PowerShell 管理单元和模块中的命令。输入管理单元和模块名称。不允许使用通配符。
有关详细信息,请参阅Import-Module
和 about_PSSnapins。
String[]
别名:PSSnapin
位置:命名
默认值:会话中的所有命令。
必需的:False
接受管道输入:False
接受通配符:False
-OutputModule
为 Export-PSSession
创建的模块指定可选路径和名称。默认路径是$HOME\Documents\WindowsPowerShell\Modules
。此参数是必需的。
如果模块子目录或 Export-PSSession
创建的任何文件已存在,则该命令将失败。要覆盖现有文件,请使用Force参数。
String
别名:PSPath, ModuleName
位置:1
默认值:$HOME\Documents\WindowsPowerShell\Modules
必需的:True
接受管道输入:False
接受通配符:False
-Session
指定从中导出命令的 PSSession。输入包含会话对象的变量或获取会话对象的命令,例如 Get-PSSession
命令。此参数是必需的。
PS会话
位置:0
默认值:None
必需的:True
接受管道输入:False
接受通配符:False
输入
无
您无法将对象通过管道传输到此 cmdlet。
输出
文件信息
此 cmdlet 返回包含其创建的模块的文件列表。
笔记
Export-PSSession
依赖于 PowerShell 远程处理基础设施。要使用此 cmdlet,必须将计算机配置为远程处理。有关详细信息,请参阅 about_Remote_Requirements。
您无法使用 Export-PSSession
导出 PowerShell 提供程序。
导出的命令在导出它们的 PSSession 中隐式运行。远程运行命令的详细信息完全由 PowerShell 处理。您可以像运行本地命令一样运行导出的命令。
Export-ModuleMember
捕获并保存有关其导出的模块中的 PSSession 的信息。如果在导入模块时导出命令的 PSSession 已关闭,并且同一计算机上没有活动的 PSSession,则模块中的命令将尝试重新创建 PSSession。如果尝试重新创建 PSSession 失败,导出的命令将不会运行。
Export-ModuleMember
捕获并保存在模块中的会话信息不包括会话选项,例如您在 $PSSessionOption
首选项变量中指定的选项或使用 New-PSSession、Enter-PSSession
或 Invoke-Command
cmdlet 的strong>SessionOption 参数。如果导入模块时原始 PSSession 已关闭,则模块将使用同一台计算机上的另一个 PSSession(如果可用)。要使导入的命令能够在正确配置的会话中运行,请在导入模块之前使用所需的选项创建 PSSession。
为了查找要导出的命令,Export-PSSession
使用 Invoke-Command
cmdlet 在 PSSession 中运行 Get-Command
命令。为了获取和保存命令的格式数据,它使用 Get-FormatData
和 Export-FormatData
cmdlet。您可能会看到来自 Invoke-Command
、Get-Command
、Get-FormatData
和 Export-FormatData
的错误消息当您运行 Export-PSSession
命令时。此外,Export-PSSession
无法从不包含 Get-Command
、Get-FormatData
、Select- 的会话中导出命令。 Object
和 Get-Help
cmdlet。
Export-PSSession
使用 Write-Progress
cmdlet 来显示命令的进度。命令运行时您可能会看到进度条。
导出的命令与其他远程命令具有相同的限制,包括无法使用用户界面(例如记事本)启动程序。
由于 PowerShell 配置文件不在 PSSession 中运行,因此配置文件添加到会话的命令不可用于 Export-PSSession
。要从配置文件导出命令,请在导出命令之前使用 Invoke-Command
命令在 PSSession 中手动运行配置文件。
Export-PSSession
创建的模块可能包含格式化文件,即使该命令不导入格式化数据。如果该命令不导入格式化数据,则创建的任何格式化文件将不包含格式化数据。
猜你还喜欢
- 03-30 [玩转系统] 如何用批处理实现关机,注销,重启和锁定计算机
- 02-14 [系统故障] Win10下报错:该文件没有与之关联的应用来执行该操作
- 01-07 [系统问题] Win10--解决锁屏后会断网的问题
- 01-02 [系统技巧] Windows系统如何关闭防火墙保姆式教程,超详细
- 12-15 [玩转系统] 如何在 Windows 10 和 11 上允许多个 RDP 会话
- 12-15 [玩转系统] 查找 Exchange/Microsoft 365 中不活动(未使用)的通讯组列表
- 12-15 [玩转系统] 如何在 Windows 上安装远程服务器管理工具 (RSAT)
- 12-15 [玩转系统] 如何在 Windows 上重置组策略设置
- 12-15 [玩转系统] 如何获取计算机上的本地管理员列表?
- 12-15 [玩转系统] 在 Visual Studio Code 中连接到 MS SQL Server 数据库
- 12-15 [玩转系统] 如何降级 Windows Server 版本或许可证
- 12-15 [玩转系统] 如何允许非管理员用户在 Windows 中启动/停止服务
取消回复欢迎 你 发表评论:
- 精品推荐!
-
- 最新文章
- 热门文章
- 热评文章
[影视] 黑道中人 Alto Knights(2025)剧情 犯罪 历史 电影
[古装剧] [七侠五义][全75集][WEB-MP4/76G][国语无字][1080P][焦恩俊经典]
[实用软件] 虚拟手机号 电话 验证码 注册
[电视剧] 安眠书店/你 第五季 You Season 5 (2025) 【全10集】
[电视剧] 棋士(2025) 4K 1080P【全22集】悬疑 犯罪 王宝强 陈明昊
[软件合集] 25年6月5日 精选软件22个
[软件合集] 25年6月4日 精选软件36个
[短剧] 2025年06月04日 精选+付费短剧推荐33部
[短剧] 2025年06月03日 精选+付费短剧推荐25部
[软件合集] 25年6月3日 精选软件44个
[剧集] [央视][笑傲江湖][2001][DVD-RMVB][高清][40集全]李亚鹏、许晴、苗乙乙
[电视剧] 欢乐颂.5部全 (2016-2024)
[电视剧] [突围] [45集全] [WEB-MP4/每集1.5GB] [国语/内嵌中文字幕] [4K-2160P] [无水印]
[影视] 【稀有资源】香港老片 艺坛照妖镜之96应召名册 (1996)
[剧集] 神经风云(2023)(完结).4K
[剧集] [BT] [TVB] [黑夜彩虹(2003)] [全21集] [粤语中字] [TV-RMVB]
[实用软件] 虚拟手机号 电话 验证码 注册
[资源] B站充电视频合集,包含多位重量级up主,全是大佬真金白银买来的~【99GB】
[影视] 内地绝版高清录像带 [mpg]
[书籍] 古今奇书禁书三教九流资料大合集 猎奇必备珍藏资源PDF版 1.14G
[电视剧] [突围] [45集全] [WEB-MP4/每集1.5GB] [国语/内嵌中文字幕] [4K-2160P] [无水印]
[剧集] [央视][笑傲江湖][2001][DVD-RMVB][高清][40集全]李亚鹏、许晴、苗乙乙
[电影] 美国队长4 4K原盘REMUX 杜比视界 内封简繁英双语字幕 49G
[电影] 死神来了(1-6)大合集!
[软件合集] 25年05月13日 精选软件16个
[精品软件] 25年05月15日 精选软件18个
[绝版资源] 南与北 第1-2季 合集 North and South (1985) /美国/豆瓣: 8.8[1080P][中文字幕]
[软件] 25年05月14日 精选软件57个
[短剧] 2025年05月14日 精选+付费短剧推荐39部
[短剧] 2025年05月15日 精选+付费短剧推荐36部
- 最新评论
-
- 热门tag