我在SharePoint列表中有数据(日期),我试图与数组中的数据(多个日期)进行比较。如果数组中有一个项目(当时不是一个数组),它可以工作,但不止一个它失败了。 SharePoint列表包含一个日期(格式为M / dd / yyyy),如果我的脚本在该日期之后的三天内运行,它将执行更多操作,否则将失败。最后我需要在六十天前拿到它,所以为了保持脚本可管理我想让阵列工作。将60天重新安装回阵列将是我的下一个挑战。
我希望我能够在脚本中使用相对于当天的日期数组。设定的硬日期不起作用。我试图查看SharePoint中的日期是否在数组中。
$item is an item from the SharePoint list, and the stuff in brackets ["..."] is the column header.
这就是我获取日期的方式:
$today = (get-date).ToString("M/dd/yyyy")
$yesterday = (get-date).AddDays(-1).ToString("M/dd/yyyy")
$twodaysago = (get-date).AddDays(-2).ToString("M/dd/yyyy")
这是我的阵列:
enter code here
$ scheduledate = $ today,$ yesterday,$ twodaysago
这是逻辑:
if(($item["Computer"] -eq "$computer") -and ($item["Status"] -eq "No") -and ($item["Schedule Date"] -contains $scheduledate))
其他尝试:
If $scheduledate is set to this it works:
$ scheduledate = $ today
如果$ scheduledate设置为this,则不起作用:$scheduledate = $today,$yesterday,$twodaysago
我甚至明确地创建了数组,它不起作用:$scheduledate = @($today,$yesterday,$twodaysago)
行情,空间,已经尝试过。
我试过这些:
-and ($item["Schedule Date"] -eq $scheduledate)) - works if dates match
-and ($item["Schedule Date"] -contains $scheduledate)) - works with single item in array
-and ($item["Schedule Date"] -match $scheduledate)) - ?
-and ($item["Schedule Date"] -like $scheduledate)) - ?
这有效,但六十天不理想:if(($ item [“Computer”] -eq“$ computer”) - 和
($item["Status"] -eq "No") -and `
($item["Schedule Date"] -contains $today) -or ($item["Schedule Date"] -contains $yesterday) -or ($item["Schedule Date"] -contains $twodaysago))
我不确定如何弄清楚SharePoint中的数据格式是什么,或者它是否重要。
请帮忙。
答案 0 :(得分:1)
使用-contains
运算符时,您需要翻转变量。您的参考值或数组需要位于左侧,测试值需要位于右侧。请参阅TechNet documentation on about_Comparison_Operators。
此外,正如@ websch01ar指出的那样,格式需要匹配以及类型(字符串到字符串或日期到日期)。你可以采用任何一种方式,但只要格式和类型相同,这样的东西就应该有效:
[String]$today = (get-date).ToString("M/dd/yyyy")
...
[String[]]$scheduleDate = $today, $yesterday, $twodaysago
(... ($scheduleDate -contains $item["Schedule Date"].ToString("M/dd/yyyy")))
这假定$item.Fields["Schedule Date"].GetType().FullName
等于Microsoft.SharePoint.SPFieldDateTime
。
答案 1 :(得分:0)
SharePoint以特定格式存储数据。以下是我使用格式的几个函数:
function ToSPDateTime
{
param($date)
if ($date -ne $null)
{
return [System.Convert]::ToDateTime($date).ToString("yyyy-MM-ddTHH:mm:ssZ")
}
else
{
[string]::Empty
}
}
function ToSPDate
{
param([datetime]$date)
if ($date -ne $null)
{
return [System.Convert]::ToDateTime($date).ToString("yyyy-MM-dd")
}
else
{
[string]::Empty
}
}