Posts mit dem Label Technik werden angezeigt. Alle Posts anzeigen
Posts mit dem Label Technik werden angezeigt. Alle Posts anzeigen

10.01.17

[How-To] Exchange - Mailboxen mit aktivem Forwarding identifizieren

Möchte man mittels PowerShell alle Mailboxen ermitteln, welche an eine andere E-Mailadresse (intern oder extern) forwarden, bzw. redirecten, kann man folgenden Befehl dazu verwenden:

[PS] C:\Windows\system32>foreach ($i in (Get-Mailbox -ResultSize unlimited)) { Get-InboxRule -Mailbox $i.DistinguishedName | where {$_.RedirectTo -or $_.ForwardTo } | fl MailboxOwnerId,Description >> C:\rules.txt }

14.06.16

[How-To] Dienst prüfen und gegebenenfalls starten

Möchte man einen Windows Dienst prüfen, ob er läuft und im Fehlerfall automatisch starten, kann man dies per Batch-Skript automatisieren.

Dazu legt man eine Textdatei an, welche zum Beispiel check_svc.txt heißt. Diese bearbeitet man und fügt folgende Befehle ein:

@ ECHO OFF

for /F "tokens=3 delims=: " %%H in ('sc query "DIENSTNAME" ^| findstr "        STATE"') do (
 if /I "%%H" NEQ "RUNNING" (
    net start "DIENSTNAME"
    )
)


Danach ändert man die Dateiendung auf .bat um das Skript ausführen zu können. Dieses kann man nun beispielsweise mittels der Windows Aufgabenplanung ausführen lassen.

29.10.15

[How-To] T-SQL Abfrage nach CSV

Möchte man T-SQL queries in eine CSV-Datei schreiben, kann man sich der sqlcmd.exe bedienen:

">sqlcmd -S Database-Server -d Database -E -Q "set nocount on;SELECT * FROM dbo.table" -o "C:\sqlquery_%date:~6,4%-%date:~3,2%-%date:~0,2%.csv" -s";" -w 999

-S --> DB-Server
-d --> Database
-E --> trusted connection
-Q --> Query
-o --> output file
-s --> delimiter
-w --> Screenwidth

Beispiel:
">sqlcmd -S localhost -d %DATENBANK% -E -Q "set nocount on;SELECT Spalte1,Spalte2,Spalte3,StartTime FROM dbo.%TABLE% WHERE Spalte1 LIKE 'BEISPIEL' AND Spalte2 is NULL AND Spalte3 LIKE '' AND StartTime >= DATEADD(HH, -24, GETDATE())" -o "X:\PFAD\Output_File_%date:~6,4%-%date:~3,2%-%date:~0,2%.csv" -s";" -w 999

30.09.15

[How-To] Exchange 2010 - Vollzugriff ohne Automapping einrichten

Ab Exchange 2010 SP1 wird ein Postfach, auf welches man Vollzugriff erhalten hat, per Automapping in Outlook eingebunden.

Dies kann beim Vollzugriff auf viele Postfächer zu erheblichen Leistungseinbußen in Outlook führen.

Möchte man nun das Automapping für bestimmte Postfächer deaktivieren, muss man folgendermaßen vorgehen:

In diesem Beispiel wird der Vollzugriff des Benutzers "Administrator" auf das Postfach von Benutzer "Test1" entfernt:

Remove-MailboxPermission -Identity Test1 -User Administrator -AccessRights FullAccess -InheritanceType All

Nachfolgend wird die Berechtigung für den Vollzugriff wieder erteilt, diesmal jedoch ohne Automapping:

Add-MailboxPermission -Identity Test1 -User Administrator -AccessRights:FullAccess -AutoMapping $false

Beim nächsten Start von Outlook werden die Postfächer, auf welche man Vollzugriff hat, nicht mehr automatisch geöffnet.

12.08.15

[How-To] Programme auf mehreren PCs automatisiert updaten

Da in letzter Zeit sehr viele Sicherheitsupdates für Anwendungen wie beispielsweise Adobe Flash oder Java released werden, stellte sich mir die Frage, wie ich in unserem Unternehmensnetzwerk mit dem geringstmöglichen Aufwand unsere Standardanwendungen per Taskplanner automatisiert patchen kann (das manuelle Patchen von 100+ PCs verursacht einen immensen administrativen Aufwand).

Als Anwendung, welche das Patchen an sich übernimmt, fiel meine Wahl auf Ninite, da diese in der ProVersion sehr viele Funktionen bereithält, welche man per Kommandozeile automatisieren kann.

Darüberhinaus lädt Ninite den jeweiligen Patch für ein Programm einmalig herunter und verteilt ihn dann über das lokale Netz, anstatt dass jeder PC selbständig die Anwendung aktualisiert.

Per Taskplanner lasse ich stündlich ein Skript (ninite_PC.bat) ausführen, welches Ninite auf allen laufenden PCs im Firmennetzwerk ausführt. Um alle laufenden PCs zu erhalten, wird wiederum ein weiteres Skript (running_machines.bat) ausgeführt, welches per Ping alle laufenden Rechner in ein Textfile schreibt. Dieses Textfile wird vom ersten Batchskript als Grundlage für die zu prüfenden und ggf. zu patchenden Rechner benutzt.

Nach Ausführung des Patchvorganges versendet die "ninite_PC.bat" per Powershell-Skript (ninite.ps1) noch eine E-Mail mit einem Patchreport an unser Support-Postfach.


ninite_PC.bat

@echo OFF

rem Variable für Arbeitsverzeichnis setzen

set PFAD=D:\Tools\Ninite

rem ermitteln der eingeschalteten Rechner im Netzwerk

CALL %PFAD%\running_machines.bat

echo.
echo.
cls
echo Running Ninite on responding machines

rem laufende PCs prüfen und patchen

%PFAD%\NinitePro.exe /remote file:%PFAD%\IPs.txt /locale de-DE /silent %PFAD%\report\report_PC.txt /select Acrobat Chrome Firefox Flash "Flash (IE)" Java Reader "Reader DC" Silverlight Skype /updateonly /disableshortcuts /disableautoupdate

rem Report per mail an Support versenden

Powershell.exe  -ep RemoteSigned -File "D:\Tools\Ninite\ninite.ps1"

rem löschen des versendeten Reports

del "%PFAD%\report\report_PC.txt"



running_machines.bat

@echo OFF

set PFAD=D:\Tools\Ninite


echo running_machines.bat
echo Probing alive computers in Local Area Network
echo.
 

ping -n 2 127.0.0.1 > NUL

rem delete old files if existing
echo.
echo.
echo deleting old probing files!
del %PFAD%\ping.txt
del %PFAD%\results.txt
del %PFAD%\IPs.txt

echo.
ping -n 2 127.0.0.1 > NUL

rem pingen der PCs, welche in der machines.txt definiert wurden

echo pinging local workstations
echo.
echo.
for /F "tokens=*" %%A in (%PFAD%\machines.txt) do ping -n 1 %%A >> %PFAD%\ping.txt

echo writing responding machines to results.txt
echo.
echo.

ping -n 4 127.0.0.1 > NUL
CALL :RESULTS

echo writing IPs of alive machines to IPs.txt
echo.
echo.

ping -n 4 127.0.0.1 > NUL
CALL :IPs


:RESULTS

rem entfernen aller nicht benötigten Zeilen der Pingausgabe

rem aaa.bbb.ccc steht hier für IPs, welche gefiltert werden sollen
type %PFAD%\ping.txt | findstr "."  | findstr /v Ping | findstr /v aaa.bbb.ccc | findstr /v Pakete | findstr /v Ca. | findstr /v nicht | findstr /v Verlust | findstr /v Minimum | findstr /v Zeitberschreitung > %PFAD%\results.txt
EXIT /B

:IPs


rem IP-Adressen in temporäre Datei schreiben
for /F "tokens=3" %%i in (%PFAD%\results.txt) do echo %%i >> %PFAD%\IPs_temp.txt
ping -n 2 127.0.0.1 > NUL
for /F "tokens=*" %%A in (%PFAD%\IPs_temp.txt) do CALL :SUB_A %%A
CALL :SUB_B

GOTO :EOF

:SUB_A

rem Doppelpunkte hinter den IP-Adressen entfernen
set str=%1
set str=%str::=%
echo %str% >> %PFAD%\IPs.txt
EXIT /B

:SUB_B

rem entfernen der temporären IP-Liste
del %PFAD%\IPs_temp.txt
EXIT /B



ninite.ps1

Send-MailMessage -from "sender@domain.com" `
                       -to "recipient@domain.com" `
                       -subject "Ninite Report" `
                       -body "Results of Ninite" `
                       -Attachment "D:\Tools\Ninite\report\report_PC.txt" -smtpServer server.domain.com

05.08.15

[How-To] Timestamp mit führenden Nullen erzeugen

Will man Dateien mit einem Timestamp versehen (Logfiles, Backups, etc.), bekommt man spätestens dann Probleme, wenn man die Uhrzeit in den Timestamp einfügen will und es vor 10:00 Uhr ist.

Cmd entfernt bei der Stunde die führende Null und ersetzt sie durch ein Leerzeichen, was dazu führt, das Skripte aufgrund eines Syntaxerrors abbrechen.

Um dies zu umgehen, kann man sich mit einer Batchdatei behelfen, die wiederum das Leerzeichen durch eine Null ersetzt.

:prepare timestamp
set year=%date:~6,4%
set month=%date:~3,2%
set day=%date:~0,2%
set hour=%time:~0,2%
:fuehrendes Leerzeichen durch 0 ersetzen - Stunden kleiner 10
if "%hour:~0,1%" == " " set hour=0%hour:~1,1%
set minute=%time:~3,2%
set timeStamp=%year%-%month%-%day%_%hour%-%minute%


Dies kann man nun als Batchdatei speichern und mittels Call aus anderen Batchdateien heraus aufrufen. So muss man dies nur einmalig zentral konfigurieren, anstatt in jeder Batchdatei auf's Neue.

Bsp.:


@echo OFF
call tmstmp.bat
example.exe /install /silent /log:install_%timeStamp%.txt

04.08.15

[How-To] Programm remote auf mehreren PCs beenden

Um ein Programm remote auf mehreren PCs zu beenden, kann man folgendermaßen vorgehen.

Diese Anleitung setzt voraus, dass die ps-tools installiert sind.

for /F "tokens=*" %%A in (computerliste.txt) do pskill programm.exe \\%%A

Der obige Befehl gilt für Batchfiles, führt man den Befehl direkt in der Kommandozeile aus, ist %%A durch %A zu ersetzen.

[How-To] installierte Programme auf entfernten Rechnern anzeigen

Möchte man auf einem Remote-PC prüfen welche Programme installiert sind, kann man folgendermaßen vorgehen:

Diese Anleitung setzt voraus, dass die ps-tools installiert sind.

Aktivieren der Remote Registrierung (benötigt um installierte Programme auszulesen)
psexec \\computer cmd
sc config RemoteRegistry start= auto
net start RemoteRegistry
exit 
 
Auslesen der installierten Programme 

psinfo -s \\computer

Suchen nach einem bestimmten Programm
psinfo -s \\computer | find "Programmname"

11.06.15

[How-To] Office 2013 Product Key ändern

Hat man auf einem Rechner bereits Office installiert und aktiviert und klont diesen nun auf ein anderes System, muss man den Product Key ändern, um Office erneut aktivieren zu können.

Dies kann man mittels folgendem Befehl in der Kommandozeile bewerkstelligen:

Windows 32 bit: cscript "C:\Program Files\Microsoft Office\Office15\OSPP.VBS" /inpkey:AAAAA-BBBBB-CCCCC-DDDDD-EEEEE


Windows 64 bit: cscript "C:\Program Files (x86)\Microsoft Office\Office15\OSPP.VBS" /inpkey:AAAAA-BBBBB-CCCCC-DDDDD-EEEEE

20.05.15

[iOS] Exchange Kalender Synchronisierung schlägt fehl

Seit dem Update auf iOS 8 kann es unter Umständen dazu kommen, dass Kalendereinträge nicht mehr korrekt mit Exchange synchronisiert werden. 

Um die Einträge wieder zu synchronisieren, muss man die Kalendersynchronisierung deaktivieren und wieder aktivieren.

Dazu muss man unter: Einstellungen --> Mail, Kontakte, Kalender

den Schalter bei Kalender deaktivieren
einen Moment warten, bis alle Kalendereinträge auf dem iPhone / iPad gelöscht sind
den Schalter wieder aktivieren.


18.05.15

Email per Powershell versenden

Hier eine kurze Anleitung, wie man in Windows mittels Powershell Emails versenden kann.

Ausführen von Skripten prüfen und gegebenenfalls erlauben: 


C:\> Get-ExecutionPolicy -List
C:\> Set-ExecutionPolicy RemoteSigned


Skript zum versenden von Mails erstellen:

$EmailFrom = "sender@domain.com"
$EmailTo = "recipient@otherdomain.com"
$Subject = "Betreff"
$Body = "Was soll in der Mail stehen?"
$SMTPServer = "smtp.domain.com"
$SMTPClient = New-Object Net.Mail.SmtpClient($SmtpServer, 587)
$SMTPClient.EnableSsl = $true$SMTPClient.Credentials = New-Object System.Net.NetworkCredential("usr", "pass");
$SMTPClient.Send($EmailFrom, $EmailTo, $Subject, $Body)


$EmailFrom, $EmailTo, $SMTPServer, "usr" und "pass" müssen durch die entsprechenden Werte ersetzt werden.

31.03.15

[How-To] alle GCs in Domäne ermitteln

Möchte man alle GCs in einer Domäne ermitteln, muss man folgende Schritte ausführen:


C:\>nslookup
Default Server:  UnKnown
Address:  aaa.bbb.ccc.ddd


> set type=srv

> _gc._tcp.domain.local
Server:  UnKnown
Address:  aaa.bbb.ccc.ddd


_gc._tcp.domain.local      SRV service location:
priority       = 0
weight         = 100
port           = 3268
svr hostname   = srv-a.domain.local


_gc._tcp.domain.local      SRV service location:
priority       = 0
weight         = 100
port           = 3268
svr hostname   = srv-b.domain.local


_gc._tcp.domain.local      SRV service location:
priority       = 0
weight         = 100
port           = 3268
svr hostname   = srv-c.domain.local


srv-a.domain.local internet address = aaa.bbb.ccc.eee
srv-b.domain.local internet address = aaa.bbb.ccc.fff
srv-c.domain.local internet address = aaa.bbb.ccc.ggg

22.12.14

[How-To] IP Adresse eines Switch-Clients ermitteln

In Monitoringtools wie Nagios kann es passieren, dass ein Netzwerk-Port an einem Switch auf Warning/Critical geht und man ermittlen möchte, welchen Client / Server es betrifft.

Beispiel:

WARN – [37] (up) MAC: a0:b3:cc:ab:cd:ef, 100MBit/s (wrong speed, expected: 1GBit/s)WARN, in: 0.00B/s, out: 1.19kB/s

Da die MAC-Adresse in Nagios die des Switchports ist, muss man zuerst am Switch die MAC Adresse des Clients ermitteln.

Dies macht man folgendermaßen:
Per Telnet auf den entsprechenden Switch connecten
MAC Informationen für den entsprechenden Port anzeigen

show mac 37
HP_ProCurve# show mac 37
Status and Counters – Port Address Table – 37
MAC Address
————-
3417eb-uvwxyz


Nachdem man nun die MAC-Adresse der Netzwerkkarte des Client/Servers ausgelesen hat, kann man per Windows Kommandozeile die korrekte IP und somit den Rechner ermitteln:

arp -a | find “34-17-eb-uv-wx-yz
192.168.0.100          34-17-eb-uv-wx-yz     dynamisch
ping -a 192.168.0.100
Ping wird ausgeführt für pc_100.domain.local [192.168.0.100] mit 32 Bytes Daten:
Antwort von 192.168.0.100: Bytes=32 Zeit<1ms TTL=128
Antwort von 192.168.0.100: Bytes=32 Zeit<1ms TTL=128
 
Antwort von 192.168.0.100: Bytes=32 Zeit<1ms TTL=128
Antwort von 192.168.0.100: Bytes=32 Zeit<1ms TTL=128

Ping-Statistik für 192.168.0.100:
    Pakete: Gesendet = 4, Empfangen = 4, Verloren = 0
    (0% Verlust),
Ca. Zeitangaben in Millisek.:
    Minimum = 0ms, Maximum = 0ms, Mittelwert = 0ms

10.12.14

[Exchange] Vollzugriff auf alle Postfächer erteilen

Will man dem Administrator-Konto Vollzugriff auf alle Postfächer erteilen, kann man dies mit dem folgenden PowerShell Befehl bewerkstelligen:

Get-Mailbox | Add-MailboxPermission -User Administrator -AccessRights Fullaccess -InheritanceType all

Postfachberechtigungen entfernen:

Remove-MailboxFolderPermission -Identity Username:\Posteingang -User Username.Zugriff 

Postfachberechtigungen prüfen:

Get-MailboxPermission -Identity Username

05.12.14

Hyper-V running Linux-VMs - Best Practices

Microsoft hat einige Hinweise zusammengestellt, wie sich virtuelle Maschinen mit Linux unter Hyper-V optimal einrichten und betreiben lassen.

Best Practices for running Linux on Hyper-V

Linux and FreeBSD Virtual Machines on Hyper-V

ScreenToGif - kostenloses Screen recording

Nicke Manarin hat ein kostenloses Tool entwickelt, mit welchem man simple Screen Captures als GIF aufzeichnen kann.
Das Tool kommt als ausführbare Datei daher, welche keine Installation erfordert.

Aufgezeichnet wird alles, was sich im transparenten Bereich des Tools befindet. Das Tool wandelt die Aufzeichnung in ein GIF um, was die Datei sehr klein macht und somit ohne spezielle Betrachter einsetzbar macht (beispielsweise die Einbettung in Websites).

Erältlich ist ScreenToGif auf der Microsoft Entwicklerplattform Codeplex --> Download

16.10.14

[Office365] Organisator in Resourcenkalendern anzeigen

Folgende cmdlets werden benötigt, um die Standardeinstellungen der Resourcenpostfächer so anzupassen, dass im Betreff die Organisatoren von Terminen angezeigt werden:

Anmelden an Exchange online:

$LiveCred = Get-Credential
 

$Session = New-PSSession -ConfigurationName Microsoft.Exchange-ConnectionUri https://ps.outlook.com/powershell -Credential $LiveCred -Authentication Basic -AllowRedirection
 

Import-PSSession $Session


Anpassen der Berechtigungen:

Set-MailboxFolderPermission -AccessRights LimitedDetails -Identity <Resourcenpostfach>:\Kalender -User Default

Set-CalendarProcessing -Identity <Resourcenpostfach> -AddOrganizerToSubject $true -DeleteComments $false -DeleteSubject $false

11.10.14

Exchange Postfächer mit aktiviertem Forwarding auflisten

Mit dem untenstehenden Befehl kann man sämtliche Postfächer auflisten, welche Weiterleitungen konfiguriert haben.

Mit "Select" wird die Ausgabe außerdem noch angepasst, so dass man den Namen der Mailbox und die Adresse aufgelistet bekommt wohin weitergeleitet wird. DeliverToMailboxAndForward zeigt an, ob die Mailbox nur weiterleitet, oder ob hier auch Mails im entsprechenden Postfach gespeichert werden.

Get-Mailbox | Where {$_.ForwardingAddress -ne $null} | Select Name, ForwardingAddress, DeliverToMailboxAndForward

07.10.14

Exchange Online Besitzer einer Email Adresse ermitteln

Mit folgendem Powershell Befehl ermittelt man den Besitzer einer Email Adresse.

Get-Recipient -Identity user@domain.com

Die Ausgabe sollte dann folgendermaßen aussehen:

PS C:\Users\davissteiner> Get-Recipient -Identity user@domain.com


Name RecipientType
---- -------------
User Name UserMailbox

PS C:\Users\davissteiner> Get-Recipient -Identity distributiongroup@domain.com


Name RecipientType
---- -------------
Distribution Group MailUniversalDistributionGroup

26.09.14

[CentOS 6] Office 365 als SMTP relay für Postfix nutzen

Benötigte Pakete installieren:
yum install postfix cyrus-sasl cyrus-sasl-lib cyrus-sasl-plain

Relayhost konfigurieren:
postconf -e 'relayhost = smtp.office365.com:587'

TLS Verschlüsselung aktivieren:
postconf -e 'smtp_tls_security_level=encrypt'

IPv6 als Internet Protokoll deaktivieren:
postconf -e 'inet_protocols=ipv4'


Authentifizierung aktivieren, auth mapping Datei erstellen und in auth Datenbank konvertieren:
postconf -e 'smtp_sasl_auth_enable = yes'
postconf -e 'smtp_sasl_security_options = noanonymous' 
postconf -e 'smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd'
echo "smtp.office365.com user@domain.com:password" > /etc/postfix/sasl_passwd
chown root:root /etc/postfix/sasl_passwd
chmod 600 /etc/postfix/sasl_passwd
postmap /etc/postfix/sasl_passwd

Namenszuordnung erstellen um zu erreichen, dass Exchange Mails annimmt:
postconf -e 'canonical_maps = hash:/etc/postfix/canonical'
vi /etc/postfix/canonical
root    nagios@netbiscuits.com
postmap /etc/postfix/canonical