2017-03-28 7 views
1

2つのフォルダが存在するかどうかをテストし、新しいフォルダを作成するよりもフォルダがない場合は、PowerShellスクリプトがあります。問題は、スクリプトを実行しようとすると、「呼び出し深度がオーバーフローしたためにスクリプトが失敗しました」というエラーが発生します。また、if-ifフォルダ1とfolder 2が存在しない場合は、フォルダ1を作成し、フォルダ2 - else-writeフォルダを作成するよりも、if条件に2つの条件を入れたいと思います。そして、(もし可能ならば)私は何とかチェックしたいと思います。フォルダ1が存在する場合は、フォルダ2のみを作成し、フォルダ1を作成してください。エラーPowerShellスクリプトの実行中に "コール深度オーバーフローのためスクリプトが失敗しました"

私は、これはあなたの問題を引き起こしているが、あなたのコードにタイプミスがあるかどうかわからないんだけど
# 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

これはスクリプト全体ではありません。定義されていない変数( '$ ptsl'と' $ ptvf')を使用しています。スクリプト全体を含める(そしてファイル名を教えてください)か、問題を再現する最小限のスタンドアロンスクリプトに減らしてください。 –

+0

@JeffZeitlinスクリプトはまだ完成していません。私は元の投稿を編集して、私が今持っているものすべてを置いています。 –

+0

あなたのコードは私には当てはまりますが、表示されているエラーは、最大許容コール深度を超えて再帰的に何かをしようとしていることを示唆しています。あなたのより大きなスクリプトに再帰はありますか? –

答えて

0

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

は次のようになります。

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

あなたが見ているエラー(たとえば、new-itemは100回以上呼び出されています)最大許容コール深度を超えて再帰的に何かをしようとしていることを示唆しています。

0

これは奇妙なPowerShellエラーです。私はPowerShell ISEをリロードし、問題はなくなりました。

関連する問題