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会将指定脚本文件的内容转换为脚本块,将脚本块传输到远程计算机,并在远程计算机上运行。