0

我有一个包含多行文本和列的 csv 文件。我想编写一个脚本,一次为每一列分配一个来自单行的变量,然后移动到下一行。基本上,应该将第一列存储为 URL,第二列存储为列表,第三列存储为字段,然后执行这些任务。然后移动到下一行。

$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”循环来做到这一点。请帮忙。

4

1 回答 1

1

在不知道 CSV 字段的格式的情况下,很难确定,但这样的事情可能会在调整您的代码方面起作用(假设这里您有 URL、List 和 Column 的 csv 列名称):

$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()
}

我无法测试共享点元素,但导入 csv(如果它有标题行)然后使用 foreach 循环遍历每个对象/行将起作用。

标题行的重要性在于 Import-CSV 将自动创建一个为每个标题命名的 NoteProperty,然后您可以使用它来访问当前对象/行中的该值。

于 2013-07-04T10:09:52.087 回答