Powershell 我需要清理每个循环之间的运行空间-如何整理脚本
我有一个很好用的剧本。它相当复杂,做了很多“事情”。。当我将整个1000行脚本放入while循环时,问题就开始了 我的一些/许多变量在每个循环中都会加倍并弄乱。 这当然是因为我在相同的运行空间中运行脚本。。那么,我该怎么办?在脚本末尾使用Powershell 我需要清理每个循环之间的运行空间-如何整理脚本,powershell,Powershell,我有一个很好用的剧本。它相当复杂,做了很多“事情”。。当我将整个1000行脚本放入while循环时,问题就开始了 我的一些/许多变量在每个循环中都会加倍并弄乱。 这当然是因为我在相同的运行空间中运行脚本。。那么,我该怎么办?在脚本末尾使用remove variable删除我的所有变量?还是有什么神奇的东西可以让我在每次跑步之间清空我的跑步空间 我觉得我把事情搞得乱七八糟,我需要某种扫描仪来告诉我是否有任何不需要的函数/变量。。我还处于学习的早期阶段,这个脚本一直伴随着我,所以它绝对不是好的编码
remove variable
删除我的所有变量?还是有什么神奇的东西可以让我在每次跑步之间清空我的跑步空间
我觉得我把事情搞得乱七八糟,我需要某种扫描仪来告诉我是否有任何不需要的函数/变量。。我还处于学习的早期阶段,这个脚本一直伴随着我,所以它绝对不是好的编码
那么,在我的情况下,“最佳实践”是什么呢?如果每次都从一个干净的“范围”开始就足够了,那么尝试以下方法:
while (<loop_condition>)
{
& {
... 1000 lines of script
}
}
如果您真的需要一个全新的运行空间(干净的全局变量和脚本变量),您可以启动一个作业,这样每次循环都会得到一个全新的运行空间,但性能不会那么好:
while (<loop_condition>)
{
$job = Start-Job { <path to 1000 line script> }
Wait-Job $job
Receive-Job $job
}
while()
{
$job=开始作业{}
等待作业$Job
接收Job$Job
}
如果每次都从一个干净的“范围”开始就足够了,那么尝试以下方法:
while (<loop_condition>)
{
& {
... 1000 lines of script
}
}
如果您真的需要一个全新的运行空间(干净的全局变量和脚本变量),您可以启动一个作业,这样每次循环都会得到一个全新的运行空间,但性能不会那么好:
while (<loop_condition>)
{
$job = Start-Job { <path to 1000 line script> }
Wait-Job $job
Receive-Job $job
}
while()
{
$job=开始作业{}
等待作业$Job
接收Job$Job
}
您可以在作业的初始化脚本中添加如下内容:
$sysvars = get-variable | select -Expand name
function remove-uservars {
get-variable |
where {$sysvars -notcontains $_.name} |
remove-variable
}
然后在while循环的顶部,点源remove uservars函数:
. remove-uservars
应该在每个循环开始之前删除脚本创建的所有变量 您可以在作业的初始化脚本中添加如下内容:
$sysvars = get-variable | select -Expand name
function remove-uservars {
get-variable |
where {$sysvars -notcontains $_.name} |
remove-variable
}
然后在while循环的顶部,点源remove uservars函数:
. remove-uservars
应该在每个循环开始之前删除脚本创建的所有变量 嗨,巴特!为什么要编辑我的问题?也许所有1000行不需要在循环中运行?:-)最好的做法是将它分解成更小的脚本,并(或在推送时)显式初始化变量。某种明确的运行空间操作可以解决问题,在一次运行中您可能会遇到相同的问题。这是我在所有服务器上执行的服务器扫描,因此它非常广泛且需要,是的:)肯定是一个设计问题。作为短期解决方案,您可以使用
remove Variable-Name var1、var2、var3
删除在每个循环结束时导致问题的变量。作为一个长期的解决方案,开始分析你的1000行代码都在做什么,并找到一些可以分解成可重用函数的东西。作为一种最佳实践,您希望争取模块化的、可重用的代码,以便能够快速导入到其他项目中,而不是一块具有许多相互依赖性的代码块,这限制了可重用性。嗨,巴特!为什么要编辑我的问题?也许所有1000行不需要在循环中运行?:-)最好的做法是将它分解成更小的脚本,并(或在推送时)显式初始化变量。某种明确的运行空间操作可以解决问题,在一次运行中您可能会遇到相同的问题。这是我在所有服务器上执行的服务器扫描,因此它非常广泛且需要,是的:)肯定是一个设计问题。作为短期解决方案,您可以使用remove Variable-Name var1、var2、var3
删除在每个循环结束时导致问题的变量。作为一个长期的解决方案,开始分析你的1000行代码都在做什么,并找到一些可以分解成可重用函数的东西。作为一种最佳实践,您希望争取模块化的、可重用的代码,以便快速导入到其他项目中,而不是一块具有许多相互依赖性的代码块,这会限制可重用性。Fanrastic!这正是我要寻找的:)但是为什么我要点源函数呢?要影响全局作用域?您可以点源它以影响当前作用域(可能是全局作用域,也可能不是全局作用域)。Fanrastic!这正是我要寻找的:)但是为什么我要点源函数呢?若要影响全局范围,请点源以影响当前范围(可能是全局范围,也可能不是全局范围)。