2013-07-03 3 views
0

У меня есть файл csv, который имеет несколько строк текста и столбцов. Я хочу написать сценарий, который будет присваивать каждому столбцу переменную из одной строки по одной и переходить к следующей строке. В принципе, должно произойти, что первый столбец должен быть сохранен как URL-адрес, второй как список и третий как поле, а затем выполнять эти задачи. Затем перейдите к следующей строке.Сценарий удаления столбцов Powershell - SharePoint

$web = Get-SPWeb (Your site URL) 
$list = $web.Lists[“Your List Name”] 
$field = $list.Fields[“Your Column Name”] 
$field.AllowDeletion = “true” 
$field.Sealed = “false” 
$field.Delete() 
$list.Update() 
$web.Dispose() 

Я могу сделать это по строкам, но я хотел бы найти лучший способ сделать это. Я пробовал писать код несколькими способами, но я не могу понять, как это сделать с помощью цикла foreach. Пожалуйста помоги.

+1

Можете ли вы привести пример CSV, Тогда я, возможно, сделаю вас. – JPBlanc

ответ

1

Не зная формат полей CSV, это трудно сказать точно, но что-то подобное может работать с точки зрения адаптации кода (предполагая, что здесь у вас есть Csv имена столбцов URL, списка и столбцов):

$csv = import-csv C:\yourpath\yourfile.csv 
$csv | select * | foreach { 
    $web = Get-SPWeb ($_.URL) 
    $list = $web.Lists[$_.List] 
    $field = $list.Fields[$_.Column] 
    $field.AllowDeletion = “true” 
    $field.Sealed = “false” 
    $field.Delete() 
    $list.Update() 
    $web.Dispose() 
} 

Я не могу протестировать элементы sharepoint, но импортировал csv (если у него есть строка заголовка), то итерация через каждый объект/строку с использованием цикла foreach будет работать.

Важность строки заголовка заключается в том, что Import-CSV автоматически создаст NoteProperty, названный для каждого заголовка, который затем можно использовать для доступа к этому значению в текущем объекте/строке.

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