从用户的 CSV 中检查文件夹是否存在于 NAS 中

Check if a folder exists or not in the NAS from a CSV of users

我必须制作一个脚本,从包含用户列表的 CSV 文件中检查文件是否存在于我们的 NAS 中。 我做了这个小脚本,但结果有点坏了,我没有 理解为什么拼写错误是“{user=USER10}”而不仅仅是“USER10”

This is the result from the script:

This is my CSV of users

脚本:

$sInputFile = "D:\Script\ADD2000.csv"
$sColumnName = "User"
$tblUsers = Import-Csv $sInputFile
$FolderPath = "\somepath.tech.intra.workplace.fr\users$\ADD"
$Retrieve = Test-Path $Path

foreach($user in $tblUsers){
    $Path = $FolderPath + "\" + $($user) + ".ADD2000"
    if (!(Test-Path $Path)) {
        write-host "$path does not exist"

} Else {write-host "it exist"}
}

您正在导入包含“用户”列的 CSV。

您需要 return 该列的值,例如$($user.User) 不只是 $($user).

$user 包含整行 $user.User 仅包含该列的值。

查看您输入的 CSV 图像,我可以看到它有一个 header user。导入该 csv 时,该列中的所有项目都是 objects,其中一个 属性 称为 user
要获得它的 value,您需要像 $user.user.

一样展开它

在您的情况下,由于文件中只有一列,如果您在导入时直接展开值会更简单,这样您就可以遍历用户名的字符串数组。

$sInputFile  = 'X:\Folder\AllUsers.csv'                         # full path to the input csv file
$tblUsers    = (Import-Csv $sInputFile).user                    # just get the values of all items for column 'user' as striong array
$FolderPath  = '\somepath.tech.intra.workplace.fr\users$\ADD'

foreach($userName in $tblUsers) {
    $path = Join-Path -Path $FolderPath -ChildPath "$username.ADD2000"
    if (Test-Path $Path -PathType Container) { 
        Write-Host "$path exists"
    }
    else {
        Write-Warning "$path could not be found"
    }
}