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

时间:2017-03-28 14:24:52

标签: powershell

我有一个PowerShell脚本,用于测试是否存在两个文件夹,如果没有文件夹而不是创建新文件夹。问题是当我尝试执行脚本时,我得到“脚本因调用深度溢出而失败”错误。另外我想把两个条件放在一个if - 如果文件夹1和文件夹2不存在而不是创建文件夹1和文件夹2 - 否则 - 写文件夹存在。并且(如果可能的话)我想以某种方式检查 - 所以如果文件夹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!"
      } 

2 个答案:

答案 0 :(得分:1)

我不确定这是否会导致您的问题,但您的代码中存在拼写错误:

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

应该是:

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

您看到的错误表明您正在尝试递归超出最大允许通话深度(例如,new-item调用自身超过100次)。

答案 1 :(得分:0)

这是奇怪的PowerShell错误 - 我重新加载了PowerShell ISE并且问题已经消失。