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