https://github.com/green-fox-academy/safely-syllabus/tree/master/materialreview/scripts/powershell
https://github.com/green-fox-academy/safely-syllabus/tree/master/materialreview/powershell-commands
##### MatRev ####1T#
ALAPOK
# Dies ist ein einzeiliger Kommentar
#Strings
$aString = "Alma"
[string]$bstring = "Korte"
$aInt = 10
[int]$bint = 5
$aInt = $bInt
$aInt += $bInt
$aInt++
$aInt
$aInt = 10
#Airborne numerische Werte
$aFloat = 1,5
[float]$bFloat = 1.5
#$bFloat = $aFloat * $aInt
$bFloat = $bFloat * $aInt
$bFloat
#Blocks
$aArray= (1, 2, 3, 4, 5)
$bArray= (1..5)
$Global:aString = "Globale Zeichenkette, für das gesamte Skript, mit dem Definialast"
ElsoPS
param(
[string]$Parameter1, # Parameter1 wurde für ..... erzeugt.
[string]$Parameter2 # Parameter1 wurde für ..... erstellt
)
[Zeichenfolge]$Global:Parameter1=$Parameter1
$Global:Parameter2=$Parameter2
Set-StrictMode -Version 2.0 #warning
###############################################################################################
#function [string]aRutin([int]$iInt){
Funktion aRutin([int]$iInt){
return "S"
}
###############################################################################################
Funktion bRutin($iInt){
return "S"
}
###############################################################################################
#function [void]cRutin(){
Funktion cRutin(){
return "S"
}
function Ellenorzes(){
if(($Global:Parameter1 -eq $null) -oder ($Global:Parameter1 -eq ""))
{
Write-Host "Parameter1 ures!" -ForegroundColor Red
}
sonst
{
Write-Host $Global:Parameter1 -FrontgroundColor Cyan
}
if(($Global:Parameter2 -ne $null) -und ($Global:Parameter2 -ne ""))
{
Write-Host $Global:Parameter2 -ForegroundColor Red
}
sonst
{
Write-Host "Parameter2 ures!" -ForegroundColor Cyan
}
}
Funktion bRutin2($iInt){
for ($i = 1;$i -le $iInt;$i++)
{
Write-Host $i.ToString()
}
$i=1
while ($i -le $iInt)
{
Schreibe-Host $i.ToString()
$i++
}
$i = 1
do
{
Write-Host $i.ToString()
$i++
}
while ($i -le $iInt)
return $i
}
###############################################################################################
#####
####
## Haupt
####
####
###############################################################################################
CLS
# $cString = aRutin -iInt 10
[string]$aString = aRutin -iInt 5
$aString
Write-Host $Global:Parameter1 -ForegroundColor Cyan
Zählerstände
bRutin2 -iInt 5
Eingebaute Variablen
#Get-Help Write-Host
#Get-ChildItem | Get-Member
Get-Date -Format "jjjj-MM-tt"
Get-Date -Format "jjjj-MM-tt HH:mm:ss.ms"
$b =$env:COMPUTERNAME
$b
$files=Get-ChildItem -Path "C:\Users\MSI\AppData\Local\Temp" -Filter "*.tmp"
#$files | Select-Object -Property * | Select-Object -Last 5 | Select-Object -Property FullName,Length | Sort-Object Length -Descending
$files | Select-Object -Eigenschaft * | Select-Object -First 5
$Files5biggest = $files | Sort-Object Length -Descending | Select-Object -First 5 | Sort-Object Name | Select-Object -Property FullName,Length
$Files5biggest | Format-Table -AutoSize
Get-Process | Select-Object -Property * | Select-Object -First 1
$ProcList = Hole-Vorgang
$SumPagedMemorySize = 0
foreach ($aProc in $ProcList)
{
$SumPagedMemorySize += $aProc.PagedMemorySize
}
Write-Host $SumPagedMemorySize
Dateiverwaltung
$Lines = Get-Content -Path "C:\Users\MSI\Documents\suli\mat review\batch\DeleteOldFiles.log"
$Lines.Length
$LogLines = ""
foreach($aLine in $Lines)
{
If($aLine.Contains(".tmp"))
{
Write-Host $aLine
$LogZeilen+=$aZeilen
$LogLines+="`n"
}
}
$LogLines | Out-File -FilePath "C:\Users\MSI\Documents\suli\mat review\PowerShell\___LogDeleteOldFiles.log"
$LogLines.Length
Copy-Item -Force "C:\Users\MSI\Documents\suli\mat review\PowerShell\___LogDeleteOldFiles.log" "C:\Users\MSI\Documents\suli\mat review\PowerShell\___LogDeleteOldFiles2.log"
Remove-Item -Force -Path "C:\Users\MSI\Documents\suli\mat review\PowerShell\___LogDeleteOldFiles2.log"
#Remove-Item -Force -Path "C:\Users\MSI\Documents\suli\mat review\PowerShell\___LogDeleteOldFiles2.log" -Filter "*.log"
#Move-Item -Force "C:\Users\MSI\Documents\suli\mat review\PowerShell\___LogDeleteOldFiles.log" "C:\Users\MSI\Documents\suli\mat review\PowerShell\___LogDeleteOldFiles2.log"
try
{
$Lines = Get-Content -Path "C:\Users\MSI\Documents\suli\mat review\batch\DeleteOldFiles.log"
}
catch
{
Write-Host "No such file" -ForegroundColor Red
}
finally
{
Write-Host "Neustart!" -ForegroundColor Cyan
}
Auflistung von Dateien
$SourceFolder = "C:\Users\MSI\Documents\suli\mat review\PowerShell"
$PDFfiles = Get-ChildItem -Path $SourceFolder -Filter "*.log"
#$PDFfiles | Select-Object -Property * -First 1
$PDFfiles5 = $PDFfiles | Sort-Object LastWriteTime | Select-Object -Last 5
$PDFfiles5s = $PDFfiles5 | Select-Object -Property Verzeichnis,Name,Länge,LastWriteTime,LastAccessTime
Sort-Objekt -Eigenschaft Name
$RiportFileName = $SourceFolder + "\PDFriport.csv"
$RiportFileName
$PDFfiles5s | Export-Csv -Path $RiportFileName -Delimiter ';'
Gesamtspeicher der Prozesse, Anzahl der Prozesse
CLS
$Prozess = Get-Prozess
$SumMem = 0
$Count = 0
foreach ($aProcess in $Process)
{
$SumMem += $Process.PagedMemorySize
$Count++
}
Write-Host "Anzahl der Prozesse:" $Count
###### WINDOWS admin Projektaufgaben #######
AD-BENUTZER ERSTELLEN
$SamKontoname = "hende"
$Name = "Peter Hende"
$Vorname = "Peter"
$SNachname = "Hende"
$Beschreibung = "Leendo sysadmin"
$CStadt = "Budapest"
$StreetAddress = "Nyílvessző utca 30."
$CUnternehmen = "HendeWEB"
$PasswordNeverExpires = "ja"
$AccountPasswort = "Passwort1"
$AccountExpirationDate ="2050.05.05"
$Organisation = "HendeWEB"
$Pfad = "IT"
$Path = "ou="+ $Path + ",dc=phende,dc=comp,dc=local"
if ($PasswordNeverExpires = "yes")
{
$PasswordNeverExpires = $true
}else
{
$PasswordNeverExpires = $false
}
New-ADUser -SamAccountName $SamAccountName -Name $Name -GivenName $FirstName -Nachname $Surname -Description $Description -City $City -StreetAddress $StreetAddress -Company $Company -Organisation $Organisation -PasswordNeverExpires $PasswordNeverExpires -AccountPassword (ConvertTo-SecureString "$AccountPassword" -AsPlainText -Force) -AccountExpirationDate $AccountExpirationDate -Path $Path
CREATE GPO, GPO LINK (GPO-Registrierung)
$Name = "TestGPO"
$OU= "ou=IT,dc=phende,dc=comp,dc=local"
#$keyb = 'HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\ActiveDesktop'
#$ValueNameb = 'NoChangingWallPaper'
Neu-GPO-Name $Name
#Set-GPRegistryValue -Key $keyb -ValueName $ValueNamec -Type DWORD -Value 1 ` `
Neu-GPLink -Ziel $OU
1) Erstellen Sie auf dem Laufwerk S, das während SQL erstellt wurde, einen VM-Ordner - wir werden dies später tun
verwenden.
###### WINDOWS admin Projektaufgaben #######
2) Installieren Sie ein AD mit einem Domänennamen, der der folgenden Benennungskonvention entspricht:
erster Buchstabe des Vornamens+Leadname+comp.local Das heißt, wenn Ihr Name Jakab Gipsz ist, dann ist die Domain
Name: jgipsz.comp.local
Set-ExecutionPolicy Unrestricted -Force
Add-WindowsFeature AD-Domain-Services -IncludeManagementTools
$SecurePassword = convertto-securestring "sxCTo768" -asplaintext -force
Modul ADDSDeployment importieren
Install-ADDSForest -SafeModeAdministratorPassword $SecurePassword `
-CreateDnsDelegation:$false `
-DatabasePath "C:\Windows\NTDS" `
-DomainMode "WinThreshold" `
-DomainName "phende.comp.local" `
-DomainNetbiosName "PHENDE" `
-ForestMode "WinThreshold" `
-InstallDns:$true `
-LogPath "C:\Windows\NTDS" `
-NoRebootOnCompletion:$false `
-SysvolPfad "C:\Windows\SYSVOL" `
-Force:$true
3) DNS AD sollte integriert werden
4) Erstellen Sie eine OU IT und dann zwei weitere: COMP und USR
a) Schalten Sie die Vererbung auf COMP OU aus
New-ADOrganizationalUnit IT
New-ADOrganizationalUnit USR -Pfad "OU=IT,DC=PHENDE,DC=COMP,DC=LOCAL"
New-ADOrganizationalUnit COMP -Pfad "OU=IT,DC=PHENDE,DC=COMP,DC=LOCAL"
Set-GPInheritance -Target "ou=COMP,ou=IT,dc=phende,dc=comp,dc=local" -IsBlocked Ja
5) Erstellen Sie ein GPO für die IT-OU mit den folgenden Einstellungen
a) Beschränken Sie den Zugriff auf das Control Panel (erstellen Sie einen Benutzer in AD
und setzen Sie ihn auf diesen Benutzer)
b) Deaktivieren Sie die Speicherung des LAN Manager Hash.
c) Deaktivieren Sie den erzwungenen Systemneustart (Windows Update).
d) Deaktivieren Sie Laufwerke für Wechselmedien (CD, DVD)
e) Deaktivieren Sie das Gastkonto
f) Setzen Sie die Mindestlänge des Passworts auf 10
g) Stellen Sie das System so ein, dass es sich die letzten 6 verwendeten Passwörter merkt (Passwort
Geschichte)
h) Erstellen Sie eine Verknüpfung auf dem Desktop, um Ihre bevorzugten Websites zu öffnen
i) Erlauben Sie den Zugriff auf die Registry
j) Stellen Sie den Browser (z. B. den Internet Explorer) so ein, dass er google.com öffnet.
$Name = "TestGPO"
$OU= "ou=IT,dc=phende,dc=comp,dc=local"
$keya = 'HKCU\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer'
$ValueNamea = 'Nocontrolpanel'
#$keyb = 'HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\ActiveDesktop'
#$ValueNameb = 'NoChangingWallPaper'
$keyc = 'HKLM\Software\Policies\Microsoft\Windows\WindowsUpdate\AU'
$ValueNamec = "NoAutoBootWithLoggedOnUsers"
$keyd = 'HKLM\Software\Policies\Microsoft\Windows\RemovableStorageDevices\{53f56308-b6bf-11d0-94f2-00a0c91efb8b}'
$ValueNamed = "Verweigern_Ausführen"
#$keye = 'HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\ActiveDesktop'
#$ValueNamee = 'NoChangingWallPaper'
#$keyf = 'HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\ActiveDesktop'
#$ValueNamfe = 'NoChangingWallPaper'
#$keyg = 'HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\ActiveDesktop'
#$ValueNameg = 'NoChangingWallPaper'
#$keyh = 'HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\ActiveDesktop'
#$ValueNameh = 'NoChangingWallPaper'
#$keyi = 'HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\ActiveDesktop'
#$ValueNamei = 'NoChangingWallPaper'
#$keyj = 'HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\ActiveDesktop'
#$ValueNamej = 'NoChangingWallPaper'
# https://gpsearch.azurewebsites.net/#4847
# https://gpsearch.azurewebsites.net/Default_legacy.aspx
#new-gpo -name TestGPO | new-gplink -target "ou=marketing,dc=contoso,dc=com" | set-gppermissions -permissionlevel gpoedit -targetname "Marketing Admins" -targettype group
# Set-GPPermission -Name "ScreenSaverTimeOut" -TargetName "Petra" -TargetType User -PermissionLevel GPOApply
# new-gpo -name $Name | new-gplink -target "ou=$OU,dc=comp,dc=local"
#New-GPO -name $Name | Set-GPRegistryValue -Key $key `
#-ValueName $ValueName -Type DWORD -Value 1 | Set-GPPermissions -Replace `
#-PermissionLevel None -TargetName 'Authentifizierte Benutzer' -TargetType Gruppe
#Set-GPPermissions -PermissionLevel gpoapply -TargetName 'Marketing Users' `
#-TargetType group | New-GPLink -Target 'OU=Marketing,DC=cpandl,DC=com' -Order 1
Neu-GPO-Name $Name
Set-GPRegistryValue -Key $keya -ValueName $ValueNamea -Type DWORD -Value 1
#Set-GPRegistryValue -Schlüssel $keyb -WertName $ValueNamec -Typ DWORD -Wert 1 | `
Set-GPRegistryValue -Schlüssel $keyc -Wertname $ValueNamec -Typ DWORD -Wert 1 | `
Set-GPRegistryValue -Schlüssel $keyyd -WertName $ValueNamed -Typ DWORD -Wert 1 | `
#Set-GPRegistryValue -Schlüssel $keye -WertName $ValueNamee -Typ DWORD -Wert 1 | `
#Set-GPRegistryValue -Schlüssel $keyf -WertName $ValueNamef -Typ DWORD -Wert 1 | `
#Set-GPRegistryValue -Schlüssel $keyg -WertName $ValueNameg -Typ DWORD -Wert 1 | `
#Set-GPRegistryValue -Schlüssel $keyyh -WertName $ValueNameh -Typ DWORD -Wert 1 | `
#Set-GPRegistryValue -Schlüssel $keyi -WertName $ValueNamei -Typ DWORD -Wert 1 | `
#Set-GPRegistryValue -Schlüssel $keyj -WertName $ValueNamej -Typ DWORD -Wert 1 | `
Neu-GPLink -Ziel $OU
6) Fügen Sie im DNS einen CNAME-Eintrag für den Server hinzu (der Name ist optional)
Add-DnsServerResourceRecord -CName -Name "etwas" -HostNameAlias "gf-win-u03.phende.comp.local" -ZoneName "phende.comp.local"
# Add-DnsServerResourceRecord -CName -Name "hende" -HostNameAlias "gf-win-u03.phende.comp.local" -ZoneName "phende.comp.local" -AllowUpdateAny -TimeToLive 01:00:00
# Add-DnsServerResourceRecordCName -Name "hende" -HostNameAlias "gf-win-u03.phende.comp.local" -ZoneName "phende.comp.local"
7) Rufen Sie die Arp-Tabelle und die MAC-Adresse des Rechners ab.
Get-NetNeighbor
GetMac
8) Installieren Sie einen DHCP-Server. Nehmen Sie ein Netzwerk mit 200 Clients und 10 Servern an,
5 Drucker, 4 APs und 3 Layer-3-Switches
a) Stellen Sie den Bereich wie oben beschrieben ein.
b) Der Geltungsbereich sollte inaktiv bleiben
# https://learn.microsoft.com/en-us/windows-server/networking/technologies/dhcp/dhcp-deploy-wps
# https://argonsys.com/microsoft-cloud/library/how-to-manage-dhcp-using-powershell/
Install-WindowsFeature DHCP -IncludeManagementTools
netsh DHCP add SecurityGroups
Dienst dhcpserver neu starten
# Add-DhcpServerInDC -DnsName DHCP.phende.comp.local -IPAdresse 192.168.1.6
# Ermitteln-DhcpServerInDC
Add-DhcpServerV4Scope -Name "DHCP Scope" -StartRange 192.168.1.1 -EndRange 192.168.1.222 -SubnetMask 255.255.255.0
Add-Dhcpserverv4AusschlussBereich -Computername "phende.comp.local" -ScopeId 192.168.1.0 -StartBereich 192.168.1.1 -EndBereich 192.168.1.22
Set-DhcpServ4Scope -ComputerName "phende.comp.local" -ScopeId 192.168.1.0 -State InActive
# Remove-Dhcpserververv4ExclusionRange -ComputerName "phende.comp.local" -ScopeId 192.168.1.0 -EndRange 192.168.1.222
# Set-DhcpServerV4OptionValue -DnsServer 127.0.0.1 -Router 10.39.91.1
# Set-DhcpServ4Scope -ScopeId 127.0.0.1 -LeaseDuration 1.00:00:00
Einen Kommentar hinterlassen