New-PSRoleCapabilityFile

创建一个文件,该文件定义一组要通过会话配置公开的功能。

语法

Default (默认值)

New-PSRoleCapabilityFile
    [-Path] <String>
    [-Guid <Guid>]
    [-Author <String>]
    [-Description <String>]
    [-CompanyName <String>]
    [-Copyright <String>]
    [-ModulesToImport <Object[]>]
    [-VisibleAliases <String[]>]
    [-VisibleCmdlets <Object[]>]
    [-VisibleFunctions <Object[]>]
    [-VisibleExternalCommands <String[]>]
    [-VisibleProviders <String[]>]
    [-ScriptsToProcess <String[]>]
    [-AliasDefinitions <IDictionary[]>]
    [-FunctionDefinitions <IDictionary[]>]
    [-VariableDefinitions <Object>]
    [-EnvironmentVariables <IDictionary>]
    [-TypesToProcess <String[]>]
    [-FormatsToProcess <String[]>]
    [-AssembliesToLoad <String[]>]
    [<CommonParameters>]

说明

New-PSRoleCapabilityFile cmdlet 创建一个文件,该文件定义一组用户功能,可通过会话配置文件公开。 这包括确定哪些 cmdlet、函数和脚本可供用户使用。 功能文件是一个人工可读文本文件,其中包含会话配置属性和值的哈希表。 该文件具有 .psrc 文件扩展名,可供多个会话配置使用。

的所有 New-PSRoleCapabilityFile 参数都是可选的,但 Path 参数除外,该参数指定文件的文件路径。 如果在运行 cmdlet 时未包含参数,则会话配置文件中的相应键将被注释掉,除非参数说明中另有说明。 例如,如果不包含 AssembliesToLoad 参数,则会话配置文件的该部分将被注释掉。

若要在会话配置中使用角色功能文件,请先将该文件放在有效的 PowerShell 模块文件夹的 RoleCapabilities 子文件夹中。 然后,在 PowerShell 会话配置 (.pssc) 文件中 RoleDefinitions 字段中按名称引用该文件。

此 cmdlet 已在 Windows PowerShell 5.0 中引入。

示例

示例 1:创建空白角色功能文件

此示例创建使用默认值(空白)值的新角色功能文件。 稍后可以在文本编辑器中编辑该文件以更改这些配置设置。

New-PSRoleCapabilityFile -Path ".\ExampleFile.psrc"

示例 2:创建角色功能文件,允许用户重启服务和任何 VDI 计算机

此示例创建一个示例角色功能文件,使用户能够重启与特定名称模式匹配的服务和计算机。 通过将 ValidatePattern 参数设置为正则表达式 VDI\d+来定义名称筛选。

$roleParameters = @{
    Path = ".\Maintenance.psrc"
    Author = "User01"
    CompanyName = "Fabrikam Corporation"
    Description = "This role enables users to restart any service and restart any VDI computer."
    ModulesToImport = "Microsoft.PowerShell.Core"
    VisibleCmdlets = "Restart-Service", @{
                      Name = "Restart-Computer"
                      Parameters = @{ Name = "ComputerName"; ValidatePattern = "VDI\d+" }
    }
}
New-PSRoleCapabilityFile @roleParameters

参数

-AliasDefinitions

将指定的别名添加到使用角色功能文件的会话。 使用以下键输入哈希表:

  • 姓名。 别名的名称。 此密钥是必需的。
  • 价值。 别名表示的命令。 此密钥是必需的。
  • 说明。 描述别名的文本字符串。 此密钥是可选的。
  • 选项。 别名选项。 此密钥是可选的。 默认值为 None。 此参数的可接受值为:None、ReadOnly、Constant、Private 或 AllScope。

例如:@{Name="hlp";Value="Get-Help";Description="Gets help";Options="ReadOnly"}

参数属性

类型:

IDictionary[]

默认值:None
支持通配符:False
不显示:False

参数集

(All)
Position:Named
必需:False
来自管道的值:False
来自管道的值(按属性名称):False
来自剩余参数的值:False

-AssembliesToLoad

指定要加载到使用角色功能文件的会话中的程序集。

参数属性

类型:

String[]

默认值:None
支持通配符:False
不显示:False

参数集

(All)
Position:Named
必需:False
来自管道的值:False
来自管道的值(按属性名称):False
来自剩余参数的值:False

-Author

指定创建角色功能文件的用户。

参数属性

类型:String
默认值:None
支持通配符:False
不显示:False

参数集

(All)
Position:Named
必需:False
来自管道的值:False
来自管道的值(按属性名称):False
来自剩余参数的值:False

-CompanyName

标识创建角色功能文件的公司。 默认值为 Unknown。

参数属性

类型:String
默认值:None
支持通配符:False
不显示:False

参数集

(All)
Position:Named
必需:False
来自管道的值:False
来自管道的值(按属性名称):False
来自剩余参数的值:False

指定角色功能文件的版权。 如果省略此参数,New-PSRoleCapabilityFile 使用 Author 参数的值生成版权声明。

类型:String
默认值:None
支持通配符:False
不显示:False
(All)
Position:Named
必需:False
来自管道的值:False
来自管道的值(按属性名称):False
来自剩余参数的值:False

-Description

指定角色功能文件的说明。

参数属性

类型:String
默认值:None
支持通配符:False
不显示:False

参数集

(All)
Position:Named
必需:False
来自管道的值:False
来自管道的值(按属性名称):False
来自剩余参数的值:False

-EnvironmentVariables

指定公开此角色功能文件的会话的环境变量。 输入一个哈希表,其中键是环境变量名称,值是环境变量值。

例如:EnvironmentVariables=@{TestShare="\\\\Server01\TestShare"}

参数属性

类型:IDictionary
默认值:None
支持通配符:False
不显示:False

参数集

(All)
Position:Named
必需:False
来自管道的值:False
来自管道的值(按属性名称):False
来自剩余参数的值:False

-FormatsToProcess

指定在使用角色功能文件的会话中运行的格式文件 (.ps1xml)。 此参数的值必须是格式化文件的完整或绝对路径。

参数属性

类型:

String[]

默认值:None
支持通配符:False
不显示:False

参数集

(All)
Position:Named
必需:False
来自管道的值:False
来自管道的值(按属性名称):False
来自剩余参数的值:False

-FunctionDefinitions

将指定的函数添加到公开角色功能的会话。 使用以下键输入哈希表:

  • 姓名。 函数的名称。 此密钥是必需的。
  • ScriptBlock。 函数体。 输入脚本块。 此密钥是必需的。
  • 选项。 函数选项。 此密钥是可选的。 默认值为 None。 此参数的可接受值为:None、ReadOnly、Constant、Private 或 AllScope。

例如:

@{Name="Get-PowerShellProcess";ScriptBlock={Get-Process PowerShell};Options="AllScope"}

参数属性

类型:

IDictionary[]

默认值:None
支持通配符:False
不显示:False

参数集

(All)
Position:Named
必需:False
来自管道的值:False
来自管道的值(按属性名称):False
来自剩余参数的值:False

-Guid

指定角色功能文件的唯一标识符。 如果省略此参数,New-PSRoleCapabilityFile 为文件生成 GUID。 若要在 PowerShell 中创建新的 GUID,请键入 [guid]::NewGuid()

参数属性

类型:Guid
默认值:None
支持通配符:False
不显示:False

参数集

(All)
Position:Named
必需:False
来自管道的值:False
来自管道的值(按属性名称):False
来自剩余参数的值:False

-ModulesToImport

指定自动导入到使用角色功能文件的会话中的模块。 默认情况下,列出的模块中的所有命令都可见。 与 VisibleCmdletVisibleFunctions一起使用时,可以限制从指定模块可见的命令。

此参数的值中使用的每个模块都可以由字符串或哈希表表示。 模块字符串仅包含模块的名称。 模块哈希表可以包括 moduleNameModuleVersionGUID 键。 只需要 ModuleName 密钥。

例如,以下值由字符串和哈希表组成。 字符串和哈希表的任何组合(按任意顺序)有效。

"TroubleshootingPack", @{ModuleName="PSDiagnostics"; ModuleVersion="1.0.0.0";GUID="c61d6278-02a3-4618-ae37-a524d40a7f44"}

参数属性

类型:

Object[]

默认值:None
支持通配符:False
不显示:False

参数集

(All)
Position:Named
必需:False
来自管道的值:False
来自管道的值(按属性名称):False
来自剩余参数的值:False

-Path

指定角色功能文件的路径和文件名。 该文件必须具有 .psrc 文件扩展名。

参数属性

类型:String
默认值:None
支持通配符:False
不显示:False

参数集

(All)
Position:0
必需:True
来自管道的值:False
来自管道的值(按属性名称):False
来自剩余参数的值:False

-ScriptsToProcess

指定要添加到使用角色功能文件的会话的脚本。 输入脚本的路径和文件名。 此参数的值必须是脚本文件名的完整或绝对路径。

参数属性

类型:

String[]

默认值:None
支持通配符:False
不显示:False

参数集

(All)
Position:Named
必需:False
来自管道的值:False
来自管道的值(按属性名称):False
来自剩余参数的值:False

-TypesToProcess

指定要添加到使用角色功能文件的会话的类型文件 (.ps1xml)。 输入类型文件名。 此参数的值必须是类型文件名的完整或绝对路径。

参数属性

类型:

String[]

默认值:None
支持通配符:False
不显示:False

参数集

(All)
Position:Named
必需:False
来自管道的值:False
来自管道的值(按属性名称):False
来自剩余参数的值:False

-VariableDefinitions

指定要添加到使用角色功能文件的会话的变量。 使用以下键输入哈希表:

  • 姓名。 变量的名称。 此密钥是必需的。
  • 价值。 变量值。 此密钥是必需的。
  • 选项。 变量选项。 此密钥是可选的。 默认值为 None。 此参数的可接受值为:None、ReadOnly、Constant、Private 或 AllScope。

例如:@{Name="WarningPreference";Value="SilentlyContinue";Options="AllScope"}

参数属性

类型:Object
默认值:None
支持通配符:False
不显示:False

参数集

(All)
Position:Named
必需:False
来自管道的值:False
来自管道的值(按属性名称):False
来自剩余参数的值:False

-VisibleAliases

将会话中的别名限制为此参数值中指定的别名,以及你在 AliasDefinition 参数中定义的任何别名。 支持通配符。 默认情况下,PowerShell 引擎定义的所有别名以及模块导出的所有别名都在会话中可见。

例如,若要将可用别名限制为 gm 和 gcm,请使用以下语法:VisibleAliases="gcm", "gp"

当角色功能文件中包括任何 Visible 参数时,PowerShell 将从会话中删除 Import-Module cmdlet 及其 ipmo 别名。

参数属性

类型:

String[]

默认值:None
支持通配符:True
不显示:False

参数集

(All)
Position:Named
必需:False
来自管道的值:False
来自管道的值(按属性名称):False
来自剩余参数的值:False

-VisibleCmdlets

将会话中的 cmdlet 限制为此参数的值中指定的 cmdlet。 支持通配符和模块限定名称。

默认情况下,会话导出中的模块的所有 cmdlet 在会话中可见。 使用 SessionTypeModulesToImport 参数来确定将哪些模块和管理单元导入到会话中。 如果 ModulesToImport 中没有模块公开该 cmdlet,New-PSRoleCapabilityFile 会尝试加载相应的模块。

会话配置文件中包含任何 Visible 参数时,PowerShell 将从会话中删除 Import-Module cmdlet 及其 ipmo 别名。

参数属性

类型:

Object[]

默认值:None
支持通配符:True
不显示:False

参数集

(All)
Position:Named
必需:False
来自管道的值:False
来自管道的值(按属性名称):False
来自剩余参数的值:False

-VisibleExternalCommands

将可在会话中执行的外部二进制文件、脚本和命令限制为此参数的值中指定的二进制文件、 脚本和命令。

默认情况下,此会话中不显示任何外部命令。

会话配置文件中包含任何 Visible 参数时,PowerShell 将从会话中删除 Import-Module cmdlet 及其 ipmo 别名。

参数属性

类型:

String[]

默认值:None
支持通配符:False
不显示:False

参数集

(All)
Position:Named
必需:False
来自管道的值:False
来自管道的值(按属性名称):False
来自剩余参数的值:False

-VisibleFunctions

将会话中的函数限制为此参数的值中指定的函数,以及您在 FunctionDefinitions 参数中定义的任何函数。 支持通配符。

默认情况下,会话中模块导出的所有函数在该会话中可见。 使用 SessionTypeModulesToImport 参数来确定哪些模块导入到会话中。

会话配置文件中包含任何 Visible 参数时,PowerShell 将从会话中删除 Import-Module cmdlet 及其 ipmo 别名。

参数属性

类型:

Object[]

默认值:None
支持通配符:True
不显示:False

参数集

(All)
Position:Named
必需:False
来自管道的值:False
来自管道的值(按属性名称):False
来自剩余参数的值:False

-VisibleProviders

将会话中的 PowerShell 提供程序限制为此参数的值中指定的提供程序。 支持通配符。

默认情况下,会话中模块导出的所有提供程序在会话中可见。 使用 SessionTypeModulesToImport 参数来确定哪些模块导入到会话中。

会话配置文件中包含任何 Visible 参数时,PowerShell 将从会话中删除 Import-Module cmdlet 及其 ipmo 别名。

参数属性

类型:

String[]

默认值:None
支持通配符:True
不显示:False

参数集

(All)
Position:Named
必需:False
来自管道的值:False
来自管道的值(按属性名称):False
来自剩余参数的值:False

CommonParameters

此 cmdlet 支持通用参数:-Debug、-ErrorAction、-ErrorVariable、-InformationAction、-InformationVariable、-OutBuffer、-OutVariable、-PipelineVariable、-ProgressAction、-Verbose、-WarningAction 和 -WarningVariable。 有关详细信息,请参阅 about_CommonParameters