如何从另一个PowerShell脚本中正确地运行PowerShell脚本?
我有一个名为a.ps1的脚本,我想调用执行不同任务的b.ps1脚本。
请告诉我您的建议。在这里使用点源是最佳选择吗?
如何从另一个PowerShell脚本中正确地运行PowerShell脚本?
我有一个名为a.ps1的脚本,我想调用执行不同任务的b.ps1脚本。
请告诉我您的建议。在这里使用点源是最佳选择吗?
点操作将使第二个脚本运行,就好像它是调用者的一部分 - 所有脚本范围更改都会影响调用者。如果这是您想要的,请使用点操作。
然而,通常更常见的是将另一个脚本作为函数调用(脚本可以使用param
和函数级属性,就像函数一样)。在许多方面,脚本是PowerShell函数,其中文件名替换了函数的命名。
点号引用使得在后期将脚本转换为模块更加容易,您无需将脚本转换为函数。
另一个点号引用的优点是,您可以通过将包含函数的文件添加到Microsoft.PowerShell_profile.ps1中来将函数添加到您的shell中,这意味着您可以随时使用它们(消除了担心路径等问题的需要)。
我在我的点号引用文件顶部有一个简短的write-host,其中包含函数的名称和常见参数,并且我在我的配置文件中点号引用这些函数。每次打开PowerShell时,我的配置文件中的函数列表都会滚动显示(如果像我一样,您经常忘记函数/文件的确切名称,您会很感激这一点,因为随着函数数量的增加,这个列表会变得越来越长)。
虽然老旧但仍然相关。 我使用“Import-Module”模块,这将在当前的PowerShell会话中导入模块。 为了避免缓存并始终拥有来自模块的最新更改,我放置了一个“Get-Module | Remove-Module”,它将清除当前会话中加载的所有模块。
Get-Module | Remove-Module
Import-Module '.\IIS\Functions.psm1'