SharePointCommunity
Die deutschsprachige Community für SharePoint, Microsoft 365, Teams, Yammer und mit Azure

Sponsored by

Willkommen im Forum Archiv.
Einträge sind hier nicht mehr möglich, aber der Bestand von 12 Jahren SharePoint-Wissen ist hier recherchierbar.




Powershell- DateTime Field Default Values

Geprüfte Antwort Dieser Beitrag hat 8 Antworten

Ohne Rang
282 Beiträge
MStel erstellt 25 Nov. 2015 11:16
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Hallo,

ich entwickle zurzeit ein PowerShell Skript zum erstellen von Listen & Feldern.
Nun lautet meine Aufgabe 2 DateTime Felder zu erstellen, eines mit dem Erstelldatum und eines mit einem Ablaufdatum, was immer exakt 1 Jahr nach Erstelldatum stattfinden soll.

Das Erstelldatum habe ich über DefaultValue[today] gesetzt.
$lList.Fields["Erstelldatum"].Defaultvalue="[today]"

Wie kann ich nun für das Ablaufdatum das [today] erweitern? Mit [today] +365 funktioniert es nicht, habe dazu auch auf Anhieb nichts im Netz gefunden. So in etwa möchte ich das haben:

Beispiel:
$lList.Fields["Prüfdatum "].Defaultvalue="[today+365]" 

Über die Oberfläche kann man mit den "= Formeln" DateTime Typen erweitern, allerdings hilft mir das im Bezug auf die PowerShell nicht weiter.

MFG
Mstel

Alle Antworten

Ohne Rang
19231 Beiträge
Andi Fandrich Als Antwort am 25 Nov. 2015 12:18
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Ich bin mir auch nicht ganz sicher, aber versuche mal "[today]+365"

Sowas kannst Du übrigens (wie vieles andere) herausfinden, indem Du es ganz normal im Browser anlegst und Dir dann das Objektmodell dazu anschaust. Also z.B. per PowerShell zugreifen und schauen, was im DefaultValue steht.

Viele Grüße
Andi
af @ evocom de
Blog
Ohne Rang
282 Beiträge
MStel Als Antwort am 8 Dez. 2015 10:45
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Entschuldige die verspätete Antwort, ich war im Urlaub.

"[today] + 365" funktioniert leider nicht, ich habe auch keine bestehende Spalte in der der Default schon gesetzt ist, wie ich ihnbenötige, zum nachschauen.
ebenfalls habe ich "[today+365" und "[today]" +365 probiert, erfolglos.

mfg

mstel

Ohne Rang
19231 Beiträge
Andi Fandrich Als Antwort am 8 Dez. 2015 11:01
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Und warum legst Du Dir nicht einfach eine passende Spalte in irgendeiner Spielwiese an und schaust dann wie SharePoint das gemacht hat?

Da Du anscheinend zu faul bist, es mich aber interessiert hat, habe ich das kurz gemacht. ergebnis: setze DefaultFormula auf =TODAY+365

Viele Grüße
Andi
af @ evocom de
Blog
Ohne Rang
282 Beiträge
MStel Als Antwort am 8 Dez. 2015 14:29
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Das hat nichts mit Faulheit zutun, wir reden anscheinend aneinander vorbei.

Es dreht sich ja darum wie ich genannten Standardwert innerhalb der PowerShell setze.

 Ein Objekt über die Oberfläche zu generieren ermöglicht mir lediglich eine Ausgabe des Objektes & deren Eigenschaften. Diese sind allerdings in der Property XML-Schema angegeben, und dort wird die Formel verwendet. =Today+365

Dieses wissen ist zwar nützlich um nachzuvollziehen was getan wurde, allerdings wird innerhalb der PowerShell eine andere Schreibweise für die Syntax verwendet. Beispielsweise wird die variable today nur akzeptiert wenn man sie im Code einklammert. ([today])

Ich habe darauf hin unzählige Snippets gefunden wo das simple [today] für den Standardwert gesetzt wird, allerdings kein Beispiel in dem das Today erweitert wird. (nur auf PowerShell bezogen, die Formel für die Oberfläche findet man ganz oft und wurde ja auch in deiner Antwort schon verwendet)

https://social.msdn.microsoft.com/Forums/office/en-US/f70a10b4-e048-4a12-ac4b-b3f92b2b4ce2/powershell-set-default-value-of-date-and-time-column?forum=sharepointdevelopmentprevious

http://sharepoint.stackexchange.com/questions/118682/how-to-set-a-default-value-for-date-column-to-todays-date

mfg mstel

Ohne Rang
19231 Beiträge
Andi Fandrich Als Antwort am 8 Dez. 2015 14:57
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Das hat doch nichts mit dem SchemaXML zu tun. Du kannst Dir ein solches Feld doch auch per PowerShell holen und dann dessen Eigenschaften auslesen, um herauszufinden, was wie gesetzt werden muß. Das geht sogar ganz einfach, wenn Du in PowerShell einfach die Variable mit dem SPField an format-list übergibst:

$web = Get-SPWeb(...)
$field = $web.Fields[...]
$field | format-list

Genau damit habe ich übrigens das oben gepostete herausgefunden :-)

Viele Grüße
Andi
af @ evocom de
Blog
Ohne Rang
282 Beiträge
MStel Als Antwort am 9 Dez. 2015 07:57
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Das war mir bisher nicht bekannt, entschuldige vielmals.

besten dank!

Ohne Rang
19231 Beiträge
Andi Fandrich Als Antwort am 9 Dez. 2015 08:11
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Kein Problem. Ich hoffe, Du kommst damit weiter.

Viele Grüße
Andi
af @ evocom de
Blog
Ohne Rang
282 Beiträge
MStel Als Antwort am 9 Dez. 2015 10:54
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Hier nun für Interessierte noch mein Lösungs-Code:

PS P:\> $w = "http://localhost "
PS P:\> $web = Get-SPWeb $w
PS P:\> $list = $web.Lists["Dokumente"]
PS P:\> $field = $list.Fields["Prüfdatum"]
PS P:\> $field | format-list

#Ausgabe
DisplayFormat               : DateTime
DefaultValueTyped           : 08.12.2016 00:00:00
DefaultValue                :
DefaultFormula              : =Today+365

Über PowerShell habe ich jetzt also anstatt den DefaultValue die DefaultFormula gesetzt:

$spSite = Get-SPSite -Identity $mwWeb
$spWeb = Get-SPWeb $webURL    
$lList=$spWeb.Lists["Dokumente"] 
$lList.Fields.Add("Prüfdatum","DateTime",$true)
$lList.Fields["Prüfdatum"].Title="Prüfdatum"
$lList.Fields["Prüfdatum"].DefaultFormula="Today+365";
$lList.Fields["Prüfdatum"].Update()
$lList.Update()

Funktioniert nun einwandfrei!
Format-List ist echt nützlich.

Beste Grüße