如何在另一个会话(Powershell ISE 选项卡)中使用一个变量?
How do I use a variable from one session (a Powershell ISE tab) in another?
这是我想要实现的目标的准系统代码..
$destinationDir = "subdir1"
#creating tab
$newTab = $psise.PowerShellTabs.Add()
Do
{sleep -m 100}
While (!$newTab.CanInvoke)
#running required script in tab
$newTab.Invoke({ cd $destinationDir})
由于 $destinationDir 是在父选项卡中初始化的,它的范围仅限于它,我在子选项卡中得到以下错误
cd : Cannot process argument because the value of argument "path" is null. Change the value of argument "path" to a non-null value.
如何克服这个问题并使用子选项卡中的值?
简答:你不能。 PowerShell ISE 中的每个选项卡都是使用新的运行空间创建的。没有提供用于将变量注入此运行空间的方法。
长答案:总有变通办法。这里有两个。
1.使用调用脚本块将变量传输到新的运行空间:
$destinationDir = "subdir1"
#creating tab
$newTab = $psise.PowerShellTabs.Add()
Do
{sleep -m 100}
While (!$newTab.CanInvoke)
$scriptblock = "`$destinationDir = `"$($destinationDir)`"
cd `$destinationDir"
#running required script in tab
$newTab.Invoke($scriptblock)
2。使用en环境变量:
$env:destinationDir = "subdir1"
#creating tab
$newTab = $psise.PowerShellTabs.Add()
Do
{sleep -m 100}
While (!$newTab.CanInvoke)
#running required script in tab
$newTab.Invoke({ cd $env:destinationDir})
这是我想要实现的目标的准系统代码..
$destinationDir = "subdir1"
#creating tab
$newTab = $psise.PowerShellTabs.Add()
Do
{sleep -m 100}
While (!$newTab.CanInvoke)
#running required script in tab
$newTab.Invoke({ cd $destinationDir})
由于 $destinationDir 是在父选项卡中初始化的,它的范围仅限于它,我在子选项卡中得到以下错误
cd : Cannot process argument because the value of argument "path" is null. Change the value of argument "path" to a non-null value.
如何克服这个问题并使用子选项卡中的值?
简答:你不能。 PowerShell ISE 中的每个选项卡都是使用新的运行空间创建的。没有提供用于将变量注入此运行空间的方法。
长答案:总有变通办法。这里有两个。
1.使用调用脚本块将变量传输到新的运行空间:
$destinationDir = "subdir1"
#creating tab
$newTab = $psise.PowerShellTabs.Add()
Do
{sleep -m 100}
While (!$newTab.CanInvoke)
$scriptblock = "`$destinationDir = `"$($destinationDir)`"
cd `$destinationDir"
#running required script in tab
$newTab.Invoke($scriptblock)
2。使用en环境变量:
$env:destinationDir = "subdir1"
#creating tab
$newTab = $psise.PowerShellTabs.Add()
Do
{sleep -m 100}
While (!$newTab.CanInvoke)
#running required script in tab
$newTab.Invoke({ cd $env:destinationDir})