我使用PowerShell创建了一个脚本,用于检查Internet Explorer是否正在运行,如果不是,则运行在Kiosk mode中启动它的快捷方式。 这是脚本:
Invoke-Item 'C:\Users\User\Links\iexplorekiosk.lnk'
Function Processchecker {
$ProcessIE = Get-Process iexplore -ErrorAction SilentlyContinue
if (!$ProcessIE) {
Invoke-Item 'C:\Users\User\Links\iexplorekiosk.lnk'
}
Processchecker
}
Processchecker
虽然当我运行这个时,我得到一个“调用深度溢出”错误,我相信这意味着它在函数和螺旋中运行一个函数,我相信PowerShell中的最大值是10。
有解决方法吗?因为我没有看到它。
答案 0 :(得分:2)
您从ProcessChecker
块中调用if
,因此无论是否找到该过程,您每次都会递归一级。
立即解决方法是将递归调用添加到if
子句中,如下所示:
Invoke-Item 'C:\Program Files\Internet Explorer\iexplore.exe'
Function Processchecker {
$ProcessIE = Get-Process iexplore -ErrorAction SilentlyContinue
if (!$ProcessIE) {
Invoke-Item 'C:\Program Files\Internet Explorer\iexplore.exe'
Processchecker
}
}
Processchecker
In this scenario, a
while
loop would suffice and be easier on memory.