PowerShell if/else Test-Path

4
由于某些原因,if/else语句无法正常工作。它确实可以创建目录,但没有执行if部分并显示“文件夹已存在”。我作为一个新手可能没发现一些非常明显的问题。感谢您的帮助。
Set-Location "\\domain.net\Target" 

$Folders = Import-Csv "C:\Temp\Test.csv" 

ForEach ($Folder in $Folders) { 

    if (Test-Path -LiteralPath $Folder -PathType Container)
    { 
    Write-Host "Folder exists already"
    } 
    else 
    {
    New-Item $Folder.Name -Type Directory 
    }
} 

CSV文件内容示例:

CSV文件内容示例:

Name
Folder1
Folder2
Folder3
Folder3\Folder1

解决方案感谢下面的人提供的帮助:

#================= VARIABLES ==================================================
 $Target = "\\Temp\Target" 
 $InputF = "\\Temp\Downloads\Test.csv" 
#
# CSV-File format:
# Name
# Dir1
# Dir2
# Dir3\Subdir1

CLS
Write-Host "Folder creation`n"

#$Target = Read-Host "Provide the full UNC-Path where we need to create subfolders"
#$InputF = Read-Host "Provide the full UNC-Path & name of the CSV input file"

$Folders = Import-Csv $InputF 
Set-Location $Target

Write-Host "`nStarting folder creation:`n"

ForEach ($Folder in $Folders) { 

    if (Test-Path -LiteralPath $Folder.Name -PathType Container)
    { 
    Write-Host "-Exists: $Target\$($Folder.Name)" -ForegroundColor DarkGray
    } 
    else 
    {
    New-Item $Folder.Name -Type Directory  > $null
    Write-Host "-Created: $Target\$($Folder.Name)"
    }
} 
1个回答

3
我们需要一个CSV样本来帮助您。最有可能的问题是将路径设置为行对象($folder)。CSV具有标题,因此您需要使用路径访问属性。例如:
if (Test-Path -LiteralPath $Folder.Name -PathType Container)

更新:在提供CSV样例后,示例已更新为正确的属性名称。


CSV文件的内容已添加到初始帖子中。 - DarkLite1
在if语句中使用$Folder.Name,例如if (Test-Path -LiteralPath $Folder.Name -PathType Container)来访问文件夹名称。 - tkokasih
是的,你说得对。将if语句改为$Folder.Name就解决了。非常感谢你! :) - DarkLite1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接