2015-12-17 2 views
0

Я пытаюсь получить результаты Get-ChildItem, чтобы отфильтровать список этих папок из CSVPowershell: Get-ChildItem папки из CSV

У меня есть ряд homefolders, которые называются так же, как пользователям SamAccountName (как это обычно бывает)

все домашние папки хранятся на мою долю: \ DomainName \ Users

Мой CSV содержит пользователей, которые являются имена же, как домашние папки Пример:

SamAccountName 
123456 
123457 
123458 

Часть моего сценария, который я хочу работать выглядит следующим образом:

$SAM = import-csv "C:\Scripts\HomeDrive.csv" 
$HomeDriveSharePath = "\\Domain\users" 
$HomeDirectories = Get-ChildItem $HomeDriveSharePath | Where {$_.Name -Match $SAM.samaccountname -AND $_.PsIsContainer -eq $true} 

С моей CSV это не возвращает никаких результатов (хотя папка для примера пользователей в CSV, безусловно, существует)

Если я запускаю это, он возвращает все homefolders (как это необходимо)

Get-ChildItem $HomeDriveSharePath 

Если я запускаю это:

$HomeDirectories = Get-ChildItem $HomeDriveSharePath | Where {$_.Name -Match "123456" -AND $_.PsIsContainer -eq $true} 

тогда я получаю соответствующую папку отображаемую (доказав строки вида работ и папка существует)

Это должно выполняться для сотен пользователей в отношении миграции, в противном случае я бы просто сидеть здесь это делается вручную :-(

Первоначальная публикация, извинения, если это не отформатировано или объяснено совершенно правильно ... тщательный поиск этого сайта, и Google не вернул точный сценарий, который у меня есть.

Я совершенно в тупик ... ваша помощь оценили,

Благодарности

+0

попробуйте заменить $ SAM.samaccountname с $ SAM.samaccountname.trim() –

+0

Привет Энтони. Я попробовал, как было предложено, и получил этот результат: Get-ChildItem: входной объект не может быть привязан к каким-либо параметрам для команды либо потому, что команда не принимает вход в конвейер, либо вход и его свойства не соответствуют ни одному из параметров которые берут ввод трубопровода. В строке: 1 char: 42 – MithUK1

ответ

0
$SAM = import-csv "C:\Scripts\HomeDrive.csv" 
$HomeDriveSharePath = "\\Domain\users" 
$HomeDirectories = Get-ChildItem $HomeDriveSharePath | Where {$_.PsIsContainer} 

$HomeDirectories = $(foreach ($name in $sam) { 
    $HomeDirectories | ? {$_.name -match $name.samaccountname.trim()} 
}) 

или

$HomeDirectories = $sam | % { dir $HomeDriveSharePath -Filter $_.samaccountname.trim() -Directory -Name } 
+0

Это возвращает все правильные папки на выходе, спасибо, однако, выход не включен как часть переменной $ HomeDirectories, что мне действительно нужно (так что однострочный в моем оригинальном примере) ... Я передаю это на другую часть скрипта, которая работает по назначению. На другой ноте, что цикл foreeach был невероятно медленным. – MithUK1

+0

обновленный код для $ homedirectories –

+0

Hi Anthony, ваш первый пример работает, я добавил его к скрипту, который я запускаю :-) Ваш второй пример фактически не возвращает имена папок (только результаты из $ SAM csv.) – MithUK1

 Смежные вопросы

  • Нет связанных вопросов^_^