Импортировать кратные данные столбца из xlsx в cmd PowerShell - PullRequest
0 голосов
/ 07 мая 2020

На входе: у меня есть столбец \ users \self \ desktop \ test \ file.xslx, содержащий кратные столбцы, например:

ColumnA ColumnB ... ColumnQ (всего 17 столбцов)

в каждом столбце есть некоторые данные.

На выходе:

Я хотел бы иметь такой cmd:

New-ADUser -Name $(columnAdata) -GivenName "$(columnBdata)" -Surname "$(columnCdata)" -DisplayName "$(columnDdata)" -SamAccountName "$(columnEdata)" ... etc until -blabla "$(ColumnQdata)"

Возможно ли хранить данные столбца в переменные, чтобы вставить их в команду?

Большое спасибо.

1 Ответ

0 голосов
/ 07 мая 2020

Я бы посоветовал сначала изменить заголовки столбцов так, чтобы они были такими же, как параметры, которые вы собираетесь использовать с New-ADUser командлетом.
Наличие совпадающих заголовков очень поможет избежать ошибок.

Затем сохраните файл Excel как CSV, скажем, файл с именем NewUsers.csv

Тогда код может быть довольно простым и легким в обслуживании:

# import the CSV file using the same separator character as Excel uses on your system
Import-Csv -Path 'X:\NewUsers.csv' -UseCulture | ForEach-Object {
    # use Splatting: create a Hashtable with all properties needed taken from the CSV
    # see: https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.core/about/about_splatting
    $userProperties = @{
       Name           = $_.Name       # as opposed to $_.columnAdata
       GivenName      = $_.GivenName  # as opposed to $_.columnBdata
       Surname        = $_.Surname
       DisplayName    = $_.DisplayName
       SamAccountName = $_.SamAccountName

       # etcetera
    }
    New-ADUser @userProperties
}
...