BATCH / POWERSHELL SKRIPTING

BATCH – DFÜ-Einwahl und Verbindung mit Remote-Desktop
BATCH – Druckaufträge im Spooler löschen
BATCH – net use und Sonderzeichen im Passwort
BATCH – Verzeichnis auf Existenz prüfen
BATCH – VPN-Einwahl mit ShrewVPN
POWERSHELL – Active-Directory-Befehle
POWERSHELL – Computername setzen
POWERSHELL – Datei-Operationen
POWERSHELL – IP Einstellungen setzen
POWERSHELL – Kennwort-Richtlinien
POWERSHELL – Netzwerk-Ports prüfen
POWERSHELL – Rechner im Active-Directory einbinden
POWERSHELL – Server als Domaincontroller einrichten
POWERSHELL – Zugriffsrechte setzen


System – DFÜ-Einwahl und Verbindung mit Remote-Desktop

@echo off
cls
rem
rem Name der Netzwerkverbindung setzen
set dial=_NAME_DFUE_EINWAHL_
rem
rem Remote-Desktop-Client setzen
set confile=%USERPROFILE%\Eigene Dateien\_NAME_RDP_PROFIL_.rdp
rem
rem Benutzername setzen
set username=_LOGINNAME_
rem
rem Passwort setzen
set password=_PASSWORT_
rem
rasdial ″%dial%″ %username% %password%
start /wait mstsc ″%confile%″
rasdial ″%dial%″ /DISCONNECT


System – Druckaufträge im Spooler löschen

Zum Löschen von Druckaufträgen aus dem Spool-Verzeichnis, muss vorher der Dienst „Druckerwarterschlange“ angehalten werden.

net stop spooler
del %systemroot%\System32\spool\printers\* /Q
net start spooler


System – net use und Sonderzeichen im Passwort

 
Sonderzeichen in einem Passwort werden bei net use falsch interpretiert. Die praktikabelste Lösung ist, das Passwort in eine Variable zu setzen.

setlocal
@set pw= Passwort/mitSonderzeichen

net use Z: \\servername\freigabe /User:Domain\Nutzername %pw%

System – Verzeichnis auf Existenz prüfen

 

Um zu prüfen ob ein Verzeichnis oder eine Freigabe existiert, verwendet man am besten den EXIST-Befehl:

Beispiel:
if not exist \\server\freigabe goto err
net use …..
exit
:err
echo Fehler: Server xxx scheint nicht zu laufen


System – VPN-Einwahl mit ShrewVPN

Das Einwählen einer VPN Verbindung mit ShrewVPN kann man auch per Batch optimieren:
″C:\Programme (x86)\ShrewSoft\VPN Client\ipsecc.exe″ -r ″VPN-Profilname″ -u ″user″ -p ″VPN Passwort″

Aber Achtung: Das VPN-Passwort steht dann im Klartext in der Batchdatei, eventuell ist dies unerwünscht.


POWERSHELL – ActiveDirectory-Befehle

Anzeige aller Benutzer im Active-Directory die nicht deaktiviert sind:
get-aduser -ldapfilter ″(&(&(objectCategory=user)(userAccountControl=512)))″ | where-object -property enabled -eq true

Anzeige der Anzahl der Active-Directory-Benutzer:
(Get-ADUser -Filter ″Name -like ‚*’″).count

Anzeige leerer Gruppen im Active-Directory
Get-ADGroup -Filter * -Properties Members | where { -not $_.Members} | select Name

Anzeige letzte Anmeldung eines Benutzerkontos:
Get-ADUser ″NutzerName″ -Properties LastLogonDate | FT -Property Name, LastLogonDate -A

Anzeige letzte Anmeldung aller Benutzerkonten:
Get-ADUser -Filter {(Enabled -eq $true)} -Properties LastLogonDate | select samaccountname, Name, LastLogonDate | Sort-Object LastLogonDate

Gesperrte Benutzerkonten anzeigen:
Search-ADAccount -lockedout

Nutzer im Active-Directory entsperren:
Get-ADUser -Identity NutzerName | Unlock-ADAccount


POWERSHELL – Computername setzen

Dies geht am einfachsten mit dem CmdLet Rename-Computer. NewName ist der Name der für den Computer gesetzt werden soll. Restart leitet einen notwendigen Neustart nach der Umbenennung ein.
Rename-Computer -NewName dc03 -Restart -Force


POWERSHELL – Datei-Operationen

Mit Powershell-Befehlen lassen sich auch Datei-Operationen ausführen.

Anlegen eines neuen Ordners:
New-Item -Path ″C:\NeuerOrdner″ -ItemType Directory

Anlegen einer leeren neuen Datei:
New-Item -Path ″C:\NeuerOrdner\NeueDatei.txt″ -ItemType File

Umbenennen von Dateien:
Rename-Item -Path ″C:\Dateiname.txt″ -NewName „NeuerDateiName.txt“

Kopieren von Dateien aus einem Ordner:
Copy-Item -Path ″C:\Quelle\*″ -Destination ″C:\Ziel″ -Recurse

Löschen von Dateien:
Remove-Item -Path ″C:\Dateiname.txt″

Verschieben/Umbenennen von Verzeichnissen:
Move-Item -Path ″C:\Quelle″ -Destination ″C:\Ziel″

Löschen von Verzeichnissen:
Remove-Item -Path ″C:\Ordner″ -Recurse -Force

Prüfen eines Ordners und Auflistung aller Dateien, die nicht älter als 7 Tage sind und größer als 10 Megabyte
Get-ChildItem -Path ″C:\Ordner\″ -Recurse | Where-Object { $_.CreationTime -gt (Get-Date).AddDays(-7) -and $_.Length -gt 10mb} | Out-File C:\LOG\Benutzer_Check.txt -Encoding ASCII

Dateien nach einem bestimmten Text durchsuchen:
Get-ChildItem -Path ″C:\Ordner ″ -Recurse | Select-String -Pattern ″gesuchter Text″ | ForEach-Object { $_.Path }


POWERSHELL – IP Einstellungen setzen

Mit dem Cmdlet Get-NetAdapter zeigt die PowerShell die Netzwerkkonfiguration an.
Mit dem Cmdlet Get-Set-NetIPInterface können Sie Änderungen an der Netzwerkkonfiguration vornehmen.

Zeigt die aktuellen IP-Adressen an
Get-NetIPAddress
Get-DnsClientServerAddress

Der folgende Befehl deaktiviert DHCP. Achtung bei InterfaceAlias muss die Bezeichnung der LAN-Verbindung eingesetzt werden, die Sie ändern möchten.
Set-NetIPInterface -InterfaceAlias „Ethernet“ -AddressFamily IPv4 -DHCP Disabled -PassThru

Der folgende Befehl setzt eine IP-Adresse auf einer Netzwerk-Karte. Achtung bei InterfaceAlias muss die Bezeichnung der LAN-Verbindung eingesetzt werden, die Sie ändern möchten.
New-NetIPAddress -AddressFamily IPv4 -InterfaceAlias „Ethernet“ -IPAddress 192.168.1.232 -PrefixLength 24 -DefaultGateway 192.168.1.1

Setzen von DNS-Serveradressen:
Set-DnsClientServerAddress -InterfaceAlias „Ethernet“ -ServerAddresses 192.168.1.230, 192.168.1.231


POWERSHELL – Kennwort-Richtlinien im ActiveDiretory

Anzeige der aktuelle Richtlinien für Kennwörter im Active Directory:
Get-ADDefaultDomainPasswordPolicy

Das Setzen von Richtlinien erfolgt mit dem Cmdlet „Set-ADDefaultDomainPasswordPolicy“. Dafür stehen folgende Parameter zur Verfügung:

  • ComplexityEnabled (Kennwörter müssen Groß- und Kleinbuchstaben und zusätzlich Ziffern enthalten, $True oder $False)
  • DistinguishedName
  • LockoutDuration (Dauer der Kontosperrung)
  • LockoutObservationWindow (Zeit innerhalb der Anmeldeversuche für „LockoutDuration“ und „LockoutThreshold“)
  • LockoutThreshold (Einstellung nach wie vielen Anmeldeversuchen ein Konto gesperrt wird)
  • MaxPasswordAge (maximales Kennwortalter)
  • MinPasswordAge (minimales Kennwortalter)
  • MinPasswordLength (Mindestlänge für Kennwörter)
  • objectClass
  • objectGuid
  • PasswordHistoryCount (Anzahl der Kennwörter in der Kennworthistorie)
  • ReversibleEncryptionEnabled (Einstellung ob Kennwörter mit umkehrbarer Verschlüsselung gespeichert werden)

Beispiel:
Set-ADDefaultDomainPasswordPolicy -Identity domainname.local -ComplexityEnabled $True


POWERSHELL – Netzwerk-Ports prüfen

Mit dem Power-Shell-Befehl

Get-NetUDPEndpoint

kann man den Rechner auf offene UDP-Ports überprüfen.

Sollte der Rechner mehrere Netzwerkarten haben, kann man die Prüfung mit

Get-NetUDPEndpoint -LocalAddress 127.0.0.1

auf eine IP-Adresse einschränken.

Mit

Test-NetConnection 192.168.1.1 -Port 443 -InformationLevel „Detailed“

kann die Verbindung zu einer IP-Adresse über einen bestimmten Port geprüft werden.

Mit

Get-NetTCPConnection -State Established

zeigen Sie alle aktiven Verbindungen zu einer Netzwerkkarte an.


POWERSHELL – Rechner im Active-Directory einbinden

Fügt einen PC zum Active-Directory hinzu:
Add-Computer -Credential Domain\Administrator -DomainName domain.local -Restart -Force


POWERSHELL – Server als Domaincontroller einrichten

Installation der notwendigen Server-Rollen:
Install-WindowsFeature -Name AD-Domain-Services -IncludeManagementTools -IncludeAllSubFeature

Domänencontroller heraufstufen
$pwd = Read-Host „Bitte Wiederherstellungs-Passwort für ActiveDirectory eingeben“ -AsSecureString
Install-ADDSDomainController -Credential (Get-Credential domain\Administrator) -DomainName „domain.local“ -NoGlobalCatalog:$false -CriticalReplicationOnly:$false -InstallDns:$true -SafeModeAdministratorPassword $pwd -Force

Danach ist der Server ein Domänencontroller und kann entsprechend verwendet werden.


POWERSHELL – Zugriffsrechte setzen

Über die Powershell lassen sich auch Nutzer-Rechte im Netzwerk prüfen und setzen. Um sich die Nutzer-Rechte für einen Ordner anzeigen zu lassen, nutzen Sie:

$Acl = Get-Acl -Path ″C:\Ordner″

Um einen Nutzer beispielsweise Leserechte auf einen Ordner zu setzen, verwenden Sie das Set-Acl-Cmdlet:

$User = ″DOMAIN\Benutzername″
$AccessRule = New-Object System.Security.AccessControl.FileSystemAccessRule($User, ″Read″, ″Allow″)
$Acl.SetAccessRule($AccessRule)
Set-Acl -Path „C:\Ordner“ -AclObject $Acl