Archiv

Archiv für die Kategorie ‘Allgemein’

Windows Server 2012 Logins verbergen

27. Februar 2014 Keine Kommentare

Ein neuer Windows 2012 R2 Webserver zeigte per Default fleißig alle angelegten User an. Um das Problem in den Griff zu bekommen, genügt ein Aufruf der

secpol.msc

Dort kann man dieser Anleitung folgen, entnommen von http://social.technet.microsoft.com/

Open Computer Configuration, Security Options and on the right hand side, scroll down to Interactive logon: Do not display last user name. Double click on this entry and you will be presented with a dialog box that has two options – Enabled and Disabled (default). Change this setting to Enabled, and then click on the OK button.
Open Interactive logon: Do not require CTRL+ALT+DEL and select the Disable option and click OK.

KategorienAllgemein Tags:

Fehler bei Windows Software RAID Wiederherstellung

16. Oktober 2013 Keine Kommentare

Gestern stand ich vor dem Problem, dass nach einem Festplattenfehler an einem Windows Server 2012 mit dem Tausch einer Festplatte, Windows keinen Spiegel mehr aufbauen konnte. Es kam zu einer klaren Fehlermeldung:

Error – All disks holding extents for a given volume must have the same sector size, and the sector size must be valid.

zu der es auch viele interessante Frage und Antwort Threads gab. Leider brachte mich anfangs kein Tipp wirklich weiter, also hieß es: Ursache suchen und verstehen.

Dabei hat mir das Tool smartctl geholfen. Damit kann man die technischen Daten der Festplatten anzeigen lassen.

Hier die alte Festplatte:

C:\Program Files (x86)\smartmontools\bin>smartctl -x sda
smartctl 6.2 2013-07-26 r3841 [i686-w64-mingw32-2012(64)] (sf-6.2-1)
Copyright (C) 2002-13, Bruce Allen, Christian Franke, www.smartmontools.org

=== START OF INFORMATION SECTION ===
Model Family: Seagate Barracuda LP
Device Model: ST31000520AS
Serial Number: 5VX0WWJD
LU WWN Device Id: 5 000c50 02511506c
Firmware Version: CC32
User Capacity: 1.000.204.886.016 bytes [1,00 TB]
Sector Size: 512 bytes logical/physical
Rotation Rate: 5900 rpm
Device is: In smartctl database [for details use: -P show]
ATA Version is: ATA8-ACS T13/1699-D revision 4
SATA Version is: SATA 2.6, 3.0 Gb/s

und hier die neue Ersatzfestplatte:

C:\Program Files (x86)\smartmontools\bin>smartctl -x sdb
smartctl 6.2 2013-07-26 r3841 [i686-w64-mingw32-2012(64)] (sf-6.2-1)
Copyright (C) 2002-13, Bruce Allen, Christian Franke, www.smartmontools.org

=== START OF INFORMATION SECTION ===
Model Family: Seagate Barracuda 7200.14 (AF)
Device Model: ST1000DM003-1CH162
Serial Number: Z1D4RCQ0
LU WWN Device Id: 5 000c50 063a48af4
Firmware Version: CC47
User Capacity: 1.000.204.886.016 bytes [1,00 TB]
Sector Sizes: 512 bytes logical, 4096 bytes physical
Rotation Rate: 7200 rpm
Device is: In smartctl database [for details use: -P show]
ATA Version is: ACS-2, ACS-3 T13/2161-D revision 3b
SATA Version is: SATA 3.1, 6.0 Gb/s (current: 3.0 Gb/s)

Hier wurde sofort klar, dass die Fehlermeldung das Problem sehr genau beschrieb, die physikalischen Sektorgrößen waren unterschiedlich, genauer gesagt kann ich keine Partition, die auf einer 512′er Sektor-Größe liegt, auf eine 4096′er Sektor-Größe spiegeln, weil das Raster passen kann, aber nicht muss. Ein Anruf beim Support mit der Bitte um Ersatz gegen eine neue Austaschplatte mit 512er Sektoren war dann einfach und löste das Problem.

Und hier noch eine Übersicht über die gefundenen Ratschläge, die auf zu finden waren:

Man kann nur identische Festplatten spiegeln, also beide Platten tauschen

Absoluter Quatsch ohne jede Basis. Identische Platten reduzieren nur die Stolperfallen, machen aber eine Clonen oder Neuaufsetzen vom System erforderlich! Man muss nur darauf achten, dass die Kapazität bis auf das Byte genau ausreichend ist, da die normalen Dialoge meist nur MB anzeigen.

Alles Partitionen löschen und gleich neu als Mirror anlegen

Das funktioniert natürlich, aber löst das Problem sehr aufwendig. In dem Falle geht es dann nur, weil das RAID über den kleinsten Nenner geht (Basis auf 4096′er Sektor) und der 512′er Sektor alle Bedingungen erfüllt. Ein Vermeiden der Mischung 4096er/512er Sektoren ist natürlich sinnvoller.

Genaues Erstellungsdatum mit DIR anzeigen

2. August 2013 Keine Kommentare

Ich benötigte für eine Überprüfung von Dateien auf einem Server das exakte Datum der Erstellung. Ein Blick in die Optionen von DIR oder die Eigenschaften der Datei zeigte aber immer nur Informationen auf die Minute genau an, ich brauchte aber zur sinnvollen vergleichenden Bewertung der Performance die Sekunden-Bruchteile.

Nach etwas erfolgloser Suche habe ich mir das in der Powershell selbst zusammengebastelt:

Get-ChildItem | Sort-Object CreationTime |
 Format-Table Name,@{Expression={$_.CreationTime};FormatString="mm/ss/ff"}

Damit bekommt man wie bei Dir auch alle Dateien in einem Verzeichnis angezeigt, dass ganze wird nach dem Erstelldatum sortiert und mit dem Erstelldatum in Minuten/Sekunden/Sekundenbruchteilen ausgegeben. Bei der Formatierung der Uhrzeit hat man so natürlich viele Möglichkeiten.

KategorienAllgemein, Toolbox Tags:

Von Mozilla Thunderbird nach Office365 wechseln, Teil 3

26. Januar 2013 Keine Kommentare

Nachdem ich in den letzten beiden Teilen bereits von den Problemen bei der Migration von Mozilla Thunderbird nach Office365 berichtet haben, konnte ich nun einen Durchbruch erzielen. Dazu habe ich einen alten virtuellen PC genutzt, in dem noch Office 2003 installiert war (Office 2013 funktioniert im Moment im ersten Schritt noch nicht!). Dort habe ich MailStore Home installiert. Diese Software ist eigentlich dazu da, Emailprogramme zu sichern und bei Bedarf auch wiederherzustellen. Ich habe als ein MailStore-Backup von Thunderbird (diese Software lässt sich problemlos auf einem USB-Stick betreiben) in den alten Rechner mit Outlook 2003 übertragen. Danach war nur noch die pst-Datei in mein reales Outlook 2013 zu übertragen und Outlook mit Office365 zu verbinden. Office365 läuft für Outlook wie ein Exchange und auch die Übertragung großer Ordnerstrukturen ist so kein Problem.

KategorienAllgemein Tags:

Von Mozilla Thunderbird nach Office365 wechseln, Teil 2

6. Januar 2013 2 Kommentare

Wie ich im letzten Beitrag bereits geschrieben habe, versuche ich gerade meine Emails in die Office365 Cloud umzuziehen. Leider ist die Thunderbird-IMAP-Schnittstelle zur Office365-IMAP-Schnittstelle nur bedingt kompatibel. Konkret äußert sich das so:

Problem 1: Kopiert man einen Ordner, der Unterordner enthält, in Richtung Office365, so wird erst der Hauptordner ordentlich angelegt, dann werden dessen Emails übertragen. Der erste Unterordner wird ebenfalls angelegt. Danach erfolgt leider ein Abbruch mit der Servermeldung, dass der Ordner in Office365 nicht vorhanden sei. Im Nachgang lassen sich die Dateien aber problemlos in den Ordner kopieren. Im Endeffekt bedeutet das aber, dass ich alle Ordner einzeln transferieren muss.

Problem 2: Enthält ein Ordner Zeichen wie beispielsweise einen Slash: “12/2012″, so hat man ein echtes Problem: In Office365 wird nur der Ordner 12 angelegt und unterhalb der Ordner 2012 angezeigt. Scheinbar wird der Slash als Trennzeichen gewertet. Auf dem Server landet also erst einmal nur die 12. Löschen lässt sich der Ordner nicht mehr, es kommt ein Fehler. Die einzige Hilfe ist hier, den übergeordneten (!) Ordner zu löschen, was aber auch nur geht, wenn der Papierkorb nicht bereits vom ersten Versuch einen gleichnamigen Ordner enthält.

Zwischenstand: Ich werde den Transfer direkt mit Mozilla Thunderbird erst einmal abbrechen. Wenn ich jeden Ordner einzeln übertragen muss, werde ich noch Wochen beschäftigt sein, da man mit einer weiteren Aktion immer erst den Abschluss der vorangegangenen Aktion abwarten muss. Wenn ich an die vielfältigen Email-Konfigurationen von Kunden denke, würde ich momentan sicher erst einmal vor einem Wechsel in Office365 warnen, wenn man keinen erprobten Migrationspfad hat. Vielleicht ist ja aber auch Outlook wirklich das Mittel der Wahl. Ich werde meinen Test darum darauf verlagern.

KategorienAllgemein Tags:

Von Mozilla Thunderbird nach Office365 wechseln

28. Dezember 2012 Keine Kommentare

Eigentlich ist es ja schön: Ich habe viele mobile Geräte und kann überall meine Emails abrufen, nur liegen die meisten lokal auf dem Rechner. Das möchte ich gern ändern und mache darum gerade einen Test mit Office 365.

Vom Prinzip her stellt das kleine Paket einen IMAP-Webspace von 25GB zur Verfügung und ermöglicht mir (und hier unterscheidet es sich deutlich von Mitbewerbern), mit Outlook Web Access bequem darauf zuzugreifen. Je nach Paket ist auch noch ein Office-Speicherplatz dabei. Der Komfort einer solchen Lösung ist hoch und meine Endgeräte, im speziellen das WindowsPhone sollten davon profitieren.

Leider steht da noch die Frage im Raum: was mache ich mit meinen lokalen Mails in Thunderbird. Ich habe einige Lösungen gefunden, die alle grob wie folgt gingen: Nutze ein Tool und exportiere oder archiviere Thunderbird. Importiere alles in Outlook und schiebe es dann in die Cloud. Nur leider habe ich kein Outlook installiert und wollte auch nicht erst alle Daten übernehmen. Dann kam mir eine andere Idee: Office 365 stellt mir auch eine IMAP-Schnittstelle zur Verfügung. Diese soll beispielsweise mit Thunderbird genutzt werden. Und somit ist die Lösung extrem einfach:

Ich habe meinen Office 365 Account in Thunderbird angelegt. Nun kann ich alle Ordner (auch mehrere und rekursiv) per Drag&Drop nach Office 365 schieben und muss nur noch warten. Zur Sicherheit schiebe ich mit gedrückter Strg/Ctrl-Taste, somit kann ich nach dem Test entscheiden, welchen Baum ich löschen werden.

KategorienAllgemein Tags:

Videos für Windows Phone 7 aufbereiten

Wenn man das erste Mal ein Video auf sein Windows Phone übertragen will, wird man schnell feststellen, dass das alles nicht so einfach ist. Mittlerweile habe ich aber einen sehr einfachen Weg gefunden, der zudem noch kostenfrei ist.

Zuerst braucht man das Tool Freemake. Dabei handelt es sich um einen universellen Video-Konverter, der beinahe jedes Videos in mp4 wandeln kann. Dabei kann man für mp4 ein Profil hinterlegen, was den Ton auf Stereo begrenzt und das Video auf 800×480 mit dem H.264 Codec.

Ein so konvertiertes Video kann man einfach im “Eigene Videos” Ordner von Windows ablegen und per Zune übertragen.

KategorienAllgemein Tags:

Manuelles schreiben einer lokalen Url in Asp.NET

23. September 2011 1 Kommentar

Glaubt man der Dokumentation von HttpRequest.ApplicationPath, so ist es recht einfach, einen Link in einer eigenen Asp.NET Seite zu verwenden:

Label1.Text = Request.ApplicationPath;
Image1.ImageUrl = Request.ApplicationPath + "/images/Image1.gif";
Label2.Text = Image1.ImageUrl;

Aber damit steht man schnell vor einem Problem: Liegt die Anwendung im Root, wie es beispielsweise standardmäßig beim Visual Studio 2010 Development Server der Fall ist, so erhält man als Ergebnis nur ein /. Die korrekte Zeile wäre dann also:

Image1.ImageUrl = Request.ApplicationPath + "images/Image1.gif";

Befindet sich die Seite aber in einem virtuellen Verzeichnis, so kommt das Verzeichnis ohne abschließenden / zurück:

Image1.ImageUrl = Request.ApplicationPath + "/images/Image1.gif";

Je nach Speicherort muss man also beim händischen Zusammensetzen der URL’s also den abschließenden Slash berücksichtigen, oder eben auch nicht.

Eine gute Lösung habe ich in einem Blog-Artikel von 2004 gefunden:

VirtualPathUtility.ToAbsolute("~/images/Image1.gif")

Damit überlässt man Asp.NET die korrekte Umsetzung, welche auch tadellos und ohne Experimente funktioniert!

Update:
Manchmal sieht man einfach den Wald vor lauter Bäumen nicht. Die kürzere Lösung ist Url.Content, welche ein vergleichbares Ergebnis liefert und auch in den Templates von Asp.NET MVC3 verwendet wird.

KategorienAllgemein, Microsoft .NET Tags: ,

dotnet-snippets.de wird 5 Jahre alt

24. April 2011 Keine Kommentare

Die Webseite dotnet-snippets.de wird 5 Jahre alt. Herzlichen Glückwunsch!

Wer die Seite noch nicht kennt, aber mit Microsoft .NET entwickelt, sollte einfach mal vorbeischauen. Es gibt viele kurze hilfreiche Codeschnipsel zu den meisten Problemchen, die man so im täglichen Leben hat.

KategorienAllgemein, Microsoft .NET Tags:

Mit Powershell Archive erstellen

14. April 2011 Keine Kommentare

Für eine Funktionalität auf einem Buildserver wurde ein Skript benötigt, dass in der Lage ist, Archive zu erstellen. Ein idealer Anwendungsfall für Powershell, wenn man erst einmal ein paar wichtige Sachen erkannt hat.

Das Skript soll zwei Parameter empfangen. Der erste Parameter $destname enthält lediglich den Zielnamen des Archiv’s. Der zweite Parameter $source ist der Ordner, wo alle zu packenden Dateien abgelegt sind. {dest} und {temp} sind Platzhalter fester Pfade für das zu erstellende Archiv und temporäre Dateien.

param ([string] $destname, [string] $source)
$path = "{dest}\" + $destname  + ".zip"
$temp = "{temp}"

Um das Skript einfach einsetzen zu können, sollte in Powershell kein Modul mehr nachinstalliert werden müssen. Darum wurde auf die Funktionalität der gepackten Ordner von Windows zurückgegriffen. Diese gibt es schon geraume Zeit im Standard-Lieferumfang. Um diesen Ordner nutzen zu können, erstellt man ein leeres Archiv mittels einer kleinen Bytefolge, dass dann einfach wie ein Ordner angesprochen wird (mittels des COM-Objektes Shell.Application):

Set-Content $path ("PK" + [char]5 + [char]6 + ("$([char]0)" * 18))
$ShellApp = New-Object -ComObject Shell.Application
$ZipPackage = $ShellApp.Namespace($path)

Dieser Zwischenschritt löscht dem temporären Ordner und kopiert eine Auswahl von Dateien aus dem Quellverzeichnis in den frisch erstellen temporären Ordner:

rmdir $temp -Recurse -Force
 
mkdir $temp
$files = Get-ChildItem -Path $($source + "\*") -Include *.exe,*.dll  | Copy-Item -Destination $temp
mkdir $($temp + "\Data")
$files = Get-ChildItem -Path $($source + "\Data\*") -Include *.*  | Copy-Item -Destination $($temp + "\Data")

Der letze Schritt war der schwerste: Als erstes wird der komplette temporäre Ordner einfach in das Archiv kopiert. Leider ist dieser Vorgang asynchron. Beendet man jetzt das Skript und die Powershell, so wird der Vorgang auch mit abgebrochen. Also muss man mittels Sleep solange warten, bis das Archiv garantiert erstellt ist. Diese Krücke ist zwar unbefriedigend, aber leider ist mir dafür keine alternative Lösung eingefallen:

$ZipPackage.CopyHere($temp, 4)
Start-Sleep -s 15
KategorienAllgemein Tags: ,