VBS: Email versenden mit Outlook
Als Parameter kann Empfänger sowie die Antwortadresse angegeben werden. Die eMail Adresse wird auf Format geprüft.
' ################################
'
' SendMail.vbs
'
VBS Einzeiler zum ermitteln von 64 oder 32 Bit Windows Betriebssystem
Der Fuktionsaufruf gibt 64 oder 32 zurück.
GetObject("winmgmts:root\cimv2:Win32_Processor='cpu0'").AddressWidth
String mit .NET komprimieren und und mit Ruby wieder entpacken
Das hab ich gebastelt um einen XML String aus .NET über POST Request an eine Ruby on Rails Applikation zu übertragen und dort weiterzuverarbeiten. Um beim senden keine Probleme zu verursachen wird der GZIP komprimierte String BASE64 kodiert.
.NET Code (VB.NET 2010)
Imports System.Security.Cryptography
Imports System.IO.Compression
Public Function Compress(ByVal text As String) As String
Try
Dim buffer() As Byte = Encoding.UTF8.GetBytes(text)
Dim memoryStream = New MemoryStream()
Using gZipStream = New GZipStream(memoryStream, CompressionMode.Compress, True)
gZipStream.Write(buffer, 0, buffer.Length)
End Using
Return Convert.ToBase64String(memoryStream.GetBuffer)
Catch ex As Exception
WriteToDebugLog("Compress", ex.Message)
Return Nothing
End Try
End Function
RoR Code (Ruby 1.9.2 / Rails 3)
require "base64" require 'nokogiri' xml = ActiveSupport::Gzip.decompress(Base64.decode64( )) xml_doc = Nokogiri::XML(xml) do |config| config.noblanks end # Zugriff auf Elemente über xml_doc.xpath()
Evtl. hilfts ja jemandem bei was auch immer.
*-Tage alte Druckaufträge löschen
Nur das ichs nicht wieder verliere.
Die Aufgabe des Powershell Scripts ist/war es, Druckaufträge eines Druckers nach einem definierten alter (Hier drei tage) automatisiert zu löschen. War für irgend ein SAP->Packzettel->Ausfallkonzept das ich aber nicht ganz verstanden habe ^^. Mein Part war nur das mit den Druckern
$strPrintername = "PS-NM-TEST*"
$PrintJobs = get-wmiobject -class "Win32_PrintJob" -namespace "root\CIMV2" | Where-Object { $_.Name -like $strPrintername -and $_.ConvertToDateTime($_.TimeSubmitted) -lt $($(Get-Date).addMinutes(-3))}
foreach ($job in $PrintJobs)
{
if ($job) {
Write-Host "Job $($job.JobId) canceled"
$job.Delete()
}
else {
Write-Host "Nothing to delete"
}
}
Align Windows 2003 Partitionen fürs NetApp Storage
Microsoft DiskPart Version 5.2.3790.3959
Copyright (C) 1999-2001 Microsoft Corporation.
Auf Computer: XXXXXX
DISKPART> list disk
Datentr. Status Größe Frei Dyn GPT
-------- ---------- ------- ------- --- ---
0 Online 34 GB 0 B
1 Online 136 GB 0 B
2 Online 550 GB 0 B
3 Online 200 GB 200 GB
DISKPART> select disk 3
Datenträger 3 ist jetzt der gewählte Datenträger.
DISKPART> create partition primary align=64
Die angegebene Partition wurde erfolgreich erstellt.
Danach ganz normal in der Festplattenverwaltung formatieren.
Irgenwann kann ich's mir merken, ganz bestimmt
(Oje)
Lokale PHP Einstellungen bei einem IIS 6.0 vhost mit PHP als ISAPI Modul
Die VHOST Dateien liegen unter c:\inetpup\vhost\ und man möchtest das display_errors für genau diesen vhost auf ON gestellt ist.
Einfach einen Registry Wert vom Typ String unter:
HKLM\Software\PHP\Per Directory Values\c\inetpup\vhost\
erstellen.
Name: display_errors
Wert: ON
Das geht mit allen php.ini Einstellungen, mit denen die ich versucht habe zumindest.
Standortabhängiges Anmeldescript
Den aktuellen Standort eines Benutzers zu ermitteln, definiert durch die Active Directory Sites, funktioniert folgender VBS Code:
On Error Resume Next
Set wshShell = WScript.CreateObject( "WScript.Shell" )
strUserDomain = wshShell.ExpandEnvironmentStrings( "%USERDOMAIN%" )
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colItems = objWMIService.ExecQuery("SELECT ClientSiteName FROM Win32_NTDomain WHERE DomainName = '"& strUserDomain &"'",,48)
For Each objItem in colItems
' Hier wird der erkannte Sitename der Anmeldedomäne ausgegeben.
strSiteName = objItem.ClientSiteName
next
select case strSiteName
case "Berlin"
' Tu irgendwas
case "München"
' Tu irgendwas anderes
end select
Getestet unter Windows XP, Windows 2003, Vista und Windows 7.
Der nervende Edelstein
Ich freunde mich gerade mit Ruby on Rails an, da war es naheliegend sich eine schöne IDE dafür zu suchen die bereits Testserver und alles enthält so das man sich nicht mit der Installation des selbigen herumschlagen muss.
Meine Wahl fiel dabei auf Aptana RadRails, ein wirklich nettes Produkt.
Das einzige Problem was ich bisher hatte, und das auch nur auf dem Laptop hier im Büro, war das grundlose verweigern jeder Art von Plugin-Installation via GEM.
Jeder Versuch wurde mit
ERROR: While executing gem ... (Errno::ENOENT)
No such file or directory - U:/
quitiert. Das Laufwerk U:/ ist mein Homedrive im Netzwerk.
Die Lösungsvorschläge aus dem Netz, die Umgebungsvariablen “GEM_HOME” und “GEM_PATH” zu setzen hatten leider keinen positiven Effekt.
Ein kleiner Eintrag in der gem Datei unter c:\ruby\bin\gem bringt die Erlösung:
#!C:/Ruby/bin/ruby.exe
#--
# Copyright 2006 by Chad Fowler, Rich Kilmer, Jim Weirich and others.
# All rights reserved.
# See LICENSE.txt for permissions.
#++
ENV['HOME'] = "C:/ruby"
require 'rubygems'
require 'rubygems/gem_runner'
require 'rubygems/exceptions'
required_version = Gem::Requirement.new "> 1.8.3"
unless required_version.satisfied_by? Gem.ruby_version then
abort "Expected Ruby Version #{required_version}, was #{Gem.ruby_version}"
end
args = ARGV.clone
begin
Gem::GemRunner.new.run args
rescue Gem::SystemExitException => e
exit e.exit_code
end
Vielleicht gibts noch eine bessere Lösung, so funktioniert es bei mir aber auf alle Fälle ohne herumdoktorn an den Umgebunsvariablen.
LastLogon Lookup
Ein Problem bei einer Windows 2000 Domäne, d.h. einer Domäne die sich nicht im einheitlichen Modus befinden, ist das nicht alle Eigenschaften von Objekten innerhalb der Domäne zwischen den Domänencontrollern repliziert werden.
Dies Betrifft unter anderem auch die letzte Anmeldezeit eines Benutzerkontos.
Dieser Wert ist allerdings ziemlich nützlich um z.B. Benutzerleichen zu identifizieren.
Mir ist kein Windows Boardmittel bekannt mit dem man diese Werte aus einer Domäne über alle Domänencontroller hinweg auslesen kann, deswegen habe ich mir ein kleines Tool geschrieben.
Programmaufruf
LastLogon Lookup.exe > Datei.cvs
Ausgabe
distinguishedName;sAMAccountName;LogonCount;LastLogon;DomainController
...
Das ganze wird dann über alle DCs für alle Benutzer ausgelesen.
Der Benutzeraccount unter dem das Progamm läuft muss mindestens entsprechende Werte aus dem AD lesen können (wär auch komisch sonst), eine Schreibberechtigung ist natürlich nicht notwendig. Das Ergebnis ist einfach mit Access/Excel/Stift und Zettel o.Ä. auszuwerten.
Geschrieben in VB.NET, wenn lieb gefragt wird schick ich bestimmt auch den Quellcode zu
Download: LastLogon Lookup.zip
Schwarzer Anmeldebildschirm über RDP
Nach dem Anmelden über Remotdesktop hatte ich bei einem unserer Server immer das Problem das man nicht sehen konnte was man da so Tippt, da Windows beschlossen hat es Super zu finden ab jetzt nur noch mit einer einzigen Farbe zu kommunizieren
Abhilfe schafft folgender KB Artikel im Technet:
After you press CTRL+ALT+DELETE to log on to a Microsoft Windows Server 2003-based computer, the logon screen turns black. Although you cannot see what you are typing, you can successfully log on to the Windows Server 2003-based computer. Then, after you successfully log on, the screen becomes visible.
http://support.microsoft.com/default.aspx?scid=kb;en-us;906510
Sofort danach funktioniert alles wieder. Ich frag mich allerdings wie es das Betriebssystem schafft alle Informationen über Farbeinstellungen zu vergessen ^^
SQL2005 – ExternalMailQueue
Folgende Fehlermeldung am SQL2005 Server
The activated proc [dbo].[sp_sysmail_activate] running on queue msdb.dbo.ExternalMailQueue output the following: 'The service queue "ExternalMailQueue" is currently disabled.'
Event Type: Information Event Source: MSSQLSERVER Event Category: (2) Event ID: 9724 Date: 8/4/2008 Time: 9:53:40 PM User: N/A Computer: Description:
Wurde wohl von der Testinstallation des Sharepoint Services 03 verursacht die jetzt nachdem ich die Datenbanken deaktiviert immer noch lustig versucht Mails über Databasemail zu verschicken. ;D
Prüfen ob die Warteschlange läuft kann man mit
SELECT 1 FROM msdb.sys.service_queues WHERE name = N'ExternalMailQueue' AND is_receive_enabled = 1
Kommt da eine 1 Zurück hat man ein anderes Problem, wenn nicht kann man die Queue mit
EXEC msdb.dbo.sysmail_start_sp wieder starten.
Danach sollte die Fehlermeldung weg sein. Sind sie bei mir jedenfalls.
IE 8 – Erstes Fazit
Naja ^^ Irgendwie ist das immer noch so zäh wie mit IE7. Nicht ganz so schlimm aber immer noch anderes als mit meinem Firefox. Könnte natürlich auch am Vista liegen. Mein Laptop ist einfach schon zu alt
Der IE 8 – Mein Test
Ab heute oder gestern, k.a. gibts den IE8. Gerade mal heruntergeladen und wie immer: Nach dem herunterladen und dem Starten der Installation fängt man zuerst mal an Updates dafür herunterzuladen bevor überhaupt irgendwas Installiert wird Oo.
Ich werd die Software mal im täglichen Betrieb im Internet und innerhalb unseres Netzwerks mit Sharepoint & Co. testen. Bin gespannt wann mir was tolles auffällt. ^^
Edit 1: Das Updates herunterladen hat schonmal gefühlte 3x solange wie das Programm herunterladen gedauert
Bleibt also alles beim alten beim IE ;D
Einfache Gruppenmitgliedschaftssuche
Wer kennt das nicht, irgendwer braucht mal wieder eine Liste mit Benutzern die z.B. aufs Personallaufwerk Zugriff haben, sowie zum Internetzugriff berechtigt sind.
Für was auch immer man die Konten braucht, mit dieser LDAP Abfrage kann man das einfach herausfinden:
(&(&(&(objectCategory=person)(objectClass=user)(&(memberOf=GRUPPE1)(memberOf=GRUPPE2)))))
Gruppensyntax:
CN=GRUPPEx,OU=GRUPPEN,DC=deinedomäne,DC=xx
bzw. wenn direkt im USERS Container
CN=GRUPPEx,CN=users,DC=deinedomäne,DC=xx
Kann man immer mal wieder brauchen.