从另一个PowerShell脚本运行脚本

7

如何从另一个PowerShell脚本中正确地运行PowerShell脚本?

我有一个名为a.ps1的脚本,我想调用执行不同任务的b.ps1脚本。

请告诉我您的建议。在这里使用点源是最佳选择吗?

3个回答

8

点操作将使第二个脚本运行,就好像它是调用者的一部分 - 所有脚本范围更改都会影响调用者。如果这是您想要的,请使用点操作。

然而,通常更常见的是将另一个脚本作为函数调用(脚本可以使用param和函数级属性,就像函数一样)。在许多方面,脚本是PowerShell函数,其中文件名替换了函数的命名。


请注意,除非脚本在系统路径上,否则您需要使用完整路径或相对路径来运行它。 - JasonMArcher

1

点号引用使得在后期将脚本转换为模块更加容易,您无需将脚本转换为函数。

另一个点号引用的优点是,您可以通过将包含函数的文件添加到Microsoft.PowerShell_profile.ps1中来将函数添加到您的shell中,这意味着您可以随时使用它们(消除了担心路径等问题的需要)。

我在我的点号引用文件顶部有一个简短的write-host,其中包含函数的名称和常见参数,并且我在我的配置文件中点号引用这些函数。每次打开PowerShell时,我的配置文件中的函数列表都会滚动显示(如果像我一样,您经常忘记函数/文件的确切名称,您会很感激这一点,因为随着函数数量的增加,这个列表会变得越来越长)。


0

虽然老旧但仍然相关。 我使用“Import-Module”模块,这将在当前的PowerShell会话中导入模块。 为了避免缓存并始终拥有来自模块的最新更改,我放置了一个“Get-Module | Remove-Module”,它将清除当前会话中加载的所有模块。

Get-Module | Remove-Module
Import-Module '.\IIS\Functions.psm1'

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接