Powershell Invoke命令忽略脚本文件中的#requires

Powershell Invoke命令忽略脚本文件中的#requires,powershell,require,Powershell,Require,我们已经编写了一些脚本,需要使用Invoke命令调用这些脚本才能在远程机器上运行。这些脚本在顶部包含一些$Requires行。但是,在使用Invoke命令-FilePath运行它们时,似乎完全忽略了#Requires字符串 Script.ps1 #Requires -Version 9 [CmdLetBinding()] Param ( [String[]]$Path ) 'Success' 执行代码: Invoke-Command -FilePath '.\Script.ps1'

我们已经编写了一些脚本,需要使用
Invoke命令调用这些脚本才能在远程机器上运行。这些脚本在顶部包含一些
$Requires
行。但是,在使用
Invoke命令-FilePath
运行它们时,似乎完全忽略了
#Requires
字符串

Script.ps1

#Requires -Version 9

[CmdLetBinding()]
Param (
    [String[]]$Path
)

'Success'
执行代码:

Invoke-Command -FilePath '.\Script.ps1' -ComputerName localhost

没有抛出任何错误,尽管我们希望不满足
#Requires
。所以脚本根本不应该运行。

#
是PowerShell中的单行注释。整行将被忽略。我没有正确理解你的问题。您的代码中,
$Requires
在哪里?请阅读以更好地理解
#Requires
,您的问题是什么?为什么
#Requires
在使用
调用命令-FilePath调用脚本时没有抛出错误,而在使用
&.\script.ps1'
调用脚本时会抛出错误。在这两种情况下都应该抛出..要求仅应用于文件,而不应用于脚本块:使用此参数时,Windows PowerShell会将指定脚本文件的内容转换为脚本块,将脚本块传输到远程计算机,并在远程计算机上运行。