我有一个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!"
}
答案 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并且问题已经消失。