如何从另一个.ps1文件执行.ps1?


14

我有两个PowerShell文件。a.ps1和b.ps1。

在a.ps1的中心点,我想开始在b.ps1中执行代码并终止a.ps1脚本。

考虑到两个文件都位于同一文件夹中,该怎么办?


目前,我正在使用PS“路径文件”,但没有成功
GibboK,2015年

Answers:


4

如果在新的Power Shell进程中执行b.ps1可以吗?如果是这样,则应按照以下说明进行操作。

Invoke-Item (start powershell ((Split-Path $MyInvocation.InvocationName) + "\b.ps1"))

“ Invoke-Expression”以相同的过程执行,但是等待b.ps1终止。



2

我从另一篇文章中得到了这个,但它可以在这里应用:谢谢(/programming//users/3905079/briantist

首先,如果要在单个会话中对远程计算机进行多个调用,请首先创建一个PSSession:

$session = New-PSSession -ComputerName $ComputerName

然后在所有后续调用中使用该会话:

Invoke-Command -Session $session -File $filename
Invoke-Command -Session $session -ScriptBlock {
# Some code

完成后关闭会话:

Remove-PSSession -Session $session

另外,如果您不确切知道该脚本会是什么,但是知道您的脚本启动了,您可以执行以下操作:

$strInst = Get-ChildItem -Path $PSScriptRoot -Filter Import-Carbon.ps1 -recurse -ErrorAction SilentlyContinue -Force | Select Directory
Invoke-Experssion (start Powershell ($strinst\Import-Carbon.ps1)

(那是我的)


0

使用魔术变量$ PSScriptRoot引用当前目录。然后,使用&号调用脚本B(“呼叫操作员”):

$script = $PSScriptRoot+"\b.ps1"
& $script

如果要将B中的变量保留在A的范围内,则可以使用Dot来源运算符运行脚本:

$script = $PSScriptRoot+"\b.ps1"
. $script
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.