Вставить случайное имя пользователя в столбец SharePoint 2013 из массива сценария PowerShell

Я написал скрипт для создания N элементов в настраиваемом списке SharePoint в PowerShell. Я заставил его работать с фиксированными значениями, но теперь я хотел бы создавать элементы со случайными значениями.
Я создал внутренние переменные, которые являются массивом значений, и я хотел бы, чтобы из них были установлены столбцы списка.
Я сделал так, чтобы он работал для некоторых простых столбцов, таких как дата, одна и несколько строк текста и т. Д. Но я не могу заставить его работать для поиска и значений людей. Ниже приведен пример скрипта, который я сделал. В этом примере я не получаю сообщение об ошибке в PowerShell. Я просто получаю неверный результат в столбцах, например, я получаю имя пользователя в столбце выбора людей, который не находится в массиве значений userName. Я получаю ID;#User8 (например), которого нет в массиве.

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

Add-PSSnapin Microsoft.SharePoint.PowerShell -EA SilentlyContinue

$webUrl = "site url"
$listName = "list name"
$numberItemsToCreate = N
# userName is array of values of usernames that would be set to people picker column
$userName = ID;#user1, ID;#User2, ID;#User3, ID;#User6, ID;#User10
# projectName is array of values of projects that are lookup column from another list
$projectName = 1;#Project1, 2;#Project2, 3;#Project3, 4;#Project4
# 

$web = Get-SPWeb $webUrl
$list = $web.Lists[$listName]

for($i=1; $i -le $numberItemsToCreate; $i++)
{
$newItem = $list.AddItem()
$newItem["Title"] = "Title"
$newItem["Project"] = (Get-Random $projectName)
$newItem["DueDate"] = "2017-12-12 00:00:00"
$newItem["Assigned_x0020_To"] = (Get-Random $userName)
$newItem["EstimatedFinishDate"] = "2017-12-12 00:00:00"
#$newItem["Status"] = "ToDo"
$newItem["URLs"] = "www.google.com"

$newItem.Update()
}

$web.Dispose()

1 ответ

Решение

Это "$userName = ID;#user1, ID;#User2, ID;#User3, ID;#User6, ID;#User10"не является массивом PowerShell или хеш-таблицей

Используя массив:

$userName = @("#user1", "#User2", "#User3", "#User6", "#User10")
$newItem["Assigned_x0020_To"] = Get-Random $userName

Использование хеш-таблицы:

$projectName = @{1="#Project1"; 2="#Project2"; 3="#Project3"; 4="#Project4"}
$newItem["Project"] = $ProjectName.(Get-Random @($ProjectName.Keys))

Или просто:

$newItem["Project"] = Get-Random @($ProjectName.Values)
Другие вопросы по тегам