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 #####
ALAPOK
# Ez egy egy soros comment
<#
Többsoros komment
#>
<#
Változók
#>
#Stringek
$aString = "Alma"
[string]$bstring = "Korte"
$aInt = 10
[int]$bint = 5
$aInt = $bInt
$aInt += $bInt
$aInt++
$aInt
$aInt = 10
#Lebegőpontos numerikus valtozok
$aFloat = 1.5
[float]$bFloat = 1.5
#$bFloat = $aFloat * $aInt
$bFloat = $bFloat * $aInt
$bFloat
#Tömbök
$aArray= (1, 2, 3, 4, 5)
$bArray= (1..5)
$Global:aString = "Globalis string valtozo, az egesz scriptre ervenyes a definialast kovetoen"
ElsoPS
<#
Script ismertetes!
#>
param(
[string]$Parameter1, # Parameter1 ertek azert, hogy .....
[string]$Parameter2 # Parameter1 ertek azert, hogy .....
)
[string]$Global:Parameter1=$Parameter1
$Global:Parameter2=$Parameter2
Set-StrictMode -Version 2.0 #warning
###############################################################################################
#function [string]aRutin([int]$iInt){
function aRutin([int]$iInt){
return "S"
}
###############################################################################################
function bRutin($iInt){
return "S"
}
###############################################################################################
#function [void]cRutin(){
function cRutin(){
return "S"
}
function Ellenorzes(){
if(($Global:Parameter1 -eq $null) -or ($Global:Parameter1 -eq ""))
{
Write-Host "Parameter1 ures!" -ForegroundColor Red
}
else
{
Write-Host $Global:Parameter1 -ForegroundColor Cyan
}
if(($Global:Parameter2 -ne $null) -and ($Global:Parameter2 -ne ""))
{
Write-Host $Global:Parameter2 -ForegroundColor Red
}
else
{
Write-Host "Parameter2 ures!" -ForegroundColor Cyan
}
}
function bRutin2($iInt){
for ($i = 1;$i -le $iInt;$i++)
{
Write-Host $i.ToString()
}
$i=1
while ($i -le $iInt)
{
Write-Host $i.ToString()
$i++
}
$i = 1
do
{
Write-Host $i.ToString()
$i++
}
while ($i -le $iInt)
<#
foreach()
{
}
#>
return $i
}
###############################################################################################
####
####
## Main
####
####
###############################################################################################
CLS
# $cString = aRutin -iInt 10
[string]$aString = aRutin -iInt 5
$aString
Write-Host $Global:Parameter1 -ForegroundColor Cyan
Ellenorzes
bRutin2 -iInt 5
Beépített változók
#Get-Help Write-Host
#Get-ChildItem | Get-Member
Get-Date -Format "yyyy-MM-dd"
Get-Date -Format "yyyy-MM-dd 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 -Property * | 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 = Get-Process
$SumPagedMemorySize = 0
foreach ($aProc in $ProcList)
{
$SumPagedMemorySize += $aProc.PagedMemorySize
}
Write-Host $SumPagedMemorySize
Fájlkezelés
$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
$LogLines+=$aLine
$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 "Nincs ilyen fájl" -ForegroundColor Red
}
finally
{
Write-Host "Indíts újra!" -ForegroundColor Cyan
}
Fájlok listázása
<#
1, Az összes PDF (itt most .log) fajl az adott mappaban. Nalam a logok
2, Melyik az 5 legujabb
3, tablazatba: konyvtar, file neve, merete, utolsomodositas,utolso olvasas
4, CSV-be konvertalas
#>
$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 Directory,Name,Length,LastWriteTime,LastAccessTime |
Sort-Object -Property Name
$RiportFileName = $SourceFolder + "\PDFriport.csv"
$RiportFileName
$PDFfiles5s | Export-Csv -Path $RiportFileName -Delimiter ';'
Processek össz memória, processek száma
CLS
$Process = Get-Process
$SumMem = 0
$Count = 0
foreach ($aProcess in $Process)
{
$SumMem += $Process.PagedMemorySize
$Count++
}
Write-Host "Processek száma:" $Count
###### WINDOWS admin projektfeladatok #####
CREATE AD USER
$SamAccountName = "hende"
$Name = "Peter Hende"
$Firstname = "Peter"
$Surname = "Hende"
$Description = "Leendo sysadmin"
$City = "Budapest"
$StreetAddress = "Nyílvessző utca 30."
$Company = "HendeWEB"
$PasswordNeverExpires = "yes"
$AccountPassword = "Password1"
$AccountExpirationDate ="2050.05.05"
$Organization = "HendeWEB"
$Path = "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 -Surname $Surname -Description $Description -City $City -StreetAddress $StreetAddress -Company $Company -Organization $Organization -PasswordNeverExpires $PasswordNeverExpires -AccountPassword (ConvertTo-SecureString "$AccountPassword" -AsPlainText -Force) -AccountExpirationDate $AccountExpirationDate -Path $Path
CREATE GPO, GPO LINK (GPO registry)
$Name = "TestGPO"
$OU= "ou=IT,dc=phende,dc=comp,dc=local"
#$keyb = 'HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\ActiveDesktop'
#$ValueNameb = "NoChangingWallPaper"
New-GPO -name $Name | `
#Set-GPRegistryValue -Key $keyb -ValueName $ValueNamec -Type DWORD -Value 1 | `
New-GPLink -Target $OU
1) Az SQL során létrehozott S meghajtón készíts egy VM mappát – ezt később fogjuk
használni
###### WINDOWS admin projektfeladatok #####
2) Telepíts fel egy AD-t, melynek domain neve a következő névkonvenciót kövesse:
keresztnév első betűje+vezetéknév+ comp.local Azaz, ha a neved: Gipsz Jakab, akkor a domain
név: jgipsz.comp.local
Set-ExecutionPolicy Unrestricted -Force
Add-WindowsFeature AD-Domain-Services -IncludeManagementTools
$SecurePassword = convertto-securestring "sxCTo768" -asplaintext -force
Import-Module ADDSDeployment
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 `
-SysvolPath "C:\Windows\SYSVOL" `
-Force:$true
3) A DNS AD integrated legyen
4) Készíts egy IT OU-t,majd ebben további kettőt: COMP és USR
a) A COMP OU-n kapcsold ki az öröklődést
New-ADOrganizationalUnit IT
New-ADOrganizationalUnit USR -Path "OU=IT,DC=PHENDE,DC=COMP,DC=LOCAL"
New-ADOrganizationalUnit COMP -Path "OU=IT,DC=PHENDE,DC=COMP,DC=LOCAL"
Set-GPInheritance -Target "ou=COMP,ou=IT,dc=phende,dc=comp,dc=local" -IsBlocked Yes
5) Készítsünk egy GPO-t az IT OU-ra a következő beállításokkal
a) Korlátozzuk a Vezérlőpulthoz való hozzáférést (készítsünk egy felhasználót az AD-ben
és állítsuk be arra a felhasználóra)
b) Tiltsuk le a LAN Manager Hash tárolását.
c) Tiltsuk le a kikényszerített rendszer-újraindítást (Windows Update).
d) Tiltsuk le a cserélhető adathordozó-meghajtókat (CD,DVD)
e) Tiltsuk le a Guest accountot (Vendég fiók)
f) Állítsuk a minimális jelszó hosszt 10-re
g) Állítsuk be a rendszert úgy, hogy az utoljára használt 6 jelszót jegyezze meg (Password
history)
h) Hozz létre a desktopon egy parancsikont, amely a kedvenc weboldalatokat nyitja meg
i) Engedélyezzük a registry elérést
j) Állítsuk be, hogy a böngésző (pl. internet explorer) nyitóoldala a google.com legyen
$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 = "Deny_Execute"
#$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 'Authenticated Users' -TargetType group | `
#Set-GPPermissions -PermissionLevel gpoapply -TargetName 'Marketing Users' `
#-TargetType group | New-GPLink -Target 'OU=Marketing,DC=cpandl,DC=com' –Order 1
New-GPO -name $Name | `
Set-GPRegistryValue -Key $keya -ValueName $ValueNamea -Type DWORD -Value 1 | `
#Set-GPRegistryValue -Key $keyb -ValueName $ValueNamec -Type DWORD -Value 1 | `
Set-GPRegistryValue -Key $keyc -ValueName $ValueNamec -Type DWORD -Value 1 | `
Set-GPRegistryValue -Key $keyd -ValueName $ValueNamed -Type DWORD -Value 1 | `
#Set-GPRegistryValue -Key $keye -ValueName $ValueNamee -Type DWORD -Value 1 | `
#Set-GPRegistryValue -Key $keyf -ValueName $ValueNamef -Type DWORD -Value 1 | `
#Set-GPRegistryValue -Key $keyg -ValueName $ValueNameg -Type DWORD -Value 1 | `
#Set-GPRegistryValue -Key $keyh -ValueName $ValueNameh -Type DWORD -Value 1 | `
#Set-GPRegistryValue -Key $keyi -ValueName $ValueNamei -Type DWORD -Value 1 | `
#Set-GPRegistryValue -Key $keyj -ValueName $ValueNamej -Type DWORD -Value 1 | `
New-GPLink -Target $OU
6) A DNS-ben vegyünk fel egy CNAME rekordot a szerverre (a név szabadon választható)
Add-DnsServerResourceRecord -CName -Name "valami" -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) Kérdezzük le a gép arp tábláját és a MAC címet
Get-NetNeighbor
GetMac
8) Telepítsünk fel egy DHCP szervert. Tételezzük fel, hogy a hálózatban 200 kliens, 10 szerver,
5 nyomtató, 4 AP és 3 Layer-3 szintű switch van
a) A scope-ot a fentieknek megfelelően állítsuk be.
b) A scope maradjon inaktív
# 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
Restart-Service dhcpserver
# Add-DhcpServerInDC -DnsName DHCP.phende.comp.local -IPAddress 192.168.1.6
# Get-DhcpServerInDC
Add-DhcpServerV4Scope -Name "DHCP Scope" -StartRange 192.168.1.1 -EndRange 192.168.1.222 -SubnetMask 255.255.255.0
Add-Dhcpserverv4ExclusionRange -ComputerName "phende.comp.local" -ScopeId 192.168.1.0 -StartRange 192.168.1.1 -EndRange 192.168.1.22
Set-DhcpServerv4Scope -ComputerName "phende.comp.local" -ScopeId 192.168.1.0 -State InActive
# Remove-Dhcpserverv4ExclusionRange -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-DhcpServerv4Scope -ScopeId 127.0.0.1 -LeaseDuration 1.00:00:00
Hagyj üzenetet