0

エクストリームパワーシェルの初心者です。すべての助けに感謝します。Sharepoint/Powershell で動作する単純なフラッディング防止スクリプトをまとめようとしています。フィールド内の日時を調べて現在の日時と比較し、最後の送信から 5 秒以内であれば実行を停止する必要があります。現在使用しているメソッドは、常に true と評価されるようです。

#get system datetime (output format - 06/12/2014 07:57:25)
$a = (Get-Date)


# Get current List Item
$ListItem = $List.GetItemById($ItemID)
$DateToCompare = $ListItem["baseline"].AddMilliseconds(5000)

if ($DateToCompare -gt $a)
     {Break}


#set variable to field
$ListItem["baseline"] = $a


#write new item
$ListItem.Update()
Break
4

2 に答える 2

0

Sharepoint にアクセスできないため、完全にテストすることはできません。

「ベースライン」属性のデータ型を確認できますか?

($ListItem["baseline"]).getType().Name

5000 ミリ秒が本当に追加されていると確信していますか?

Write-Output "NOW: $($curDate) BASELINE: $($DateToCompare) DIFF: $( ($curDate - $DateToCompare).TotalMilliseconds )"

評価を自然に終了させるのではなく、ブレークを使用するのはなぜですか? 以下は、コードを再構築する別の方法です。

#The difference in Milliseconds acceptable
$threshold = 5000

#Get current date, the formatting depends on what you have defined for output. 
$curDate = Get-Date

#Get current list item from SP
$listItem = $List.GetItemById($ItemID)

# Get current List Item's baseline
$DateToCompare = $listItem["baseline"]

Write-Output "NOW: $($curDate) BASELINE: $($DateToCompare) DIFF: $( ($curDate - $DateToCompare).TotalMilliseconds )"

if ( ($curDate - $DateToCompare).TotalMilliseconds -le $threshold ){

    #set variable to field
    $ListItem["baseline"] = $curDate

    #write new item
    $ListItem.Update()
} else {
    #Outside of threshold
}
于 2014-06-12T13:26:56.647 に答える