powershell - 使用基于日期比较的 powershell 更新 SharePoint 列表字段
问题描述
我目前正在尝试更新 SharePoint 字段(如果 dateFormat 字段等于或小于当前日期,则称为 Overdue to Yes 的下拉字段。在此阶段,它不会更改值。我错过了什么。请参考我的代码有下面。谢谢
if((Get-PSSnapin | Where {$_.Name -eq "Microsoft.SharePoint.PowerShell"}) -eq $null) {
Add-PSSnapin Microsoft.SharePoint.PowerShell;
}
$SPWeb = Get-SPWeb "http://contoso/sites/test";
$List = $SPWeb.Lists["Catalog"];
$currentDate = Get-Date (Get-Date) -format dd/MM/yyyy;
$items = $List.Items;
foreach ($item in $items) {
$deadline = $item["TA Deadline"];
$dateFormat = Get-Date $deadline -format dd/MM/yyyy;
#if date Format is less or equal than current date then update the Overdue drop down field to yes
if($dateFormat -le $currentDate)
{
$item["Overdue"] = "YES"
$item.Update()
}
}
$SPWeb.Dispose();
解决方案
我认为您需要为选择提供索引/数值。请参阅此处的博客文章。
正如它所提到的,你可以这样做:
$item["Overdue"] = 0; #assuming 0 == YES
或者
$item["Overdue"] = $list.Fields["Overdue"].GetFieldValue("YES");
日期时间逻辑的新代码
if((Get-PSSnapin | Where {$_.Name -eq "Microsoft.SharePoint.PowerShell"}) -eq $null) {
Add-PSSnapin Microsoft.SharePoint.PowerShell;
}
$SPWeb = Get-SPWeb "http://contoso/sites/test";
$List = $SPWeb.Lists["Catalog"];
$currentDate = Get-Date;
$items = $List.Items;
foreach ($item in $items) {
$deadline = $item["TA Deadline"];
$dateFormat = [datetime]$deadline
#if date Format is less or equal than current date then update the Overdue drop down field to yes
if($dateFormat -le $currentDate)
{
$item["Overdue"] = "YES"
Write-Debug $item["Overdue"]
$item.Update()
}
}
$SPWeb.Dispose();
推荐阅读
- github - 计算 Github API 文件 SHA
- libreoffice - 如何使用选项卡关注 LibreOffice Base 中的子表单
- android - 使用 Firebase 时,ListView 仅在 onCreate() 方法中更新
- fortran - Fortran 二维数组的冒泡排序行
- awk - sed:在下面设置多行以相同的开头
- swift - 尝试通过 Swift 克隆 git 存储库遇到协议违规
- mysql - 在数据库触发器中使用 NEW.id 时出现错误
- python-3.x - 将文本带入输入框并搜索的方法?
- java - 如何在java中仅打印3位反转数字(假设该数字有4位)
- javascript - 如何仅在第一个功能完成后才执行第二个功能?