All posts in Windows 7

Hallo zusammen,

in dem heutigen Howto zeige ich euch ein kleines Skript, wie Ihr eure Powershell Umgebung auf allen Computern/Server gleich setzen könnt.

Powershell_Konsole

 

 

 

 

 

Powershell_Konsole_2

 

 

 

 

 

Bitte vor der Skript Ausführung eure ExecutionPolicy setzen

Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Force

Damit Powershell immer ein Startverzeichnis hat, bitte die passende Variable im Skript setzen

$StartFolder="C:\ oder D:\DeinVerzeichnis"

Und hier das Skript

#######################################################################################
## Skript:  Powershell Profil Datei anlegen
## Name:    Helmut Thurnhofer
## Datum:   03.01.2016
## Version: 1.0
##
## Powershell Konsolen Anpassung
## https://tobivnext.wordpress.com/2012/03/07/powershell-konsoleneigenschaften-anpassen/
##
## Bitte vor Skriptausführung ExecutionPolicy setzen
## Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Force
##
## Bitte auch einen passenden Startverzeichnis für Powershell setzen 
## $StartFolder="C:\ oder D:\DeinVerzeichnis"
#######################################################################################
 
## Skript Variablen definieren ########################################################
$DateTime = (Get-Date -Format g)
$ProfileFile = $PROFILE.CurrentUserAllHosts
$SplitProfileFile = Split-Path -Path $ProfileFile -Leaf -Resolve
$SplitProfilePath = Split-Path -Path $ProfileFile -Parent -Resolve
$BackupProfileFile = $SplitProfilePath + "\" + "profile.bak"
$CheckProfileFile = Test-Path -PathType Leaf $ProfileFile
$StartFolder="D:\PowershellScripte"
#######################################################################################
 
## Startverzeichnis anlegen wenn noch nicht vorhanden #################################
If (!(Test-Path -Path $StartFolder)){
 
     New-Item -Type Directory -Path $StartFolder
     Write-Host "Der Ordner $StartFolder wurde angelegt" -ForegroundColor Green
} Else {
    Write-Host "Der Ordner $StartFolder existiert bereits." -ForegroundColor Yellow
}
#######################################################################################
 
 
## Überprüfe ob alte profil.ps1 Datei vorhanden ist, wenn ja, wird diese umbenannt und neu angelegt.
If($CheckProfileFile -eq $true) {
    Rename-Item -Path $ProfileFile -NewName $BackupProfileFile
    Write-Host "Powershell Profil Datei (`"$BackupProfileFile`") wurde umbenannt!`n" -ForegroundColor Yellow
 
    New-Item -ItemType File -Force $ProfileFile
    Write-Host "Powershell Profil Datei (`"$ProfileFile`") wurde neu angelegt!`n" -ForegroundColor Green
} Else {
    New-Item -ItemType File -Force $ProfileFile
    Write-Host "Powershell Profil Datei (`"$ProfileFile`") wurde neu angelegt!`n" -ForegroundColor Green
}
#######################################################################################


## Schreibe Inhalt in die profile.ps1 Datei
Add-Content $ProfileFile -Value "#####################################################################################"
Add-Content $ProfileFile -Value "## Name: Windows PowerShell Profil"
Add-Content $ProfileFile -Value "## Ersteller: $env:USERNAME"
Add-Content $ProfileFile -Value "## Erstellungsdatum: $DateTime"
Add-Content $ProfileFile -Value "## Version: 1.0"
Add-Content $ProfileFile -Value "#####################################################################################"
Add-Content $ProfileFile -Value ""
Add-Content $ProfileFile -Value "## Skript von http://www.zerrouki.com/powershell-profile-example"
Add-Content $ProfileFile -Value "`$IPAddress=@(Get-WmiObject Win32_NetworkAdapterConfiguration | Where-Object {`$_.DefaultIpGateway})[0].IPAddress[0]"
Add-Content $ProfileFile -Value "`$PSVersion=(`$PSVersionTable.PSVersion).ToString()"
Add-Content $ProfileFile -Value "Clear-Host"
Add-Content $ProfileFile -Value ""
Add-Content $ProfileFile -Value "Write-Host `"``r``n:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::`" -ForegroundColor Yellow"
Add-Content $ProfileFile -Value "Write-Host `"::`" -ForegroundColor Yellow -nonewline; Write-Host `"  ComputerName: `$(`$env:COMPUTERNAME)`";"
Add-Content $ProfileFile -Value "Write-Host `"::`" -ForegroundColor Yellow -nonewline; Write-Host `"  IP-Adresse:   `$IPAddress`";"
Add-Content $ProfileFile -Value "Write-Host `"::`" -ForegroundColor Yellow -nonewline; Write-Host `"  UserName:     `$env:UserDomain\`$env:UserName`";"
Add-Content $ProfileFile -Value "Write-Host `"::`" -ForegroundColor Yellow -nonewline; Write-Host `"  Powershell:   `$PSVersion`" -NoNewline;"
Add-Content $ProfileFile -Value "Write-Host `"``r``n:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::`" -ForegroundColor Yellow"
Add-Content $ProfileFile -Value ""
Add-Content $ProfileFile -Value "`$AllDisk = @()"
Add-Content $ProfileFile -Value "Get-WmiObject Win32_LogicalDisk -filter `"DriveType='3'`" | ForEach-Object {"
Add-Content $ProfileFile -Value "   `$AllDisk += @(`$_ | Select @{n=`"Name`";e={`$_.Caption}},"
Add-Content $ProfileFile -Value "   @{n=`"Bezeichnung`";e={`$_.VolumeName}},"
Add-Content $ProfileFile -Value "   @{n=`"Groesse (GB)`";e={`"{0:N2}`" -f (`$_.Size/1GB)}},"
Add-Content $ProfileFile -Value "   @{n=`"Belegt (GB)`";e={`"{0:N2}`" -f ((`$_.Size/1GB) - (`$_.FreeSpace/1GB))}},"
Add-Content $ProfileFile -Value "   @{n=`"Frei (GB)`";e={`"{0:N2}`" -f (`$_.FreeSpace/1GB)}},"
Add-Content $ProfileFile -Value "   @{n=`"Frei (%)`";e={if(`$_.Size) {`"{0:N2}`" -f ((`$_.FreeSpace/1GB) / (`$_.Size/1GB) * 100 )} else {`"NAN`"} }})"
Add-Content $ProfileFile -Value "}"
Add-Content $ProfileFile -Value "`$AllDisk | Format-Table -AutoSize | Out-String"
Add-Content $ProfileFile -Value ""
Add-Content $ProfileFile -Value "## Globale Standardvariablen setzen"
Add-Content $ProfileFile -Value "`$ErrorActionPreference = `"Continue`""
Add-Content $ProfileFile -Value ""
Add-Content $ProfileFile -Value "## Setzen das Startverzeichnis"
Add-Content $ProfileFile -Value "Set-Location -Path $StartFolder"
Add-Content $ProfileFile -Value ""
Add-Content $ProfileFile -Value "## Angepasster Powershell Titel"
Add-Content $ProfileFile -Value "`$a = (Get-Host).UI.RawUI"
Add-Content $ProfileFile -Value "`$a.WindowTitle = `"HTDOM - Powershell`""
Add-Content $ProfileFile -Value ""
Add-Content $ProfileFile -Value "## Angepasster PowerShell Prompt"
Add-Content $ProfileFile -Value "function prompt {"
Add-Content $ProfileFile -Value "`$msg = `"HTDOM `$(`$ExecutionContext.SessionState.Path.CurrentLocation)`$(`'>`' * (`$NestedPromptLevel + 1))`""
Add-Content $ProfileFile -Value "Write-Host -ForegroundColor Yellow -NoNewLine `$msg; `" `""
Add-Content $ProfileFile -Value "`}"
Add-Content $ProfileFile -Value ""
Add-Content $ProfileFile -Value "## Setzt bestimmte Alias und Funktionen"
Add-Content $ProfileFile -Value "function pss{Set-Location -Path $StartFolder}"
Add-Content $ProfileFile -Value "function c{Set-Location -Path C:\}"
Add-Content $ProfileFile -Value "function d{Set-Location -Path D:\}"
Add-Content $ProfileFile -Value ""
Add-Content $ProfileFile -Value "function ..{cd ..}"
Add-Content $ProfileFile -Value "function ...{cd ..\..}"
Add-Content $ProfileFile -Value "function ....{cd ..\..\..}"
Add-Content $ProfileFile -Value "function .....{cd ..\..\..\..}"
Add-Content $ProfileFile -Value ""
Add-Content $ProfileFile -Value "function ws{Set-Location -Path C:\Windows\System32}"
Add-Content $ProfileFile -Value "function npp{notepad `$PROFILE.CurrentUserAllHosts}"
Add-Content $ProfileFile -Value "function np{Start-Process -FilePath `"C:\Program Files (x86)\Notepad++\notepad++.exe`" -Verb RunAs}"
Add-Content $ProfileFile -Value "function ise{Start-Process -FilePath `"C:\Windows\System32\WindowsPowerShell\v1.0\powershell_ise.exe`" -Verb RunAs}"
Add-Content $ProfileFile -Value ""
Add-Content $ProfileFile -Value "function kb(`$id){Start-Process -FilePath `"http://support.microsoft.com/kb/`$id`"}"
Add-Content $ProfileFile -Value "function mwst(`$betrag, `$satz = 19) {`$betrag / 100 * `$satz}"
Add-Content $ProfileFile -Value ""
Add-Content $ProfileFile -Value "function applog{Get-EventLog -LogName Application -Newest 50}"
Add-Content $ProfileFile -Value "function syslog {Get-EventLog -LogName System -Newest 50}"
Add-Content $ProfileFile -Value ""
Add-Content $ProfileFile -Value "function gco(`$Cmdlet){Get-Command `$Cmdlet -CommandType Cmdlet}"
Add-Content $ProfileFile -Value "function about{Get-Help about_* | Select name, synopsis | Format-Table -AutoSize}"
Add-Content $ProfileFile -Value "function module{Get-Module -ListAvailable | Where-Object {`$_.Path -like `"`$PSHOME*`"}}"
#######################################################################################

## Profil in der aktuellen Sitzung laden
. $PROFILE.CurrentUserAllHosts
#######################################################################################

## Erstelle Regkeys für HKEY_CURRENT_USER\Console
$RegPath1="HKCU:\Console"
Set-Location -Path $RegPath1

## Konsolenfarben setzen
New-ItemProperty . ColorTable00 -type DWORD -value 0x00222827 -Force
New-ItemProperty . ColorTable03 -type DWORD -value 0x00141817 -Force
New-ItemProperty . ColorTable07 -type DWORD -value 0x00f2f8f8 -Force
New-ItemProperty . ColorTable09 -type DWORD -value 0x00efd966 -Force
New-ItemProperty . ColorTable10 -type DWORD -value 0x002ee2a6 -Force
New-ItemProperty . ColorTable12 -type DWORD -value 0x007226f9 -Force
New-ItemProperty . ColorTable14 -type DWORD -value 0x0074dbe6 -Force

## Schriftart und zusätzlich Optionen setzen
New-ItemProperty . CurrentPage -type DWORD -value 0x00000003 -Force
New-ItemProperty . CursorSize -type DWORD -value 0x00000019 -Force
New-ItemProperty . EnableColorSelection -type DWORD -value 0x00000000 -Force
New-ItemProperty . ExtendedEditKey -type DWORD -value 0x00000000 -Force
New-ItemProperty . ExtendedEditKeyCustom -type DWORD -value 0x00000000 -Force
New-ItemProperty . FaceName -type STRING -value "Consolas" -Force
New-ItemProperty . FontFamily -type DWORD -value 0x00000036 -Force
New-ItemProperty . FontSize -type DWORD -value 0x000e0000 -Force
New-ItemProperty . FontWeight -type DWORD -value 0x00000190 -Force
New-ItemProperty . FullScreen -type DWORD -value 0x00000000 -Force
New-ItemProperty . HistoryBufferSize -type DWORD -value 0x00000032 -Force
New-ItemProperty . HistoryNoDup -type DWORD -value 0x00000000 -Force
New-ItemProperty . InsertMode -type DWORD -value 0x00000001 -Force
New-ItemProperty . LoadConIme -type DWORD -value 0x00000001 -Force
New-ItemProperty . NumberOfHistoryBuffers -type DWORD -value 0x00000004 -Force
New-ItemProperty . PopupColors -type DWORD -value 0x000000f5 -Force
New-ItemProperty . QuickEdit -type DWORD -value 0x00000001 -Force
New-ItemProperty . ScreenBufferSize -type DWORD -value 0x270f00c8 -Force
New-ItemProperty . ScreenColors -type DWORD -value 0x0000000f -Force
New-ItemProperty . TrimLeadingZeros -type DWORD -value 0x00000000 -Force
New-ItemProperty . WindowSize -type DWORD -value 0x003600c8 -Force
New-ItemProperty . WordDelimiters -type DWORD -value 0x00000000 -Force
New-ItemProperty . WindowPosition -type DWORD -value 0x003c00dc -Force
#######################################################################################

## Erstelle Regkeys für HKEY_CURRENT_USER\Console\%SystemRoot%_System32_WindowsPowerShell_v1.0_powershell.exe
$RegPath2="HKCU:\Console\%SystemRoot%_system32_WindowsPowerShell_v1.0_powershell.exe"
$CheckRegKey2 = Test-Path -Path $RegPath2

if ($CheckRegKey2 -eq $true) {
    Clear-Host
    Remove-Item -Path $RegPath2 -Recurse -Force
    Write-Host "`nRegistrieschlüssel ist vorhanden und wird gelöscht!`n" -ForegroundColor Yellow
    New-Item -Path "HKCU:\Console" -Name "%SystemRoot%_system32_WindowsPowerShell_v1.0_powershell.exe" -Force
    Write-Host "`nRegistrieschlüssel ist nicht vorhanden und wird angelegt.`n" -ForegroundColor Green
} else {
    Clear-Host
    New-Item -Path "HKCU:\Console" -Name "%SystemRoot%_system32_WindowsPowerShell_v1.0_powershell.exe" -Force
    Write-Host "`nRegistrieschlüssel ist nicht vorhanden und wird angelegt.`n" -ForegroundColor Green
}

Set-Location -Path $RegPath2

## Konsolenfarben setzen
New-ItemProperty . ColorTable00 -type DWORD -value 0x00222827 -Force
New-ItemProperty . ColorTable03 -type DWORD -value 0x00141817 -Force
New-ItemProperty . ColorTable07 -type DWORD -value 0x00f2f8f8 -Force
New-ItemProperty . ColorTable09 -type DWORD -value 0x00efd966 -Force
New-ItemProperty . ColorTable10 -type DWORD -value 0x002ee2a6 -Force
New-ItemProperty . ColorTable12 -type DWORD -value 0x007226f9 -Force
New-ItemProperty . ColorTable14 -type DWORD -value 0x0074dbe6 -Force

## Schriftart und zusätzlich Optionen setzen
New-ItemProperty . CurrentPage -type DWORD -value 0x00000003 -Force
New-ItemProperty . CursorSize -type DWORD -value 0x00000019 -Force
New-ItemProperty . EnableColorSelection -type DWORD -value 0x00000000 -Force
New-ItemProperty . ExtendedEditKey -type DWORD -value 0x00000000 -Force
New-ItemProperty . ExtendedEditKeyCustom -type DWORD -value 0x00000000 -Force
New-ItemProperty . FaceName -type STRING -value "Consolas" -Force
New-ItemProperty . FontFamily -type DWORD -value 0x00000036 -Force
New-ItemProperty . FontSize -type DWORD -value 0x000e0000 -Force
New-ItemProperty . FontWeight -type DWORD -value 0x00000190 -Force
New-ItemProperty . FullScreen -type DWORD -value 0x00000000 -Force
New-ItemProperty . HistoryBufferSize -type DWORD -value 0x00000032 -Force
New-ItemProperty . HistoryNoDup -type DWORD -value 0x00000000 -Force
New-ItemProperty . InsertMode -type DWORD -value 0x00000001 -Force
New-ItemProperty . LoadConIme -type DWORD -value 0x00000001 -Force
New-ItemProperty . NumberOfHistoryBuffers -type DWORD -value 0x00000004 -Force
New-ItemProperty . PopupColors -type DWORD -value 0x000000f5 -Force
New-ItemProperty . QuickEdit -type DWORD -value 0x00000001 -Force
New-ItemProperty . ScreenBufferSize -type DWORD -value 0x270f00c8 -Force
New-ItemProperty . ScreenColors -type DWORD -value 0x0000000f -Force
New-ItemProperty . TrimLeadingZeros -type DWORD -value 0x00000000 -Force
New-ItemProperty . WindowSize -type DWORD -value 0x003600c8 -Force
New-ItemProperty . WordDelimiters -type DWORD -value 0x00000000 -Force
New-ItemProperty . WindowPosition -type DWORD -value 0x003c00dc -Force
#######################################################################################

## Kopiere Regkeys für HKEY_CURRENT_USER\Console\Windows PowerShell
$RegPath3="HKCU:\Console\Windows PowerShell"
$CheckRegKey3 = Test-Path -Path $RegPath3

if ($CheckRegKey3 -eq $true) {
    Clear-Host
    Remove-Item -Path $RegPath3 -Recurse -Force
    Write-Host "`nRegistrieschlüssel ist vorhanden und wird gelöscht!`n" -ForegroundColor Yellow
    New-Item -Path "HKCU:\Console" -Name "Windows PowerShell" -Force
    Write-Host "`nRegistrieschlüssel ist nicht vorhanden und wird angelegt.`n" -ForegroundColor Green
} else {
    Clear-Host
    New-Item -Path "HKCU:\Console" -Name "Windows PowerShell" -Force
    Write-Host "`nRegistrieschlüssel ist nicht vorhanden und wird angelegt.`n" -ForegroundColor Green
}

Set-Location -Path $RegPath3

## Konsolenfarben setzen
New-ItemProperty . ColorTable00 -type DWORD -value 0x00222827 -Force
New-ItemProperty . ColorTable03 -type DWORD -value 0x00141817 -Force
New-ItemProperty . ColorTable07 -type DWORD -value 0x00f2f8f8 -Force
New-ItemProperty . ColorTable09 -type DWORD -value 0x00efd966 -Force
New-ItemProperty . ColorTable10 -type DWORD -value 0x002ee2a6 -Force
New-ItemProperty . ColorTable12 -type DWORD -value 0x007226f9 -Force
New-ItemProperty . ColorTable14 -type DWORD -value 0x0074dbe6 -Force

## Schriftart und zusätzlich Optionen setzen
New-ItemProperty . CurrentPage -type DWORD -value 0x00000003 -Force
New-ItemProperty . CursorSize -type DWORD -value 0x00000019 -Force
New-ItemProperty . EnableColorSelection -type DWORD -value 0x00000000 -Force
New-ItemProperty . ExtendedEditKey -type DWORD -value 0x00000000 -Force
New-ItemProperty . ExtendedEditKeyCustom -type DWORD -value 0x00000000 -Force
New-ItemProperty . FaceName -type STRING -value "Consolas" -Force
New-ItemProperty . FontFamily -type DWORD -value 0x00000036 -Force
New-ItemProperty . FontSize -type DWORD -value 0x000e0000 -Force
New-ItemProperty . FontWeight -type DWORD -value 0x00000190 -Force
New-ItemProperty . FullScreen -type DWORD -value 0x00000000 -Force
New-ItemProperty . HistoryBufferSize -type DWORD -value 0x00000032 -Force
New-ItemProperty . HistoryNoDup -type DWORD -value 0x00000000 -Force
New-ItemProperty . InsertMode -type DWORD -value 0x00000001 -Force
New-ItemProperty . LoadConIme -type DWORD -value 0x00000001 -Force
New-ItemProperty . NumberOfHistoryBuffers -type DWORD -value 0x00000004 -Force
New-ItemProperty . PopupColors -type DWORD -value 0x000000f5 -Force
New-ItemProperty . QuickEdit -type DWORD -value 0x00000001 -Force
New-ItemProperty . ScreenBufferSize -type DWORD -value 0x270f00c8 -Force
New-ItemProperty . ScreenColors -type DWORD -value 0x0000000f -Force
New-ItemProperty . TrimLeadingZeros -type DWORD -value 0x00000000 -Force
New-ItemProperty . WindowSize -type DWORD -value 0x003600c8 -Force
New-ItemProperty . WordDelimiters -type DWORD -value 0x00000000 -Force
New-ItemProperty . WindowPosition -type DWORD -value 0x003c00dc -Force
#######################################################################################

## Powershell Verknüpfung erstellen
$ComObj = New-Object -ComObject Wscript.Shell
$Shortcut = $ComObj.CreateShortcut("$env:USERPROFILE\Desktop\Powershell.lnk")
$ShortCut.TargetPath = "$PSHOME\powershell.exe"
$ShortCut.Hotkey = "CTRL+ALT+P"
$ShortCut.Save()
####################################################################################### 

Wie immer freue ich mich über Kommentare und Anregungen.

Viele Grüße
Helmut

Hallo zusammen,

in dem heutigen Post zeige ich euch, wie Ihr mit Windows Boardmittel Remotecomputer administrieren könnt.

Folgende Zusatztools kommen in dem Skript zum Einsatz:
PsTools von Windows Sysinternals –> http://technet.microsoft.com/de-de/sysinternals/bb896649.aspx
FreeCommander XE Portable –> http://www.freecommander.com/de/fc_downl_de.htm

Wenn man sich Tag täglich, mehrmals auf entfernte Computer schalten muss, um Administrative Aufgaben zu erledigen. Versucht man sich die Arbeit so einfach wie möglich zu machen.
Persönlich wird es sehr nervig, wenn man am Tag bis zu 100 Mal Domänen Admin + Passwort eingeben muss.

Das folgende Skript erleichtert mir hier sehr viel Tipparbeit.

Die PsTools lade ich mir aus dem Internet und kopiere alle *.exe Dateien in mein C:\Windows\System32 Verzeichnis.
Den FreeCommander XE Portable lade ich mir ebenfalls aus dem Internet und lege diesen zu meinem Batch Skript.
Für alle meine Batch und Powershell Skripte lege ich mir unter D:\ einen passenden Ordner an.

ScriptOrdner

 

 

 

 

 

So sieht es aus, wenn man die Batch Datei Remote-Verwaltung.cmd das erste Mal startet.

Remoteverwaltung

 

 

 

 

 

Folgendes sollte im Batch Skript angepasst werden:

REM ------------------------------------------------------------
:: Variablen definieren (Diese Varaiablen sollten angepasst werden)
REM ------------------------------------------------------------
set NetShare=Z:
set DomainAdminUser=DomainAdminUser
set Path "D:\Scripts\Remoteverwaltung\FreeCommander;%PATH%"
REM ------------------------------------------------------------

Für die Remote C$ Freigabe habe ich mir einen Netzlaufwerksbuchstaben als Variable definiert.
Mein Domänen Admin Konto wird ebenfalls als Variable definiert.
Der Skriptpfad für FreeCommander wird in die Variable %PATH% hinzugefügt.

Warum nutze ich den FreeCommander Portable und nicht den Windows eigenen Explorer, habe sehr viel ausprobiert bei der Skripterstellung. Leider ist es nicht möglich die explorer.exe über das Kontextmenü „Als anderer Benutzer ausführen“ oder auch über RunAs Befehlen zu starten. Sobald man als Normaler Domänenbenutzer am Computer angemeldet ist, lässt sich die explorer.exe nicht in einem Domänen Administrator Kontext starten. Das Problem hier, ist die (UAC) User Access Control von Windows 7/8. Leider habe ich noch keinen Weg gefunden wie man das umgeht, außer natürlich man meldet sich als Domänenadministrator am Computer an.

Um nun mit dem Skript arbeiten zu können, startet man die Batch Datei als Domänen Administrator, dazu klickt man mit gedrückter SHIFT Taste + rechter Maustaste auf die CMD Datei und wählt im Kontextmenü „Als anderer Benutzer ausführen“

Nun bekommt man folgenden Prompt angezeigt, bitte hier Remote Computername oder IP-Adresse eingeben.
Im zweiten Schritt wird man nach dem Domänen Administrator Kennwort gefragt um das Netzlaufwerk zu verbinden.
Zusätzlich wird noch eine Textdatei angelegt, in dem der Remote Computername eingetragen wird, dieses benötigt man, wenn man eine weitere CMD Konsole öffnen will und die Variable %RemoteHost% benötigt.

BatchStart

 

 

 

 

 

REM ------------------------------------------------------------
:: Eingabe des zu verwaltenden Computers
REM ------------------------------------------------------------
echo =====================================================================================================
echo Bitte Remote Computername oder IP-Adresse eingeben um das Skript starten zu koennen (z.B. localhost)
echo =====================================================================================================
set /p RemoteHost=Computername oder IP-Adresse eingeben:
echo RemoteHost=%RemoteHost% > %ScriptPath%\RemoteHostVar.txt

REM ------------------------------------------------------------
:: C$ Freigabe vom Remote Computer verbinden
REM ------------------------------------------------------------
if exist %NetShare% net use /delete %NetShare% /yes
net use %NetShare% "\\%RemoteHost%\c$" /persistent:no /user:%USERDOMAIN%\%DomainAdminUser%

Die wichtigste Sprungmarke ist die :START, die Batch Datei ist so geschrieben, dass sie in einen Loop steckt, solange bis man sie mit Exit verlässt.
Mit title und mode wird die CMD Konsole angepasst (mode 80 ist die Breite und 50 ist die Höhe der Konsole)

 

:START
title Computer Remoteverwaltung mit %RemoteHost%
mode 80,50
cls

Bei manchen Befehlen wurde ein Pause eingebaut, diese Pause verlässt man mit drücken einer Taste.

BatchPause

 

 

 

 

 

Bei Befehl 9 und 12 gibt es noch eine Besonderheit. Um auf die Remote Registry vom Remote Computer zugreifen zu können, muss auf dem entfernten System der Dienst RemoteRegistry gestartet sein,
dies passiert mit dem Befehl sc \\%RemoteHost% start RemoteRegistry und zum zweiten kann man dem Regedit Editor keinen Computernamen mit geben. Die muss leider manuell passieren.

Damit der Befehl sc funktioniert, muss auf dem entfernten System die Firewall Ports freigeschaltet sein — RPC (Ports 137/138/139/445) oder man regelt das Ganze über Gruppenrichtlinien –> http://skatterbrainz.blogspot.de/2009/08/enabling-windows-7-remote-management.html

Bei Befehl 12 wird ein neues CMD Konsolen Fenster geöffnet, in dem die LogIn ID des angemeldeten Benutzers angezeigt wird, wenn man nun den Benutzer vom Remotesystem abmelden möchte, muss man noch manuell logoff [ID] eingeben und mit Enter bestätigen.

Alle anderen Befehle im Skript sind hoffentlich selbst erklärend, sollte dem nicht so sein, könnt ihr jederzeit einen Kommentar hinterlassen.

Hier das Skript

@echo off
cls
 
REM ------------------------------------------------------------
REM Name: Computer Remoteverwaltung
REM Autor: Helmut Thurnhofer
REM Datum: 28. Juli 2014
REM ------------------------------------------------------------
REM Zusätzliche Befehle für die Computer Remoteverwaltung
REM ------------------------------------------------------------
REM WMIMgmt = start mmc C:\Windows\System32\WmiMgmt.msc /computer:localhost
REM Aufganbenplanung start mmc C:\Windows\System32\taskschd.msc /computer:localhost
REM Perfmon = start mmc C:\Windows\System32\perfmon.msc /computer:localhost
REM Freigegebene Ordner = start mmc C:\Windows\System32\fsmgmt.msc /computer:localhost
REM ------------------------------------------------------------
REM Verwendete Administrative Tools
REM ------------------------------------------------------------
REM PsTools von Windows Sysinternals --> http://technet.microsoft.com/de-de/sysinternals/bb896649.aspx
REM FreeCommander XE Portable --> http://www.freecommander.com/de/fc_downl_de.htm
REM ------------------------------------------------------------


REM ------------------------------------------------------------
:: Variablen definieren (Diese Varaiablen sollten angepasst werden)
REM ------------------------------------------------------------
set NetShare=Z:
set DomainAdminUser=DomainAdminUser
set PATH "D:\Scripts\Remoteverwaltung\FreeCommander;%PATH%"
REM ------------------------------------------------------------


REM ------------------------------------------------------------
:: Eingabe des zu verwaltenden Computers
REM ------------------------------------------------------------
echo ====================================================================================================
echo Bitte Remote Computername oder IP-Adresse eingeben um das Skript starten zu koennen (z.B. localhost)
echo ====================================================================================================
set /p RemoteHost=Computername oder IP-Adresse eingeben:
echo RemoteHost=%RemoteHost% > D:\Scripts\Remoteverwaltung\RemoteHostVar.txt


REM ------------------------------------------------------------
:: C$ Freigabe vom Remote Computer verbinden
REM ------------------------------------------------------------
if exist %NetShare% net use /delete %NetShare% /yes
net use %NetShare% "\\%RemoteHost%\c$" /persistent:no /user:%USERDOMAIN%\%DomainAdminUser%


:START
title Computer Remoteverwaltung mit %RemoteHost%
mode 80,50
cls


REM ------------------------------------------------------------
:: Anzeigetext in der Batchdatei definieren
REM ------------------------------------------------------------
echo.
echo ============================================================
echo Derzeit verbunden mit %RemoteHost%
echo ============================================================
echo.
echo 1) Remote Computer wechseln
echo 2) Ping %RemoteHost%
echo 3) nslookup %RemoteHost%
echo 4) FreeCommander (Explorer) starten
echo 5) Dienste MMC von %RemoteHost% starten
echo 6) Computerverwaltung MMC von %RemoteHost% starten
echo 7) Ereignisanzeige MMC von %RemoteHost% starten
echo 8) Prozesse von %RemoteHost% anzeigen
echo 9) Registry Editor starten
echo 10) neue CMD Konsole starten
echo 11) Wer ist an %RemoteHost% angemeldet
echo 12) Benutzer am %RemoteHost%  abmelden
echo 13) Computer %RemoteHost% neu starten
echo 14) Remoteunterstuetzung starten
echo 15) Exit
echo.
echo ============================================================


REM ------------------------------------------------------------
:: Auswahl wird in die Variable %choice% geschrieben
REM ------------------------------------------------------------
set /p choice=Auswahl eingeben (1-16):
 
if "%choice%"=="1" goto CHANGECOMPUTER
if "%choice%"=="2" goto PING
if "%choice%"=="3" goto NSLOOKUP
if "%choice%"=="4" goto FREECOMMANDER
if "%choice%"=="5" goto SERVICES
if "%choice%"=="6" goto COMPMGMT
if "%choice%"=="7" goto EVENTMGMT
if "%choice%"=="8" goto PROCESS
if "%choice%"=="9" goto REGEDIT
if "%choice%"=="10" goto OPENCMD
if "%choice%"=="11" goto LOGGEDON
if "%choice%"=="12" goto LOGOFF
if "%choice%"=="13" goto REBOOT
if "%choice%"=="14" goto REMOTEHELP
if "%choice%"=="15" net use z: /delete %NetShare% /yes && exit


REM ===================================================
:CHANGECOMPUTER
set /p RemoteHost=Bitte neuen Computername oder IP-Adresse eingeben:
echo RemoteHost=%RemoteHost% > D:\Scripts\Remoteverwaltung\RemoteHostVar.txt

if exist %NetShare% net use /delete %NetShare% /yes
net use %NetShare% "\\%RemoteHost%\c$" /persistent:no /user:%USERDOMAIN%\%DomainAdminUser%

goto START
REM ===================================================


REM =================================================== 
:PING
ping -n 2 -4 %RemoteHost%
 
echo.
echo Bitte Taste druecken um zurueck zum Auswahlmenue zu kommen
pause >nul
goto START
REM ===================================================


REM =================================================== 
:NSLOOKUP
nslookup %RemoteHost%
 
echo.
echo Bitte Taste druecken um zurueck zum Auswahlmenue zu kommen
pause >nul
goto START
REM ===================================================


REM ===================================================
:FREECOMMANDER
FreeCommander.exe

goto START
REM ===================================================


REM ===================================================
:SERVICES
start mmc "%SystemRoot%\System32\services.msc" /computer:%RemoteHost% 

goto START
REM ===================================================


REM ===================================================
:COMPMGMT
start mmc "%SystemRoot%\System32\compmgmt.msc" /computer:%RemoteHost%

goto START
REM ===================================================


REM ===================================================
:EVENTMGMT
start mmc "%SystemRoot%\System32\eventvwr.msc" /computer:%RemoteHost%

goto START
REM ===================================================


REM ===================================================
:PROCESS
sc \\%RemoteHost% start RemoteRegistry
pslist -t -s -r 5 \\%RemoteHost%
 
echo.
echo Bitte Taste druecken um zurueck zum Auswahlmenue zu kommen
pause >nul
goto START
REM ===================================================


REM ===================================================
:REGEDIT
sc \\%RemoteHost% start RemoteRegistry
%SystemRoot%\System32\regedt32.exe && mshta "javascript:var sh=new ActiveXObject( 'WScript.Shell' ); sh.Popup('Bitte ueber [Datei] --> [Mit Netzwerkregistrierung verbinden], den Computernamen eingeben. Fenster schliesst automatisch nach 10 Sekunden.',10, 'Remote Registry', 64 );close()"

goto START
REM ===================================================


REM ===================================================
:OPENCMD
start /i %COMSPEC% /separate /k (for /f "tokens=*" %%i in (D:\Scripts\Remoteverwaltung\RemoteHostVar.txt) do set "%%i")2>nul

goto START
REM ===================================================


REM ===================================================
:LOGGEDON
sc \\%RemoteHost% start RemoteRegistry
psloggedon \\%RemoteHost%
 
echo.
echo Bitte Taste druecken um zurueck zum Auswahlmenue zu kommen
pause >nul
goto START
REM ===================================================


REM ===================================================
:LOGOFF
sc \\%RemoteHost% start RemoteRegistry
start /i %COMSPEC% /seperate /k psexec \\%RemoteHost% query session && mshta "javascript:var sh=new ActiveXObject( 'WScript.Shell' ); sh.Popup('Um den Remote User abzumelden, bitte (logoff [ID]) eingeben und mit [Enter] bestätigen. Fenster schliesst automatisch nach 10 Sekunden.',10, 'Remote User Logoff', 64 );close()"

 
echo.
echo Bitte Taste druecken um zurueck zum Auswahlmenue zu kommen
pause >nul
goto START
REM ===================================================


REM =================================================== 
:REBOOT
sc \\%RemoteHost% start RemoteRegistry
psshutdown -r -t 5 \\%RemoteHost%
 
echo.
echo Bitte Taste druecken um zurueck zum Auswahlmenue zu kommen
pause >nul
goto START
REM ===================================================


REM =================================================== 
:REMOTEHELP
msra.exe /offerRA %RemoteHost%
 
echo.
echo Bitte Taste druecken um zurueck zum Auswahlmenue zu kommen
pause >nul
goto START
REM ===================================================

Download –> Remote-Verwaltung.zip

Also viel Spaß mit dem Skript.

Gruß Helmut

Hallo zusammen,

Im fünften Teil meiner Grundlagenserie, zeige ich euch, wie Ihr mit Variablen umgehen könnt.
Über das Thema Variablen kann man sehr dicke Bücher verfassen, daher reiße ich das Thema nur kurz an, um euch einen kleinen Überblick zu geben was möglich wäre.

Sollte mal was unklar sein, könnt ihr hier nachschlagen.

Get-Help about_Variables
Get-Help about_Automatic_Variables
Get-Help about_Environment_Variables
Get-Help about_Preference_Variables
Get-Help about_CommonParameters

Um sich die Systemvariablen anzeigen zu lassen, kann man folgende Befehle nutzen:

Get-Variable

oder

Get-ChildItem Variable: | Format-Table Name, Description -AutoSize

Die Environment/Umgebungsvariablen zeigt man sich wie folgt an:

Get-ChildItem Env: | Sort-Object Name

Bestimmte Environment/Umgebungsvariablen kann man sich anzeigen lassen, indem man Env:“ gefolgt vom Variablenamen angibt oder das Dollarzeichen „$“ davorsetzt $Env:gefolgt vom Variablenamen

Get-ChildItem Env:Computername

oder

$Env:Computername

oder

Set-Location Env:
Get-ChildItem ComputerName

Um auf Verzeichnisvariablen zugreifen zu können, benutzt man folgende Befehle:

Get-ChildItem $Env:ProgramFiles
Get-ChildItem $Env:ProgramData
Get-ChildItem $Env:ALLUSERSPROFILE

Bei 64-Bit Systemen gibt es ein Ausgabeproblem bei der Variable %ProgramFiles(x86)%, wegen der beiden Klammern um x86.
Diese Abfrage fasst man einfach in geschweifte Klammern zusammen.

Get-ChildItem ${Env:ProgramFiles(x86)}

Wenn man bei Environment/Umgebungsvariablen etwas hinzufügen möchte, bestes Beispiel wäre die Path Variable, funktioniert das wie folgt. Dies gilt aber nur für die aktive Powershellsitzung.

$Env:Path
$Env:Path = $Env:Path + ";C:\Temp" + ";D:\PowershellScripte"

Wenn man feste Werte setzen möchte, muss man das über das PowerShell-Profil realisieren. Mit folgenden cmdlet wird die Path-Erweiterung gleich in die Profildatei geschrieben.

Add-Content -Path $Profile.CurrentUserAllHosts -Value '$Env:Path = $Env:Path + ";C:\Temp" + ";D:\PowershellScripte"'

Oder folgenden Eintrag an das Ende der Profildatei schreiben.

notepad $Profile.CurrentUserAllHosts
$Env:Path = $Env:Path + ";C:\Temp" + ";D:\PowershellScripte"

Um selbst Variablen für die jeweilige Powershellsitzung zu erstellen, schreibt man $VariableName = Zuordnung

$zahl = 5
$text = "Hallo Welt"

Um eine Variable fest zu definieren, dass heißt in dieser Variable dürfen z.B. nur Ganzzahlen [integer] geschrieben werden, setzt man vor den Variablenamen ein [int],
nachdem die Variable definiert wurde und man versucht diese z.B. mit Text [string] zu überschreiben, bekommt man einen Fehlermeldung angezeigt.

[int]$zahl = 5
$zahl
5

$zahl = "Hallo Welt"

Der Wert "Hallo Welt" kann nicht in den Typ "System.Int32" konvertiert werden. Fehler: "Die Eingabezeichenfolge hat das falsche Format."
In Zeile:1 Zeichen:1
+ $zahl = "Hallo Welt"

$zahl | Get-Member (TypeName: System.Int32)

Andersherum ist der String-Variable egal ob Text oder Zahlen enthalten sind, die Zahlen werden dann einfach als Text behandelt.

[string]$text = "Hallo Welt"
$text
Hallo Welt

$text = '123'
$text
123

$text | Get-Member (TypeName: System.String)

Folgende Datentypen können für Variablen definiert werden.

[datetime] 	Datum oder Zeit
[string] 	Zeichenfolge
[char] 	Einzelnes Zeichen
[double] 	Gleitzahl mit doppelter Genauigkeit
[single] 	Gleitzahl mit einfacher Genauigkeit
[int] 	32-Bit ganze Zahl
[wmi] 	Windows Management Instrumentation (WMI) Instanz oder Sammlung
[adsi] 	Active Directory-Dienstobjekt
[wmiclass] 	WMI-Klasse
[Boolesch] 	Wahrer oder Falscher Wert

Man kann natürlich auch kleine Rechenaufgaben mit Hilfe von Variablen erledigen lassen. 🙂

$rechnung = 100
$mwst = 100 * 0.19
$endsumme = $rechnung + $mwst
Write-Host "Mensch, das Abendessen hat heute $endsumme Euro gekostet!"

Oder ganze Abfragen in einer Variable schreiben lassen und diese später wieder auswerten oder weiterverarbeiten.

$timedate = Get-Date -Format "dd-MM-yyyy_HH-mm-ss"
$computers = Get-ADComputer -filter "Name -like '*'" -properties OperatingSystem,OperatingSystemServicePack,OperatingSystemVersion,IPv4Address,Created | Sort-Object

Spezielle Variablen kann man wie folgt definieren. Ob es Sinnvoll ist, muss jeder für sich selbst entscheiden. 🙂

${ein sonderbarer, aber */() möglicher Variablenname} = 12

Array’s definiert man wie folgt.

##Zahlen-Array's erstellen
$ZahlenArray = 1,2,3 ##Ausgabe des Array's = $ZahlenArray; $ZahlenArray[0]; $ZahlenArray[1]; $ZahlenArray[2]
$ZahlenArray = '4', '5', '6'
$ZahlenArray = "7", "8", "9"
$ZahlenArray = @("10", "11", "12")
$ZahlenArray

##String-Array's erstellen
$StringArray = 'Wert 1', 'Wert 2', 'Wert 3' 
$StringArray = Write-Output 'Wert 4' 'Wert 5' 'Wert 6' 
$StringArray = 'Wert 7,Wert 8,Wert 9'.Split(',')
$StringArray = @("Wert 10", "Wert 11", "Wert 12")
$StringArray

##Einträge im Array können wie folgt verändert werden
$StringArray[2] = "Wert 14"
$StringArray

##Möchte man die Ausgabe bestimmter oder aller Werte in einer Array manipulieren, hilft wieder das cmdlet Get-Member
$StringArray | Get-Member

$StringArray[1].ToLower()
$StringArray.ToUpper()
$StringArray.Replace("Wert 10", "Wert 15")

Sucht man nach bestimmten Strings oder Zeichenketten in einer Variable, helfen die Methoden (Get-Member)

$uncPath = "\\Servername\Freigabe"
$uncPath

$uncPath.StartsWith("\\")
True

if ($uncPath.StartsWith("\\") -eq $True) {
	Write-Host "Der UNC Pfad beginnt mit '\\'"
} else {
	Write-Host "Der UNC Pfad beginnt leider nicht mit '\\'"
}

$uncPath.EndsWith("Freigabe")
True

$uncPath.EndsWith("e")
True

$uncPath.EndsWith("f")
False

Um Hash-Table’s erstellen zu können, benötigt man einen Namen und ein Value als Zuordnung. Es gibt verschiedene Möglichkeiten die Wertepaare in einer Hash-Table abzulegen.

$cplist1 = @{ComputerName = "CLN01"; IPAddress="192.168.100.111"; UserName="Peter Pan"; Standort="Berlin"; Domain="htdom.local"}

oder

$cplist2 = @{} #Leere Hash-Table erstellen

$cplist2.ComputerName = "CLN01" 
$cplist2.IPAddress = "192.168.100.111"
$cplist2.UserName = "Peter Pan"
$cplist2.Standort = @("Berlin")
$cplist2["Domain"] = "htdom.local"  

##Werte aus einer Hash-Table abfragen
$cplist2
$cplist2["UserName"]
$cplist2.UserName
$cplist2["UserName", "ComputerName", "Standort"]

##Einträge aus einer Hash-Table wieder löschen
$cplist2.Remove("Domain")

##Hash-Table komplett leeren, zurück bleibt die leere Variable
$cplist2.Clear

Get-Variable
...
cplist2                         {}

##Diese leere Variable kann man mit Remove-Variable löschen
Remove-Variable cplist2

Noch ein Beispiel für eine Hash-Table

$hash = $null
$hash = @{}
$services = Get-Service | Sort-Object Name

ForEach ($service in $services) {$hash.add($service.Name,$service.Status)}
Clear-Host

$hash
$hash["BITS"]
$hash["BITS", "VSS"]

Und sollten mehrere Werte in das Value Feld eingetragen werden, würde es mit diesen Beispiel funktionieren.
Die Werte im Value Feld lassen sich aber nicht mehr so leicht verändern wie oben in den Beispielen gezeigt, hier müssten die kompletten Werten gelöscht und mit neuen Werten hinzugefügt werden.

$Users = @{}
$Users.Administrator += @("DOMAIN\Administrator")
$Users.Administrator += @("DOMAIN")
$Users.Administrator += @("S-1-5-21-3775395870-3833774050-3544682504-500")
$Users.Gast += @("DOMAIN\Gast")
$Users.Gast += @("DOMAIN")
$Users.Gast += @("S-1-5-21-3775395870-3833774050-3544682504-501")

$Users
Name                           Value
----                           -----
Administrator                  {DOMAIN\Administrator, DOMAIN, S-1-5-21-3775395870-3833774050-3544682504-500}
Gast                           {DOMAIN\Gast, DOMAIN, S-1-5-21-3775395870-3833774050-3544682504-501}

$Users["Administrator"]
DOMAIN\Administrator
DOMAIN
S-1-5-21-3775395870-3833774050-3544682504-500

$Users["Gast"]
DOMAIN\Gast
DOMAIN
S-1-5-21-3775395870-3833774050-3544682504-501

$Users.Remove("Gast")

$Users
Name                           Value
----                           -----
Administrator                  {DOMAIN\Administrator, DOMAIN, S-1-5-21-3775395870-3833774050-3544682504-500}

$Users.Clear

Get-Variable
...
Users                          {}

Remove-Variable Users

So das war es erst mal wieder von mir.

Wünsche viel Spaß und viele Grüße
Helmut

Hallo zusammen,

hier in diesen Blog Eintrag möchte ich euch zeigen wie Ihr Wireshark 1.10.6 & WinPcap 4.1.3 Silent Installieren könnt.
Das Paket WinPcap hat leider keine Silent Parameter, daher muss man hier einen keinen Umweg gehen.

Jetzt gibt es zwei möglichkeiten WinPcap Silent zu installieren.

1. Möglichkeit ist, ihr benutzt AutoIT und könnt somit die Buttons der Installation bedienen oder
2. Möglichkeit ist, ihr installiert auf einer Sauberen Maschine WinPcap 4.1.3 per Hand und kopiert euch die passenden Dateien weg.

Dazu könnt ihr folgende Tools benutzen, diese helfen euch wo welches Programm wo etwas hin installieren.

InstallWatch Pro
WhatChanged

WinPcap installiert jetzt folgende Dateien in folgende Verzeichnisse

%ProgramFiles(x86)%\WinPcap
- install.log
- rpcapd.exe
- Uninstall.exe

%SystemRoot%\System32
- Packet.dll
- wpcap.dll

%SystemRoot%\System32\drivers
- npf.sys

%SystemRoot%\SysWOW64
- Packet.dll
- pthreadVC.dll
- wpcap.dll

%SystemRoot%\SysWOW64\drivers
- npf.sys

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\WinPcap]
@="C:\\Program Files (x86)\\WinPcap"

[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\WinPcapInst]
"DisplayName"="WinPcap 4.1.3"
"UninstallString"="C:\\Program Files (x86)\\WinPcap\\uninstall.exe"
"Publisher"="Riverbed Technology, Inc."
"URLInfoAbout"="http://www.riverbed.com/"
"URLUpdateInfo"="http://www.winpcap.org"
"VersionMajor"="4"
"VersionMinor"="1"
"DisplayVersion"="4.1.0.2980"
"DisplayIcon"="C:\\Program Files (x86)\\WinPcap\\uninstall.exe"

Und zu guter letzt installiert WinPcap eine Service mit den Namen npf – NetGroup Packet Filter Driver
Sollte der Dienst nicht gestartet sein, gibt es eine Warnhinweis beim öffnen von Wireshark.

npf_error

 

 

 

 

 

Mit diesen Informationen und Dateien, kann ich mir nun eine Silent Installation der beiden Programme zusammenbauen.

Hier das passende Batchskript, die Art und weise der Installation kann man nun, in jede Softwareverteilung übernehmen.

@ECHO OFF
CLS

REM ------------------------------------------------------------
REM Name:  Wireshark 1.10.6 & WinPcap 4.1.3 Silent Installation
REM Autor: Helmut Thurnhofer
REM Datum: 16. April 2014
REM ------------------------------------------------------------

:: Wireshark 1.10.x Software Check
REG QUERY "HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\Wireshark"
cls

IF %errorlevel% EQU 0 ( GOTO :UNINSTALL 
) ELSE (
IF %errorlevel% GTR 0 GOTO :INSTALL
)

:UNINSTALL
ECHO ----------------------------------------------------
ECHO Wireshark 1.10.x Deinstallation
ECHO ----------------------------------------------------

IF EXIST "%ProgramFiles(x86)%\Wireshark\uninstall.exe" (
   "%ProgramFiles(x86)%\Wireshark\uninstall.exe" /S
) ELSE (
   "%ProgramFiles%\Wireshark\uninstall.exe" /S
)

ECHO ----------------------------------------------------
ECHO WinPcap Dienst Deinstallation
ECHO ----------------------------------------------------

sc query npf

IF %errorlevel% EQU 0 ( 
sc stop npf
PING -t localhost -n 10>nul
sc delete npf 
)
IF %errorlevel% EQU 1060 (
ECHO Service ist bereits deinstalliert 
)

IF EXIST "%ProgramFiles(x86)%\WinPcap" RMDIR /S /Q "%ProgramFiles(x86)%\WinPcap"

IF EXIST "%SystemRoot%\System32\Packet.dll" DEL /F "%SystemRoot%\System32\Packet.dll"
IF EXIST "%SystemRoot%\System32\wpcap.dll" DEL /F "%SystemRoot%\System32\wpcap.dll"
IF EXIST "%SystemRoot%\System32\drivers\npf.sys" DEL /F "%SystemRoot%\System32\drivers\npf.sys"

IF EXIST "%SystemRoot%\SysWOW64\Packet.dll" DEL /F "%SystemRoot%\SysWOW64\Packet.dll"
IF EXIST "%SystemRoot%\SysWOW64\wpcap.dll" DEL /F "%SystemRoot%\SysWOW64\wpcap.dll"
IF EXIST "%SystemRoot%\SysWOW64\pthreadVC.dll" DEL /F "%SystemRoot%\SysWOW64\pthreadVC.dll"
IF EXIST "%SystemRoot%\SysWOW64\drivers\npf.sys" DEL /F "%SystemRoot%\SysWOW64\drivers\npf.sys"

REG DELETE "HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\WinPcap" /f
REG DELETE "HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\WinPcapInst" /f


:INSTALL
ECHO ----------------------------------------------------
ECHO Wireshark 1.10.6 Installation
ECHO ----------------------------------------------------

Wireshark-win64-1.10.6.exe /NCRC /S /desktopicon=yes /quicklaunchicon=no

ECHO ----------------------------------------------------
ECHO WinPcap 4.1.3 Installation
ECHO ----------------------------------------------------

IF NOT EXIST "%ProgramFiles(x86)%\WinPcap" MKDIR "%ProgramFiles(x86)%\WinPcap"
COPY /Y "WinPcap\Program_Files\WinPcap\*.*" "%ProgramFiles(x86)%\WinPcap\"

COPY /Y "WinPcap\System32\Packet.dll" "%SystemRoot%\System32\"
COPY /Y "WinPcap\System32\wpcap.dll" "%SystemRoot%\System32\"
COPY /Y "WinPcap\System32\drivers\npf.sys" "%SystemRoot%\System32\drivers\"

COPY /Y "WinPcap\SysWOW64\Packet.dll" "%SystemRoot%\SysWOW64\"
COPY /Y "WinPcap\SysWOW64\wpcap.dll" "%SystemRoot%\SysWOW64\"
COPY /Y "WinPcap\SysWOW64\pthreadVC.dll" "%SystemRoot%\SysWOW64\"
COPY /Y "WinPcap\SysWOW64\drivers\npf.sys" "%SystemRoot%\SysWOW64\drivers\"

ECHO ----------------------------------------------------
ECHO WinPcap Dienst Installation
ECHO ----------------------------------------------------

sc query npf

IF %errorlevel% EQU 0 ( 
ECHO Service ist bereits installiert 
)
IF %errorlevel% EQU 1060 (
sc create npf type= kernel start= auto error= normal binPath= System32\drivers\npf.sys tag= no DisplayName= "NetGroup Packet Filter Driver"
PING -t localhost -n 10>nul
sc start npf
)

REGEDIT /s "WinPcap.reg"
REGEDIT /s "WinPcapInst.reg"

:: Installtionsdatei schreiben
SET datetime=%date:~0,2%.%date:~3,2%.%date:~-4% - %time:~0,2%:%time:~3,2%:%time:~6,2%

IF NOT EXIST "%SystemDrive%\Logs" MKDIR "%SystemDrive%\Logs"
ECHO Wireshark 1.10.6 und WinPcap 4.1.3 wurde am %datetime% sauber installiert  >> "%SystemDrive%\Logs\Wireshark_WinPcap_Install.txt"

:END

In diesen Sinne viel Spaß damit
Gruß Helmut

Heute hatte ich auch wieder ein kleines Problem mit den SharePoint 2010 Dokumentenbibliotheken, hier musste ich ein paar Dokumente von einer Bibliothek in die andere kopieren.

Und hier wollte ich die interne Funktion nutzen die mir SharePoint ohnehin schon anbietet “Mit Explorer öffnen”. Als ich aber auf den Button “Mit Explorer öffnen” klickte, vergingen fast 60 Sekunden als was passierte und sich das Explorer Fenster öffnete. Als ich diesen Vorgang bei der zweiten Bibliothek wiederholte, das selbe in grün.

image

So ist mir die Funktion nicht in Erinnerung geblieben, das ich jedes Mal fast 60 Sekunden warten musste, bis das Explorer Fenster aufging. Also habe ich ein wenig Recherchiert und binnen kurzer Zeit habe ich auch eine Lösung gefunden.

Schuld daran ist die Proxy Einstellungen WPAD – “Automatische Suche der Einstellungen”

image

Da ich keinen Proxy Server einsetze, muss die Einstellung nicht gesetzt sein, nach dem entfernen des Häkchens, öffnet sich das Explorer Fenster nach ca. 2 – 5 Sekunden.

Viele Grüße
Helmut

Leider funktioniert bei einem Windows 7 x64 Betriebssystem die Thumbnail Vorschau von PDF Dateien nicht sauber oder gar nicht, dieses ist ein Bug von Adobe, der bis Dato noch nicht behoben wurde, es gibt aber einen Fix dafür, den man sich downloaden kann.

image

Auf folgender Webseite kann man sich den Fix downloaden und installieren.
http://www.pretentiousname.com/adobe_pdf_x64_fix/index.html#downl

image

Nach dem die Software installiert wurde, startet ein Wizard mit dem man den passenden Regkey anpassen kann.

image

Nach dem der Regkey angepasst wurde sieht man im Explorer wieder die PDF Thumpnail Vorschau.

image

Viele Grüße
Helmut

Oh wei oder gut zu wissen, heute hatte ich kurz nach einen Lösung gesucht, wie man über die CMD Konsole das Passwort für den Administrator setzen kann. Eigentlich ganz einfach.

net user Administrator Passwort
net user Administrator /active

Nur was ich dann entdeckt habe ist für einen Firmen System Administrator ein Graus, wie kann ich mit Windows 7 Boardmitteln das lokale Windows 7 Administrator Passwort zurücksetzen.

Sobald ich Physikalischen Zugriff auf den Rechner habe absolut kein Problem mehr, früher nutzte man für die Aktion den ERD-Commander heute die cmd.exe von Windows.

Ich starte den Computer mit einer Windows7 DVD

image

Wähle die Computerreparatur aus

image

Wähle meine Windows 7 Installation aus und klicke auf Next

image

Jetzt wähle ich meine CMD Konsole aus

image

Lege mir von der Einrastfunktions EXE Datei eine Kopie an und ersetze die Einrastfunktion EXE mit der der cmd.exe

copy C:\Windows\System32\sethc.exe C:\
copy /y C:\Windows\System32\cmd.exe C:\Windows\System32\sethc.exe

oder zweite Möglichkeit

copy C:\Windows\System32\utilman.exe C:\
copy /y C:\Windows\System32\cmd.exe C:\Windows\System32\utilman.exe

Danach starte ich den Computer neu bis zum Login Fenster, wenn das Login Fenster erscheint, klicke ich jetzt 5 mal auf die Umschalttaste, danach erscheint eine CMD Konsole, bei einer auftauchenden Warnmeldung der Einrastfunktion bestätigen ich das ganze mit “Nein”.

zweite Möglichkeit ist beim Login Fenster einfach das Tastenkürzel Win+U zu drücken um die CMD Console zu bekommen.

image

Und nun kann ich mit folgenden zwei Befehlen das lokale Administrator Passwort ändern bzw. das Administratorkonto aktivieren.

net user Administrator Passwort
net user Administrator /active

Viele Grüße
Helmut

Zusatzinformation: Das ganze funktioniert nicht, wenn die Festplatte mit Bitlocker oder sonstiger Verschlüsselungssoftware verschlüsselt wurde. (Gott sei Dank. :-))

Quellen:
http://stadt-bremerhaven.de/windows-7-passwort-zuruecksetzen/
http://www.com-magazin.de/praxis/detail/artikel/so-knacken-sie-ihr-windows-passwort/4/passwort-ueber-die-kommandozeile-neu-setzen.html

Seit 1. September ist die neue Sysinternals Suite verfügbar. Mit diesen kleinen Tools ist es möglich PC’s Remote im Netzwerk zu verwalten und zu administrieren. Mark Russinovich hat so zusagen alle Tools die man früher einzeln downloaden konnte in eine Suite zusammengefasst. Die bekanntesten Tools sind wohl die PSTools, BGInfo, Process Explorer und der TCPViewer.

Hier eine Auflistung aller Tools in der Suite –> http://technet.microsoft.com/de-de/sysinternals/bb545027

Und hier ein paar Beispiele was man mit den Tools so alles anstellen kann.

Man erstellt sich eine host.csv oder host.txt Datei die ungefähr so aussieht.

image

Und kann dann mit Batch Dateien sein Netzwerk bzw. seine Clients nach bestimmten Informationen abfragen.

psinfo.exe (Hier hole ich mir die Festplatteninformation welche Software & Hotfixe installiert sind)

@echo off
set host=host.txt
if not exist „C:\PCLogs\psinfo“ mkdir „C:\PCLogs\psinfo“
for /f %%i in (%host%) do „%systemroot%\system32\psinfo.exe“ -d -s -h \\%%i > „C:\PCLogs\psinfo\%%i.txt“

pslist.exe (Prozesse anzeigen lassen)

@echo off
set host=host.txt
if not exist „C:\PCLogs\pslist“ mkdir „C:\PCLogs\pslist“
for /f %%i in (%host%) do „%systemroot%\system32\pslist.exe“ –m oder -t \\%%i > „C:\PCLogs\pslist\%%i.txt“

psexec.exe (Hier kann ich mir bestimmte Informationen Remote anzeigen lassen)

@echo off
set host=host.txt
if not exist „C:\PCLogs\psexec“ mkdir „C:\PCLogs\psexec“
for /f %%i in (%host%) do „%systemroot%\system32\psexec.exe“ \\%%i systeminfo > „C:\PCLogs\psexec\%%i.txt“

oder ich führe den Befehl auf jeden PC einzeln aus um schnell an Informationen zu gelagen.

psexec \\computername cmd [Enter] führe dann auf der Remote Console meine Befehle aus systeminfo oder ipconfig /all oder set.

psloglist.exe (Hier kann ich Remote auf die Ereignissprotokolle der Clients zugreifen und abfragen)

@echo off
set host=host.txt
if not exist „C:\PCLogs\psloglist“ mkdir „C:\PCLogs\psloglist“
for /f %%i in (%host%) do „%systemroot%\system32\psloglist.exe“ \\%%i -s -r -i 3 -h 48 Application > „C:\PCLogs\psloglist\%%i_application.txt“
for /f %%i in (%host%) do „%systemroot%\system32\psloglist.exe“ \\%%i -s -r -i 534 -d 30 Security > „C:\PCLogs\psloglist\%%i_security.txt“
for /f %%i in (%host%) do „%systemroot%\system32\psloglist.exe“ \\%%i -s -r -i 29 -h 48 System > „C:\PCLogs\psloglist\%%i_system.txt“

Hier noch ein paar nützliche Befehle:

Benutzer abmelden: psshutdown -f -o \\computername

PC neu starten: psshutdown -r -t 5 \\computername

Prozesse beenden: pslist \\computername –> pskill \\computername -t Prozessname oder Prozess ID

Wer ist am System angemeldet: psloggedon –l \\computername

Dienste Remote starten/beenden/neu starten: psservice \\computername start/stop/restart “Servicename”

Dienste Remote suchen: psservice \\computername query “ser”

Computer SID herausfinden: psgetsid \\computername

Mit  sDelete steht dem Administrator ein Tool zur Verfügung um sicher Daten zu löschen bzw. Datenträger zu bereinigen:

Sicheres Löschen: sdelete –p 3 –s “C:\Users\<username>\AppData\Local\Mozilla\Firefox\Profiles\2xcds7cer.default\Cache”

Datenträger bereinigen: sdelete –p 3 –z C: oder sdelete –p 3 –z –c C:

Der Process Explorer ist ein toller Ersatz für den Windows XP/7 Task Manger (Über Options –> Replace Task Manager, kann man den Process Explorer als Default Task Manager definieren)

image

Der TCPViewer hat mir auch schon sehr nützliche Dienste geleistet

image

Mit Rammap kann man sich den physikalischen Arbeitsspeicher von Windows anzeigen lassen, sehr Interessant.

image

Viel Spaß beim administrieren und ausprobieren.

Viele Grüße
Helmut

Volume Activation Management Tool installieren

Seit der Version Windows Server 2008 und Windows Vista muss für jeden Computer/Server in der Firmen Organisation entschieden werden, ob er mithilfe des Schlüsselverwaltungsdiensts (Key Management Service, KMS) oder mit Mehrfachaktivierungsschlüssel (Multiple Activation Key, MAK) aktiviert werden soll.

Hier in dem Howto erkläre ich, wie man so einen Volumenaktivierung (KMS) Host bereitstellt.

Als erstes installiere ich das Volume Activation Management Tool (VAMT) 2.0 auf dem Server. Mit diesem Tool kann ich später die Server und Clients verwalten.

http://www.microsoft.com/downloads/de-de/details.aspx?FamilyID=ec7156d2-2864-49ee-bfcb-777b898ad582

image

Schlüsselverwaltungsdienst (KMS) Host bereitstellen

Server und Client KMS Lizenzschlüssel von der Microsoft Volume Licensing Service Center herunterladen. Funktioniert natürlich nur wenn man Open Value, Select oder Enterprise Kunde ist.

image

Wenn ich mir alle KMS Lizenzschlüssel besorgt habe. Starte ich auf meinem ausgesuchten Server die CMD Konsole und gib folgenden Befehl ein. Mein Server auf dem ich den KMS Host aktivieren möchte ist ein Windows 2008 R2 Standard Server, daher benutze ich für die Aktivierung den KMS Schlüssel für „Windows Server 2008R2 Std/Ent KMS B

%systemroot%\system32\slmgr.vbs /ipk xxxxx-xxxxx-xxxxx-xxxxx-xxxxx (KMS Host Lizenzschlüssel)

image

Nach dem der Befehl erfolgreich ausgeführt wurde registriert man den KMS Lizenzschlüssel bei Microsoft.

%systemroot%\system32\slmgr.vbs /ato

image

Wenn auch dieser Vorgang erfolgreich abgeschlossen wurde ist der KMS Host aktiviert und kann mit folgendem Befehl die Statistik ansehen.

%systemroot%\system32\slmgr.vbs /dli

image

Nach ein paar Registrierungen sieht es irgendwann so aus wie im rechten Bild, wichtig ist, um Windows 7 Clients mit KMS verwalten zu können, muss der Zähler mindestens auf 25 stehen, vorher bekommt man am Client Fehlermeldung angezeigt.

Die DNS Veröffentlichung deaktiviere ich mit folgendem Befehl, hier ist es wichtig zu wissen dass sich in einer Organisation maximal 1 – 2 KMS Host befinden dürfen.

Warum das so ist? Sehr einfach erklärt, die KMS Lizenzschlüssel dürfen Maximal auf 6 Server verwendet werden und diese Server dürfen diese Lizenzschlüssel Maximal 10-mal aktivieren, danach ist Schicht im Schacht. Dann heißt es Microsoft anrufen, alles Zurücksetzen lassen und von neuem beginnen.

%systemroot%\system32\slmgr.vbs /cdns

Nun kann man mit folgendem Befehl den Software Protection Dienst durchstarten

net stop sppsvc && net start sppsvc

Ab sofort ist der KMS Host einsatzbereit, trotzdem würde ich noch folgende Dinge überprüfen um sicher zustellen dass alles sauber funktioniert. Der erste Schritt ist ein Blick in den DNS Server.

Den Rest findet ihr wieder im Howto –> Bereitstellen der Volumenaktivierung (KMS) für Server 2008 R2 & Windows 7 Clients

Viele Grüße
Helmut

Oftmals passiert es das man Abends den PC herunterfahren möchte, ohne die Windows Updates, installieren zu wollen. Bei Windows 7 müsste man mit Tricks arbeiten wie z.B. einem Batch Script um das zu verwirklichen.

net stop wuauserv
shutdown -s -f -t 0

Letztens habe ich aber ein Video über Windows 7 gesehen von Thomas Joos –>  http://thomasjoos.wordpress.com/

Dort hat er einen Trick verraten wie man den Herunterfahren Button von Windows 7 anpassen kann.

Standardmäßig sieht man folgendes wenn Windows Updates anstehen. Neben dem Herunterfahren Button sieht man das kleine gelbe Schutzschild, klickt man nun auf den Button fährt das System herunter und installiert die Updates.

image

Hier müsste man nur eine kleine Anpassung in der Registry vornehmen und kann dann in Zukunft selbst entscheiden wie man es möchte.

Hier öffnet ihr mit Start –> regedit den Registrierungs-Editor und navigiert zu folgenden Schlüssel

HKEY_CURRENT_USER\Software\Policies\Microsoft\Windows\ [WindowsUpdate\AU]
Dort legt ihr zwei Unterschlüssel an, mit dem Namen “WindowsUpdate” und darunter einen weiteren Schlüssel mit dem Namen“AU”
Unter den Schlüssel AU legt ihr einen DWORD Key an mit folgenden Namen “NoAUAsDefaultShutdownOption” und dem Wert 1

image

Wenn das erledigt ist, kann man sofort die Auswirkung sehen.

image

Das nächste was man immer zu sehen bekommt wenn man die Windows Updates auf Automatisch installieren konfiguriert hat, das Windows die Updates im Hintergrund installiert und das System neu starten möchte.

image

Oftmals stecke ich aber mitten in der Arbeit und will nicht ständig vom System Informiert werden das ein Neustart ansteht, daher kann man die Meldung deaktivieren.
Wenn sich mein Computer in einer Arbeitsgruppe befindet, öffne ich den lokalen Gruppenrichtlinien Editor über “gpedit.msc” und in einem Firmennetzwerk verwende ich die Gruppenrichtlinienverwaltung über “gpmc.msc”

Computerkonfiguration –> Administrative Vorlagen –>  Windows-Komponenten –> Windows Update

image

image

Lokale Gruppenrichtlinien Editor

image

image

Gruppenrichtlinien Editor für Firmen Domänen

image

image

Wenn die Richtlinien eingestellt wurden, kann man sie am Computer aktivieren indem man den Befehl gpupdate /force eingibt.

Und mit gpresult /r kann man überprüfen ob die Gruppenrichtlinien angewendet werden.

image

Viele Grüße
Helmut