“错误”;由于调用深度溢出,脚本失败;在执行PowerShell脚本期间

“错误”;由于调用深度溢出,脚本失败;在执行PowerShell脚本期间,powershell,Powershell,我有一个PowerShell脚本,它测试是否存在两个文件夹,如果没有文件夹,则创建一个新文件夹。问题是,当我尝试执行脚本时,我得到“由于调用深度溢出而导致脚本失败”错误。另外,我想把两个条件放在一个if-if文件夹1和文件夹2不存在,而不是create文件夹1和文件夹2-else-write文件夹存在。而且(如果可能的话)我想以某种方式检查-所以如果文件夹1存在,而不是只创建文件夹2和写入-文件夹1存在 # Start script recording Start-Transcript #

我有一个PowerShell脚本,它测试是否存在两个文件夹,如果没有文件夹,则创建一个新文件夹。问题是,当我尝试执行脚本时,我得到“由于调用深度溢出而导致脚本失败”错误。另外,我想把两个条件放在一个if-if文件夹1和文件夹2不存在,而不是create文件夹1和文件夹2-else-write文件夹存在。而且(如果可能的话)我想以某种方式检查-所以如果文件夹1存在,而不是只创建文件夹2和写入-文件夹1存在

# Start script recording

Start-Transcript

# Variable which is path to future/existing PowerShell log folder

$ptsl = "$($env:HOMEDRIVE)\VL\Win_mult_machines"

# Variable which is path of future/existing Vagrant folder

$ptvf = "$($env:HOMEDRIVE)\VM\Win_mult_machines"

# Variable which is future/existing name of log and Vagrant folders

$lvn = "Win_mult_machines"

# Test path for script log - if path doesn't exist - create it

if (-Not (Test-Path $ptsl -PathType Container))

      {
       New-Item -Path "$($env:HOMEDRIVE)\VL\" -Name $lvn -ItemType Directory      
      }

 else {
         Write-Output "Folder already exists!"
      }

# Test path for Vagrant box folder - if path doesn't exist - create it

 if (-Not (Test-Path $ptvf -PathType Container))

      {
       New-Item -Path "$($env:HOMEDRIVE)VB\" -Name $lvn -ItemType Directory
      }

 else {
       Write-Output "Folder already exists!"
      } 

我不确定这是否导致了您的问题,但您的代码中有一个输入错误:

   New-Item -Path "$($env:HOMEDRIVE)VB\" -Name $lvn -ItemType Directory
应该是:

   New-Item -Path "$($env:HOMEDRIVE)\VB\" -Name $lvn -ItemType Directory

您看到的错误表明您正在尝试执行超出最大允许调用深度的递归操作(例如,新项调用自身超过100次)。

这是一个奇怪的PowerShell错误-我已重新加载PowerShell ISE,问题已解决。

这似乎不是整个脚本;您正在使用从未定义过的变量(
$ptsl
$ptvf
)。请包含整个脚本(并告诉我们文件名),或者将脚本简化为一个最小的独立脚本,以再现问题。@JeffZeitlin脚本尚未完成。我已经编辑了最初的帖子,并把我现在拥有的所有东西都放进去了。你的代码对我来说很有用,但是你看到的错误表明你正在尝试递归地做一些超出最大允许调用深度的事情。您的大型脚本中是否存在任何递归?PowerShell ISE的问题在于它似乎可以在脚本执行之间保存变量。如果脚本引用了变量$foo,但$foo尚未在当前执行中定义,但它是在上一次执行中定义的,那么它仍将具有上一次执行中的值。