Samstag, 30. Juni 2018

Bereinigen von virtuellen maschinen

Als SharePoint-Entwickler arbeite ich häufig in Virtuellen umgebungen. Diese sollten gerne möglichst "platzsparend" gelagert werden können - das ist auch gut, wenn mal eine Maschine an einen Kollegen "abgetreten" werden soll.

Mein akutelles Vorgehen dabei ist das folgende:
  • Bereinigung des WinSxS-Ordners mittles "Dism.exe /online /Cleanup-Image"
    • Für Service-Packs mit dem Parameter "/SPSuperseded"
    • Für Komponenten mit dem Parameter "/StartComponentCleanup /ResetBase"
  • Bereinigung der Laufwerke mittels "cleangr.exe"
    • Um den cleanmgr ohne Rückfragen zu starten gibt es die Parameter "/sageset" und "/sagerun". (Entgegen der Dokumentation gibt es nur 9999 verschiedene Speicherplätze und nicht 65535). Die Einstellungen, die mit "sageset" vorgenommen werden, werden in der registry gespeichert und daher auch einfach mit Powershell angelegt werden.
  • Defragmentierung des Datenträgers mit ultradefrag
    • Für optimale Ergebnisse verwende ich die Parameter "--optimize" und "--repeat"
  • "Nullen" der nicht mehr verwendeten Blöcke des Datenträgers mit sdelete
    • Für das "einfache" "Nullen" der Blöcke verwende ich den Parameter "-z"
    • Dieser Schritt führt - zusammen mit der defragmentierung - zu einem besseren Ergebnis beim komprimieren der virtuellen Festplatte

Komplett sieht das Skript dann so aus:
Dism.exe /online /Cleanup-Image /StartComponentCleanup /ResetBase
Dism.exe /online /Cleanup-Image /SPSuperseded
Get-ChildItem HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\VolumeCaches | `
              %{ $_| Set-ItemProperty -Name "StateFlags1234" -Value 2 }
cleanmgr.exe /sagerun:1234
udefrag.exe --optimize --repeat C:
sdelete.exe -q -z C:

Donnerstag, 28. Juni 2018

SharePoint Listeneinstellungen öffnen ohne Ribbon...

Aktuell bestand das Problem dass für einige SharePoint-Listen die Einstellungsseite geöffnet werden sollte, der Ribbon aber nicht verfügbar war.
Einstellungen von Listen erfolgen ja über die Seite "listedit.aspx" im layouts, stellt sich nur die Frage wie man schnell an die ID der liste kommt, da diese ja als query-parameter übergeben werden muss.


Meine Antwort ist in SharePoint ab 2010 lauffähig:

document.location = 
    document.location.href.replace(document.location.pathname, '') + 
    _spPageContextInfo.webServerRelativeUrl.replace(/\/?$/, '/' + 
    (_spPageContextInfo.layoutsUrl || '_layouts') + 
    '/listedit.aspx?List=' + 
    encodeURIComponent(_spPageContextInfo.pageListId))


Einfach in der Konsole einer Listenseite (z.B. "AllItems.aspx") ausführen.