当前位置:网站首页 > 更多 > 玩电脑 > 正文

[玩转系统] 关于 需要

作者:精品下载站 日期:2024-12-14 02:18:56 浏览:15 分类:玩电脑

关于 需要


简短描述

防止脚本在没有所需元素的情况下运行。

详细描述

除非满足 PowerShell 版本、模块(和版本)和版本先决条件,否则 #Requires 语句会阻止脚本运行。如果不满足先决条件,PowerShell 将不会运行脚本或提供其他运行时功能,例如制表符完成。

句法

#Requires -Version <N>[.<n>]
#Requires -Modules { <Module-Name> | <Hashtable> }
#Requires -PSEdition <PSEdition-Name>
#Requires -RunAsAdministrator

有关语法的更多信息,请参阅脚本要求。

使用规则

一个脚本可以包含多个 #Requires 语句。 #Requires 语句可以出现在脚本中的任何行。

在函数内放置 #Requires 语句不会限制其范围。所有#Requires 语句始终全局应用,并且必须满足才能执行脚本。

警告

尽管#Requires 语句可以出现在脚本中的任何行,但它在脚本中的位置不会影响其应用程序的顺序。在脚本执行之前必须满足 #Requires 语句呈现的全局状态。

例子 :

Get-Module AzureRM.Netcore | Remove-Module
#Requires -Modules AzureRM.Netcore

您可能认为上面的代码不应该运行,因为所需的模块在 #Requires 语句之前被删除。但是,在脚本执行之前必须满足 #Requires 状态。然后脚本的第一行使所需的状态无效。

参数

-Assembly |

这很重要

-Assembly 语法已弃用。它没有任何功能。该语法是在 PowerShell 5.1 中添加的,但支持代码从未实现。为了向后兼容,该语法仍然被接受。

指定程序集 DLL 文件的路径或 .NET 程序集名称。 Assembly 参数是在 PowerShell 5.0 中引入的。有关 .NET 程序集的更多信息,请参阅程序集名称。

例如:

#Requires -Assembly path\to\foo.dll
#Requires -Assembly "System.Management.Automation, Version=3.0.0.0,
  Culture=neutral, PublicKeyToken=31bf3856ad364e35"

-版本[.]

指定脚本所需的 PowerShell 最低版本。输入主版本号和可选的次版本号。

例如:

#Requires -Version 6.0

-模块 |

指定脚本所需的 PowerShell 模块。输入模块名称和可选版本号。

如果当前会话中不存在所需的模块,PowerShell 会导入它们。如果无法导入模块,PowerShell 将引发终止错误。

#Requires 语句不会加载模块中的类和枚举定义。在脚本开头使用 using module 语句导入模块,包括类和枚举定义。有关详细信息,请参阅 about_Using。

对于每个模块,键入模块名称 () 或哈希表。该值可以是字符串和哈希表的组合。哈希表具有以下键。

  • ModuleName - 必需 指定模块名称。
  • GUID - 可选 指定模块的 GUID。
  • 必需至少指定以下三个键之一。

    • ModuleVersion - 指定模块的最低可接受版本。
  • MaximumVersion - 指定模块可接受的最大版本。
  • RequiredVersion - 指定模块的准确、必需的版本。它不能与其他版本密钥一起使用。

笔记

Windows PowerShell 5.0 中添加了 RequiredVersion。 Windows PowerShell 5.1 中添加了 MaximumVersion

例如:

要求安装 AzureRM.Netcore(版本 0.12.0 或更高版本)。

#Requires -Modules @{ ModuleName="AzureRM.Netcore"; ModuleVersion="0.12.0" }

要求安装AzureRM.Netcore版本0.12.0)。

#Requires -Modules @{ ModuleName="AzureRM.Netcore"; RequiredVersion="0.12.0" }

需要安装 AzureRM.Netcore(版本 0.12.0 或更低版本)。

#Requires -Modules @{ ModuleName="AzureRM.Netcore"; MaximumVersion="0.12.0" }

要求安装任何版本的 AzureRM.NetcorePowerShellGet

#Requires -Modules AzureRM.Netcore, PowerShellGet

使用 RequiredVersion 键时,请确保您的版本字符串与您需要的版本字符串完全匹配。

Get-Module AzureRM.Netcore -ListAvailable
    Directory: /home/azureuser/.local/share/powershell/Modules

ModuleType Version Name            PSEdition ExportedCommands
---------- ------- ----            --------- ----------------
Script     0.12.0  AzureRM.Netcore Core

以下示例失败,因为 0.120.12.0 不完全匹配。

#Requires -Modules @{ ModuleName="AzureRM.Netcore"; RequiredVersion="0.12" }

-PSEdition

指定脚本所需的 PowerShell 版本。对于 PowerShell,有效值为 Core;对于 Windows PowerShell,有效值为 Desktop

例如:

#Requires -PSEdition Core

-RunAsAdministrator

当此开关参数添加到您的 #Requires 语句中时,它指定您运行脚本的 PowerShell 会话必须以提升的用户权限启动。 RunAsAdministrator 参数在非 Windows 操作系统上被忽略。 RunAsAdministrator 参数是在 PowerShell 4.0 中引入的。

例如:

#Requires -RunAsAdministrator

示例

以下脚本有两个 #Requires 语句。如果两个语句中指定的要求均未满足,则脚本不会运行。每个 #Requires 语句必须是一行中的第一项:

#Requires -Modules AzureRM.Netcore
#Requires -Version 6.0
Param
(
    [parameter(Mandatory=$true)]
    [String[]]
    $Path
)
...

参见

  • about_Automatic_Variables
  • about_Language_Keywords

您需要 登录账户 后才能发表评论

取消回复欢迎 发表评论:

关灯