PARTICIÓK , KVÓTA , PSDRIVE
Hozd létre az új merevlemezen a következő partíciókat: 10Gb primary, „Data” névvvel, „F:” betűjelhez hozzárendelve
Get-Disk ——ha a száma a hdd-nek 1 akkor ezzel dolgozunk tovább
Initialize-Disk -number 1 -PartitionStyle MBR
New-Partition -DiskNumber 1 -Size 10GB -DriveLetter F
VAGY New-Partition -DiskNumber 1 -DriveLetter W –UseMaximumSize
Format-Volume -DriveLetter F -FileSystem NTFS
Set-Volume -DriveLetter F -NewFileSystemLabel „Data”
PARTICIOK Mindegyik partíció legyen NTFS-re formázva!
- 9Gb extended
- 3Gb logikai, "Data3" névvel, "G:" betűjelhez hozzárendelve
- 2Gb logikai, "Data2" névvel, "H:" betűjelhez hozzárendelve
- 1Gb logikai, "Data1" névvel, "I:" betűjelhez hozzárendelve
New-Partition -DiskNumber 1 -Size 9GB -MbrType Extended
New-Partition -DiskNumber 1 -Size 3GB -DriveLetter G
New-Partition -DiskNumber 1 -Size 2GB -DriveLetter H
New-Partition -DiskNumber 1 -Size 1GB -DriveLetter I
Format-Volume -DriveLetter G -FileSystem NTFS
Format-Volume -DriveLetter H -FileSystem NTFS
Format-Volume -DriveLetter I -FileSystem NTFS
Set-Volume -DriveLetter G -NewFileSystemLabel „Data3”
Set-Volume -DriveLetter H -NewFileSystemLabel „Data3”
Set-Volume -DriveLetter I -NewFileSystemLabel „Data1”
PS DRIVE LÉTREHOZÁSA
mkdir c:\Vizsga
New-PSDrive -Name „V” -PSProvider FileSystem -Root „C:\Vizsga”
Telepítsen File Server Resource Manager szolgáltatást, az egyes felhasználóknak 1 GB tárterület álljon rendelkezésére, a rendszer 900 MB elérésekor figyelmeztesse őket!
Install-WindowsFeature –Name FS-Resource-Manager –IncludeManagementTools
New-FsrmQuotaTemplate -Name „1GB limit 90% tresh” -Size 1GB -Threshold (New-FsrmQuotaThreshold -Percentage 90)
New-FsrmAutoQuota -Path „C:\MUNKA” -Template „1GB limit 90% tresh”
Korlátozza minden üzletkötő HOME könyvtárának nagyságát 300 MB-ra!
A szabályozás mértéke HARD legyen! A létrehozott kvótát sablonként is mentse el Biztosító néven!
Install-WindowsFeature –Name FS-Resource-Manager –IncludeManagementTools
New-FsrmQuotaTemplate -Name „Biztosító” -Size 300MB
New-FsrmAutoQuota -Path „E:\Biztosító” -Template „Biztosító”
Állíts be az „I:” meghajtóhoz kvótát, 10Mb limittel, 7Mb figyelmeztetéssel, a 10Mb elérése után ne tudjanak írni a meghajtóra a felhasználók!
Install-WindowsFeature –Name FS-Resource-Manager –IncludeManagementTools
$Action = New-FsrmAction -Type Command -Command „c:\windows\system32\cmd.exe” -CommandParameters „echo [source file path] >> c:\log.txt” -ShouldLogError
$Threshold = New-FsrmQuotaThreshold -Percentage 70 -Action $Action
New-FsrmQuota -Path „I:” -Size 10MB -Threshold $Threshold -SoftLimit
$Threshold = New-FsrmQuotaThreshold -Percentage 70
New-FsrmQuota -Path „I:\” -Size 10MB -Threshold $Threshold
fsutil quota track i:
fsutil quota enforce i:
fsutil quota modify I: 7000000 10000000 Diak1
dirquota parancs
Telepítsen File Server Resource Manager szolgáltatást és konfigurálja be, hogy a felhasználók futtatható állományokat ne másolhassak a megosztott könyvtárba!
Install-WindowsFeature –Name FS-Resource-Manager –IncludeManagementTools
Get-FsrmFileGroup
(Get-FsrmFileGroup -Name "Executable Files").IncludePattern
# De lehet készíteni újat:
New-FsrmFileGroup -Name "Futtatható fájlok" -IncludePattern @("*.exe", "*.com", "*.cmd", "*.bat", "*.ps1")
New-FsrmFileScreen -Path „C:\FELADAT” -IncludeGroup „Executable Files”
BEÁLLÍTÁS , GÉPEN ÁTNEVEZÉS , HÁLOZAT
Adminként belépve tudunk dolgozni így , ez tután jöhetnek a parancsok
Get-LocalUser -Name „Administrator” | Set-LocalUser -Password (ConvertTo-SecureString ‘A123456a’ -AsPlainText -Force)
Nevezze át a szervert „SZERVEREM” névre!
Rename-Computer -NewName SZERVEREM -Force –PassThru
Restart-Computer -Force
TUDNI KELL MELYIK INTERFACE , EZT LE KELL KÉRDEZNI!
Get-NetIPInterface
Nevezze is át ezt az interfészt „Külső”-re, a másik interfészt pedig „Belső”-re!.
Rename-NetAdapter -Name Ethernet3 -NewName „Külső”
Rename-NetAdapter -Name Ethernet2 -NewName „Belső”
A szerver külső interfészén állítson be DHCP-t, vagyis a hálózati beállításokat DHCP-n keresztül kapja!
Get-NetIPInterface
Set-NetIPInterface -InterfaceIndex 999 -Dhcp Enabled
DHCP KIKAPCSOLÁS
Set-NetIPInterface -InterfaceIndex 999 -Dhcp Disabled
A Windows 10 egy hálózati kártyával rendelkezzen (belső csatoló), IP címe: 172.16.20.120, hálózati maszk: 255.255.255.0, átjáró: 172.16.20.1
New-NetIPAddress -InterfaceIndex 999 -AddressFamily IPv4 -IPAddress „172.16.20.120” -PrefixLength 24 -DefaultGateway „172.16.20.1”
Ha van ip törölni kell az ip-t
Remove-NetIPAddress -InterfaceIndex 999 -AddressFamily IPv4 -IPAddress „192.168.56.200” -PrefixLength 24
DNS BEÁLLÍTÁS SZERVEREN
Set-DnsClientServerAddress -InterfaceIndex 999 -ServerAddresses „172.16.20.1” -PassThru
Ha saját maga A DNS SZERVER :
Set-DnsClientServerAddress -InterfaceIndex 999 -ServerAddresses „127.0.0.1” -PassThru
A kliens IP címét 10.40.50.1/24-re!TUDNI KELL MELYIK INTERFACE,LE KELL KÉRDEZNI (Get-NetIPInterface)
New-NetIPAddress -InterfaceIndex 999 -AddressFamily IPv4 -IPAddress „10.40.50.1” -PrefixLength 24
Ellenőrizze, hogy a szerver eléri-e az internetet!
ping 8.8.8.8
Biztosítsa a megfelelő tűzfalbeállítások segítségével, hogy mind a szerver, mind a kliens pingelhető legyen a belső hálózaton belülről, valamint ellenőrizze is, hogy a két gép (szerver + kliens) látja-e egymást!
Enable-NetFirewallRule -Name „FPS-ICMP4-ERQ-In”
ping 10.40.50.1
ping 10.40.50.200
C: meghajtón egy Munka nevű mappát, amelyen belül pedig a következő mappákat: Gazd
mkdir c:\Munka
Állítsuk be a jogosultságokat a következőképpen : Közös mappához az IT és a Foni teljes jogkörrel, a többi csoport csak olvasási joggal
mindig kell , öröklés mgszünteteés , user hozzáférés törlése
icacls c:\Munka\Közös /inheritancelevel:d
icacls c:\Munka\Közös /remove:g:d Users /t
hogy írni is tudjanak bele
icacls c:\Munka\Közös /grant "IT:(OI)(CI)(IO)(F)"
icacls c:\Munka\Közös /grant "IT:(RX,W)"
csak olvasni tudják
icacls c:\Megosztasok\Tanuloknak /grant „Tanulok:(OI)(CI)(RX)”
Ha be akarsz lépni valamelyik felhasználóval, hozzá kell adni a Users csoporthoz!
Add-LocalGroupMember -Group „Users” -Member „Foni”
Hozzon létre egy KOZOS nevű mappát a C:\megosztasok helyen és ossza meg minden tartományi felhasználóval (olvasási joguk legyen)
icacls c:\megosztasok\KOZOS /grant „Domain Users:(OI)(CI)(RX)”
New-SmbShare -Name „KOZOS” -Path „C:\megosztasok\KOZOS” -FullAccess „Everyone”
Ellenőrzés! (Be kell jelentkezni különböző csoportokba tartozó felhasználókkal és a Teszt felhaználóval is, és velük és meg kell nézni a mappák elérhetőségét)
Bejelentkezés Foni-vel
mkdir c:\Munka\Információk\XXX
mkdir c:\Munka\Információk\XXX\YYY
touch c:\Munka\Információk\alma.txt
del c:\Munka\Információk\alma.txt
Oszd meg a „Megoszt” mappát csak a tanárok részére írási joggal, „Tanar” megosztási névvel!
New-SmbShare -Name „Tanar” -Path „I:\Megoszt” -FullAccess „Tanarok”
Ossza meg a „Tesztanyagok” mappát „Tesztek” névvel, de rejtett megosztásként,
New-SmbShare -Name „Teszt$” -Path „c:\Tesztanyagok” -FullAccess „Everyone”
Csatlakoztassuk a Foni felhasználónak a Közös mappa megosztását K: meghajtóként. legyen tartós.
New-SmbMapping -LocalPath ‘K:’ -RemotePath ‘\szerver.ip.cime\Kozos’ -UserName „Foni” -Password „Password123” -Persistent $True
Ellenőrizd a „TanarIr” mappa távoli elérésével a kvótát, hogy a másik tanárral csatlakozol a Win10ről!
Get-SmbMapping
Remove-SmbMapping -RemotePath „\10.11.12.201\IPC$”
New-SmbMapping -LocalPath ‘X:’ -RemotePath ‘\10.11.12.201\TanarIr’ -UserName „Tanar2” -Password „Password123”
Remove-SmbMapping -RemotePath „\10.11.12.201\TanarIr”
AD-NÉL Beléptetett kliensen nem tudok belépni tartományi felhasználóval!!! -MINDIG OTHER USERREL LÉPJ BE!!!!
C:\MUNKA mappa M: meghajtóként jelenjen meg a felhasználóknál!
New-SmbShare -Name „Munka” -Path „c:\MUNKA” -FullAccess „Everyone”
$netlogonpath=(Get-SmbShare | Where-Object Name -EQ „NETLOGON”).Path
$logon_script=’ceg_munka.cmd’
New-Item -Path $netlogonpath -Name $logon_script -ItemType „file” -Value „net use M: \dc-server\Munka”
Get-ADUser -Filter ‘Name -like „*” -SearchBase „OU=CEG,DC=TANFOLYAM,DC=COM” | ForEach-Object { Set-ADUser -Identity $_.Name -scriptPath $logon_script }
állítsa be NAGY.PETER dolgozó home könyvtárát
mkdir „e:\Biztosító\Marketing\nagy.peter”
icacls „e:\Biztosító\Marketing\nagy.peter” /grant „nagy.peter:(OI)(CI)(IO)(F)”
icacls „e:\Biztosító\Marketing\nagy.peter” /grant „nagy.peter:(RX,W)”
Set-ADUser -Identity „nagy.peter” -HomeDirectory „\vizsga2\Homes\Marketing\nagy.peter” -HomeDrive „H:”
E: meghajtón és állítsa be az összes felvett dolgozó home könyvtárát
H: meghajtóként (teljes jogkörrel!)
mkdir „e:\Biztosító”
icacls "e:\Biztosító" /inheritancelevel:d
icacls "e:\Biztosító" /remove:g:d Users /t
New-SmbShare -Name "Homes" -Path "e:\Biztosító" -FullAccess "Everyone"
Get-ADUser -Filter * | ft *
Get-ADUser -Filter * | Where-Object DistinguishedName -Like "*OU=Biztosító,DC=MODULZARO,DC=LOCAL" | ForEach-Object {$_.Name}
Get-ADUser -Filter 'Name -like "*"' -SearchBase "OU=Biztosító,DC=MODULZARO,DC=LOCAL"
Get-ADUser -Filter 'Name -like "*"' -SearchBase "OU=Biztosító,DC=MODULZARO,DC=LOCAL" | ForEach-Object { `
$nev=$_.SamAccountName; $nev; mkdir "e:\Biztosító\$nev"; `
icacls "e:\Biztosító\$nev" /grant "${nev}:(OI)(CI)(IO)(F)"; `
icacls "e:\Biztosító\$nev" /grant "${nev}:(F)"; `
Set-ADUser -Identity $nev -HomeDirectory "\\vizsga\Homes\$nev" -HomeDrive "H:" `
}
A szerveren vegyük fel következő csoportokat:- Gazdasági
New-LocalGroup „Gazdasági”
A szerveren vegyük fel a következő felhasználókat:- Gazd1
New-LocalUser -Name „Gazd1” -Password (ConvertTo-SecureString -AsPlainText „Password123” -Force) -UserMayNotChangePassword
New-LocalUser -Name „Ruander” -Password (ConvertTo-SecureString -AsPlainText „Password123” -Force) -PasswordNeverExpires -AccountNeverExpires -UserMayNotChangePassword
sortörés miatt igy is lehet írni
New-LocalUser -Name „KissP” -Password (ConvertTo-SecureString -AsPlainText `
„Password123” -Force) `
-PasswordNeverExpires `
-AccountNeverExpires `
-UserMayNotChangePassword
ciklussal
New-LocalUser -Name „Gazd1” -Password (ConvertTo-SecureString -AsPlainText „Password123” -Force) -UserMayNotChangePassword
$users=”Diak1″,”Diak2″,”Tanar1″,”Tanar2″, „Konyvtaros”
foreach ($u in $users) {
New-LocalUser -Name $u -Password (ConvertTo-SecureString -AsPlainText "Password123" -Force) -UserMayNotChangePassword
}
A Gazdx, ITx, Termx felhasználók kerüljenek a saját csoportjukba.
Add-LocalGroupMember -Group „Gazdasági” -Member „Gazd1”, „Gazd2”
AD TELEPÍTÉSNÉL A DNS SZERVER TELEPÜL!!!!
Telepítsen AD szolgáltatást, ahol a tartománynév legyen „mzaro.local”, a helyreállítási jelszó pedig „Password123”!
Install-WindowsFeature -name AD-Domain-Services –IncludeManagementTools
Restart-Computer –Force
Install-ADDSForest -DomainName „mzaro.local” -ForestMode WinThreshold -DomainMode WinThreshold -DomainNetbiosName MZARO -SafeModeAdministratorPassword (ConvertTo-SecureString -AsPlainText „Password123” -Force) -InstallDNS
VAGY HA TUDJUK AZ INTERFACE SZÁMÁT ITT 999 ( Get-NetIPInterface ) és ip-t állítunk egyben
Install-WindowsFeature -name AD-Domain-Services –IncludeManagementTools
Set-DnsClientServerAddress -InterfaceIndex 999 -ServerAddresses „127.0.0.1” -PassThru
Install-ADDSForest -DomainName „JRU.LOCAL” -ForestMode WinThreshold -DomainMode WinThreshold -DomainNetbiosName JRU -SafeModeAdministratorPassword (ConvertTo-SecureString -AsPlainText „Password123” -Force) -InstallDNS -Force
ellenőrzés : Get-ADDomain Get-ADDomainController Get-ADForest
Adja hozzá a DNS szolgáltatáshoz a 8.8.8.8 címet DNS továbbító címként!
Get-DnsServerForwarder ——LEKÉRDEZ
Add-DnsServerForwarder -IPAddress 8.8.8.8 -PassThru ——hozzáad ÚJAT A LISTÁHOZ
VÁLTOZTASSA a DNS szolgáltatásnál a 8.8.8.8 címet DNS továbbító címként!
Set-DnsServerForwarder -IPAddress 8.8.8.8,8.8.4.4
Módosítsa a szerveren a szerever hálozati beállításánál a DNS beállítasait,hogy a szerver saját magához forduljon a DNS kérdésekkel!
ipconfig /all –> már magához fordul, ott van a 127.0.0.1 minden interfésznél!
Set-DnsClientServerAddress -InterfaceIndex 6 -ServerAddresses „127.0.0.1” -PassThru
ellenörzés : nslookup www.mzaro.local nslookup merce.hu
MEGLÉVŐ ÁTÁLLÍTÁSA
Set-DnsServerForwarder -IPAddress 8.8.8.8,8.8.4.4
Kapcsolja be az AD lomtárat
Get-ADOptionalFeature -filter *
Enable-ADOptionalFeature ‘Recycle Bin Feature’ -Scope ForestOrConfigurationSet -Target modulzaro.local
LépTesse be a kliens gépet a tartományba!
$credential = New-Object System.Management.Automation.PSCredential(„mzaro\Administrator”, (ConvertTo-SecureString -AsPlainText „Password123” -Force))
Add-Computer -ComputerName WINKLIENS -DomainName „mzaro.local” -Credential $credential -Restart -Force
-NewName „Win10” ————-ez CSAK HA MÁS NÉVEN , TALÁN
Tesztelje a az előző pontban megadott beállításokat!
Get-ADComputer -Filter *
AD TELEPÍTÉSNÉL A DNS SZERVER TELEPÜL!!!! HA KÜLÖN KELL :
Install-WindowsFeature DNS -IncludeManagementTools
DNS REKORDOK LEKÉRDEZÉSE
Get-DnsServerResourceRecord -ZoneName „mzaro.local”
DNS REKORDOK LEKÉRDEZÉSE FORMÁZVA
Get-DnsServerResourceRecord -ZoneName „mzaro.local” | Format-Table -AutoSize -Wrap
Vegye fel a következő „A” rekordokat a DNS szerverbe szerver – 10.40.50.200 kliens – 10.40.50.1
ha ad-t telepitesz megy fel a dns szerver, tehát nem kell kiadni a köv parancsot!
Add-DnsServerResourceRecordA -Name „szerver” -ZoneName „mzaro.local” -IPv4Address „10.40.50.200” -TimeToLive 01:00:00 -PassThru
„A” rekord
Add-DnsServerResourceRecordA -Name „kliens” -ZoneName „mzaro.local” -IPv4Address „10.40.50.1” -TimeToLive 01:00:00 -PassThru
„c” rekord alias —- ha már van a rekordban server akkor kerütl az aliasba a server.mzaro.local
Add-DnsServerResourceRecordCName -Name „ftp” -HostNameAlias „server.mzaro.local” -ZoneName „mzaro.local” -PassThru
A DNS-szolgáltatásNÁL LEKÉRDEZÉSEK :
Get-DnsServer
Get-DnsServerSetting
Get-DnsServerZone
nem tudom mi : Add-DnsServerPrimaryZone -NetworkID 172.16.20.0/24 -ZoneFile „20.16.172.in-addr.arpa.dns” -DynamicUpdate None -PassThru
DHCP TELEPÍTÉS
Telepítsen DHCP szolgáltatást a fenti hálózat részére úgy, hogy IP címet csak 10-től 99-ig osszon, de a többi szükséges hálózati beállítást is kiossza! A Scope neve legyen Xyscope!
Install-WindowsFeature DHCP –IncludeManagementTools
Restart-Computer –Force
Add-DhcpServerv4Scope -Name „Belső hálózat” `
-StartRange 172.16.10.20 -EndRange 172.16.10.50 `
-SubnetMask 255.255.255.0 `
-LeaseDuration 0.08:00:00 `
-State Active `
-PassThru
Add-DhcpServerInDC -DnsName „vizsga.modulzaro.local” -IPAddress 172.16.10.1 -PassThru
kizárás
Add-DhcpServerv4ExclusionRange -ScopeId 172.16.10.0 -StartRange 172.16.10.44 -EndRange 172.16.10.44
Restart-Service DHCPServer
Módosítsa a DHCP beállításokat úgy, hogy a DNS szerver címe (10.10.10.200) a szerver címe legyen!
Get-DhcpServerv4Scope —–megondja mi a scope
Set-DhcpServerv4OptionValue -ScopeId 10.10.10.0 -DnsServer 10.10.10.200 -Router 172.16.10.1
ipconfig /renew
Get-DhcpServerv4OptionValue -ScopeId 10.10.10.0
FELHASZNÁLÓ HOZZÁADASA AD-BEN
Vegyen fel a rendszerben egy „TESZT” szervezeti egységet! —–GYÖKÉRBE
New-ADOrganizationalUnit -Name TESZT
HA MÁSIK ALÁ KELL , pl zarovizsga alá
New-ADOrganizationalUnit -Name Teszt -Path „OU=ZAROVIZSGA,DC=ZAROAD,DC=LOCAL”
listázza milyen szervezeti egységek vanna AD-ben
Get-ADOrganizationalUnit -Filter *
A „Teszt” szervezeti egységen belül vegyen fel egy „Tesztelo1” felhasználót teljes neve „Vizsgázó felhasználó” „Password123” jelszóval!
New-ADUser -Name Tesztelo1 -AccountPassword (ConvertTo-SecureString -AsPlainText „Password123” -Force) -DisplayName „Vizsgázó felhasználó” -Path „OU=TESZT,DC=MZARO,DC=LOCAL” -Enabled $true
jelszót nem szükséges változtatni ( vizsga.local gépen van egy biztosító csoport abban egy sales : OU=SALES,OU=Biztosító,DC=VIZSGA,DC=LOCAL)
New-ADUser -Name „kiss.attila” -DisplayName „Kiss Attila” -CannotChangePassword $true -PasswordNeverExpires $true -AccountPassword (ConvertTo-SecureString -AsPlainText „A123456a@” -Force) -Path „OU=SALES,OU=Biztosító,DC=VIZSGA,DC=LOCAL” -Enabled $true
ezzel ellenörzöd : Get-ADUser -Filter *
A webadmin és webadmin2 felhasználót vegye fel a Webmesters csoportba!
Add-ADGroupMember -Identity Webmesters -Members webadmin, webadmin2
„kiss.attila” ha ékezet , szóköz van benne Webmesters csoportba
Add-ADGroupMember -Identity „Webmesters” -Members „kiss.attila”
felhasználó „Graf1” csoporttagságát kérdzi le
Get-ADPrincipalGroupMembership -Identity Graf1
A „web” szervezeti egységen belül hozzon létre egy „Tesztelok” csoportot, majd vegye fel a két tesztelő felhasználót a csoportba! ( ELÉRÉSBEN MINDIG NAGYBETŰK VANNAK )
New-ADGroup -GroupScope Global -Name Tesztelok -Path „OU=WEB,OU=ZAROVIZSGA,DC=ZAROAD,DC=LOCAL”
Add-ADGroupMember -Identity Tesztelok -Members Tesztelo1, Tesztelo2
kik vannak a tesztelők csoportban
Get-ADGroup -Identity Tesztelok
felahsználókat lsitáz
Get-ADUser -Filter * -Properties MemberOf
Listázza ki, hogy a felhasználók mikor léptek be utoljára.
Get-ADUser -Filter * -Properties * |select name, LastlogonDate
A csoportban vegyen fel 3 felhasználót egy CSV állományból tetszőleges adatokkal (A CSV filet: 3 felhasználóval a kívánt fejlécekkel Önnek kell elkészítenie. A CSV file tartalmát is másolja be a WORD állományba feladatbeadáskor)
$csvfile=”useradatok.csv”
new-item -Path . -Name $csvfile -type file -Value „firstname;lastname;sam;ou;password
User;1;User1;OU=VIZSGAFELHASZNALOK,DC=VIZSGA,DC=LOCAL;Password123
User;2;User2;OU=VIZSGAFELHASZNALOK,DC=VIZSGA,DC=LOCAL;Password123
User;3;User3;OU=VIZSGAFELHASZNALOK,DC=VIZSGA,DC=LOCAL;Password123
„
$user = Import-Csv -Path $csvfile -Delimiter „;”
foreach ($userP in $user)
{
$DisplayName = $userP.firstname + ” ” + $userP.lastname;
$firstName = $userP.firstname;
$lastName = $userP.lastname;
$OU = $userP.ou;
$Sam = $userP.sam;
$UserPassword = ConvertTo-SecureString $userP.password -asplaintext -force;
New-ADUser -Name $DisplayName -DisplayName $DisplayName -SamAccountName $Sam -GivenName $firstName -Surname $lastName -AccountPassword $UserPassword -Path $OU -Enabled $true -ChangePasswordAtLogon $false -PasswordNeverExpires $true
Write-Host $Sam "sikeresen létrehozva";
Add-ADGroupMember -Identity VIZSGAZOK -Members $Sam
}
Gyűjtse ki a Vizsga2-’monogram’.txt állományba, mely csoportoknak tagja a Vizsgazo nevű felhasználó!
//Get-ADUser xx -Properties MemberOf | Format-List -Property MemberOf > Vizsga2-VZ.txt
Get-ADPrincipalGroupMembership -Identity Vizsgazo|ForEach-Object name > Vizsga2-VZ.txt
listázza ki az elmúlt egy napban létrehozott felhasználói fiókokat és a kimenetet irányítsa az Vizsga1-’monogram’.txt nevű állományba!
$d=(Get-Date).AddDays(-1).ToString()
Get-ADUser -Properties Created -Filter {Created -gt $d} > Vizsga1-VZ.txt
Jelenítse meg, hogy az egyes felhasználók mikor léptek be utoljára!
Get-ADUser -Filter * -Properties * |select name LastlogonDate |ft -AutoSize
A fenti feladatok elvégzése után a script kérdezze meg, hogy szeretnénk-e jelszót módosítani valamelyik felhasználónál. Ha azt válaszoljuk consolon, hogy „nem”, akkor a script befejezi a futását. Amennyiben a válasz” igen”, akkor pedig valamilyen módon tudjunk választani a felhasználók közül, majd megváltoztatni annak jelszavát.(Nem kell, hogy ismétlődéssel fusson!)
Write-Host „Szeretne jelszóváltoztatást? (igen vagy nem)”
$v=Read-Host
if($v -eq „igen”) {
Write-Host "Írja be a felhasználó nevét!"
$u=Read-Host
if (Get-ADUser -Filter * | Where-Object SamAccountName -eq $u) {
Write-Host "Írja be az új jelszót!"
$p=Read-Host -AsSecureString
if($p -ne "") {
Set-ADAccountPassword -Identity $u -Reset -NewPassword (ConvertTo-SecureString -AsPlainText "$p" -Force)
} else {
„Üres jelszó nem adható meg!”
}
} else {
„Nincs ilyen felhasználó!”
}
}
WEB , FTP SZERVER TELEPÍTÉSE
Ha FTP KELL ÉS ELÖTTE NINCS TELELPÍTVE IIS AKOR AZT IS KELL
IIS telepítése
Install-WindowsFeature Web-Server -IncludeManagementTools
ELLENÖRZÉS : Invoke-WebRequest localhost
FTP telepítése amikor már van IIS
Install-WindowsFeature Web-FTP-Server -IncludeManagementTools
Állítsd le az alapértelmezett web site-ot!
Stop-Website ‘Default Web site’
Megnézed hogy megy-e
Get-Website
Állítsa be a „Web” mappa jogosultságait úgy, hogy a web adminisztrátorok tudjanak bele írni is, az IIS ki tudjon onnan szolgálni, de senki más ne férjen hozzá! Ellenőrizze is!
icacls c:\Web /inheritancelevel:d
icacls c:\Web /remove:g:d Users /t
icacls c:\Web /grant „Webmesterek:(OI)(CI)(IO)(F)”
icacls c:\Web /grant „Webmesterek:(RX,W)”
icacls c:\Web /grant „IUSR:(OI)(CI)(RX)”
ALAP HELYEN WEBOLDAL
Vegyen fel egy új site-ot „Tesztoldal” névvel, ami a 80-as porton szolgál ki és a kiinduló mappája a „C:\Web” mappa! Hozzon létre ebben a mappában egy „index.html” fájlt, aminek a tartalma „Modulzáró vizsga folyamatban…”!
New-WebSite -Name „Tesztoldal” -Port 80 -PhysicalPath „c:\Web”
echo „Modulzáró vizsga folyamatban…” > C:\Web\index.html
Kliensről ELENÖRZÉS
Invoke-WebRequest http://10.40.50.200 -UseBasicParsing
HA BENNE VANA HOSTHEADER KÉSŐBB NEM ÉRHETŐ EL MÁSHOGYAN , NE ÍRD BELE !!!!
New-WebSite -Name „VZWWW” -Port 20080 -HostHeader „RX-8.srv.world” -PhysicalPath „W:\WWW\VZWWW”
NEM ALAP HELYEN WEBOLDAL
Hozz létre egy új web site-ot, „X80” névvel és állítsd be úgy, hogy a 80-as porton figyeljen és kiinduló mappája a „WWW”-n belüli „80” legyen! Készíts egy szabványos alap oldalt, ahol a személyes adataid jelenjenek meg! Ellenőrizd a host-ról vagy a kliensről az oldal elérhetőségét!
mkdir w:\WWW\80
New-WebSite -Name „x80” -Port 80 -PhysicalPath „w:\www\80”
echo „Jantner Zsolt 80” > W:\www\80\index.html
NEM ALAP PORTON WEBOLDAL
Hozz létre egy új web site-ot, „X800” névvel és állítsd be úgy, hogy a 800-as porton figyeljen! Szolgálja mind a http, mind a https kéréseket! Kiinduló mappája a „WWW”-n belüli „800” legyen! Helyezd el itt egy tetszőleges oldal tartalmat!
mkdir w:\WWW\800
New-WebSite -Name „x800” -Port 800 -PhysicalPath „w:\www\800”
echo „Vinnai Zoltán 800” > W:\www\800\index.html
//Nem megy egyszerre a http és a https! VAGY VAGY
New-WebBinding -Name „x800” -IPAddress „*” -Port 800 -Protocol https
New-Item IIS:\SslBindings\0.0.0.0!800!localhost -Value $Cert
Ellenőrizd a host-ról vagy a kliensről az oldal elérhetőségét!
curl http://localhost:800
curl http://localhost
curl http://10.11.12.200
Külső eléréshez kell tűzfal szabály szerveren :
New-NetFirewallRule -Name ‘WWW800’ -DisplayName ‘WWW800’ -Description ‘www 800’ -Profile Any -Direction Inbound -Action Allow -Protocol TCP -LocalPort 800 -Program Any -LocalAddress Any -RemoteAddress Any
NEM ALAP PORTON WEBODLAL CERTIVEL
Hozz létre egy új web site-ot, „X443” névvel és állítsd be úgy, hogy a 443-as porton figyeljen titkosított kapcsolattal és kiinduló mappája a „WWW”-n belüli „443” legyen! Készíts egy szabványos alap oldalt, ahol a táblázatos formában a mai órarended jelenik meg! Ellenőrizd a host-ról vagy a kliensről az oldal elérhetőségét!Ehhez tanúsítványra van szükség, amit az IIS-en belül is el tudsz készíteni. Az IIS-ben a szerveren kattintva középen megjelenik a „Server Certificate” ikon, amit kiválasztva (dupla katt) jobb oldalt megjelenik néhány menüpont. Ott a „Create Self-Signed Certificate” elemet kell választani, majd adni kell egy nevet és OK. Az így létrehozott tanusítványt mindenhol be lehet állítani, ahol szükséges.
mkdir w:\WWW\443
New-WebSite -Name „x443” -Port 443 -PhysicalPath „w:\www\443”
New-WebBinding -Name „x443” -IPAddress „*” -Port 443 -Protocol https
Remove-WebBinding -Name „x443” -Protocol http
echo „Vinnai Zoltán 443” > w:\www\443\index.html
New-SelfSignedCertificate `
-DnsName „localhost” `
-KeyAlgorithm RSA `
-KeyLength 2048 `
-CertStoreLocation „Cert:\LocalMachine\My” `
-NotAfter (Get-Date).AddYears(10)
vagy
New-SelfSignedCertificate -KeyAlgorithm RSA -KeyLength 2048 -CertStoreLocation „Cert:\LocalMachine\My” -NotAfter (Get-Date).AddYears(10) -Subject „VZ”
Get-ChildItem Cert:\LocalMachine\My
$cert=Get-ChildItem Cert:\LocalMachine\My\4119C5379B0180EA9DC285DDF7B96CAE04D7910C
New-Item IIS:\SslBindings\0.0.0.0!443!localhost -Value $Cert
Start-Website -Name „x443”
Start-Website -Name „x80”
Hozz létre egy új FTP site-ot „FTP21Anon” névvel, ami a 21-es porton szolgáljon ki anonymous hozzáféréseket! A kiinduló mappa legyen az „FTP” könyvtáron belüli „21Anon”!Készíts egy „Download” és egy „Upload” könyvtárat a kiinduló mappán belül és biztosítsd, hogy feltölteni csak az „Upload” mappába tudjanak! Ellenőrizd a W10-es kliensről az FTP működését!
mkdir w:\FTP\21Anon
New-WebFtpSite -Name „FTP21Anon” -IPAddress „*” -Port 21
Set-ItemProperty „IIS:\Sites\FTP21Anon” -Name physicalPath -Value „w:\FTP\21Anon”
Set-ItemProperty „IIS:\Sites\FTP21Anon” -Name ftpServer.security.ssl.controlChannelPolicy -Value „SslAllow”
Set-ItemProperty „IIS:\Sites\FTP21Anon” -Name ftpServer.security.ssl.dataChannelPolicy -Value „SslAllow”
Set-ItemProperty „IIS:\Sites\FTP21Anon” -Name ftpServer.security.authentication.anonymousAuthentication.enabled -Value $true
icacls „w:\FTP\21Anon” /grant „IUSR:(OI)(CI)(RX)”
Add-WebConfiguration „/system.ftpServer/security/authorization” -Location FTP21Anon -PSPath IIS:\ -Value @{accessType=”Allow”;Users=”IUSR”;permissions=”Read”}
Set-ItemProperty „IIS:\Sites\FTP21Anon” -Name ftpServer.firewallSupport.externalIp4Address -Value „10.11.12.201”
Restart-WebItem -PSPath ‘IIS:\Sites\FTP21Anon’
mkdir w:\FTP\21Anon\Download
mkdir w:\FTP\21Anon\Upload
Add-WebConfiguration „/system.ftpServer/security/authorization” -Location FTP21Anon/Upload -PSPath IIS:\ -Value @{accessType=”Allow”;Users=”IUSR”;permissions=”Read,Write”}
Restart-WebItem -PSPath ‘IIS:\Sites\FTP21Anon’
Fájl és tartományi szolgáltatások
Install-WindowsFeature FS-FileServer
hozzon létre egy tetszőleges nevű weboldalt, a megjelenítendő tartalom pedig:
echo „XY” > C:\inetpub\marketingoldal\index.html
date >> C:\inetpub\marketingoldal\index.html
Hozz létre egy új FTP site-ot „FTP2100Tanarok” névvel, ami a 2100-es porton szolgáljon ki, de csak a „Tanarok” csoport tagjai részére, valamint legyen képes SSL-en keresztüli kiszolgálásra is! A kiinduló mappa legyen az „FTP” könyvtáron belüli „2100Tanarok”! Ellenőrizd a W10-es kliensről az FTP működését!
mkdir w:\FTP\2100Tanarok
New-WebFtpSite -Name „FTP2100Tanarok” -IPAddress „*” -Port 2100
Set-ItemProperty „IIS:\Sites\FTP2100Tanarok” -Name physicalPath -Value „w:\FTP\2100Tanarok”
Set-ItemProperty „IIS:\Sites\FTP2100Tanarok” -Name ftpServer.security.ssl.controlChannelPolicy -Value „SslAllow”
Set-ItemProperty „IIS:\Sites\FTP2100Tanarok” -Name ftpServer.security.ssl.dataChannelPolicy -Value „SslAllow”
Set-ItemProperty „IIS:\Sites\FTP2100Tanarok” -Name ftpServer.security.authentication.basicAuthentication.enabled -Value $true
icacls „w:\FTP\2100Tanarok” /grant „Tanarok:(OI)(CI)(F)”
Add-WebConfiguration „/system.ftpServer/security/authorization” -Location FTP2100Tanarok -PSPath IIS:\ -Value @{accessType=”Allow”;Roles=”Tanarok”;permissions=”Read,Write”}
Set-ItemProperty „IIS:\Sites\FTP2100Tanarok” -Name ftpServer.firewallSupport.externalIp4Address -Value „10.11.12.201”
New-NetFirewallRule -Name ‘FTP2100’ -DisplayName ‘FTP2100’ -Description ‘ftp 2100’ -Profile Any -Direction Inbound -Action Allow -Protocol TCP -LocalPort 2100 -Program Any -LocalAddress Any -RemoteAddress Any
NAT TELEPÍTÉS
Állítson be a szerveren NAT szolgáltatást, majd a kliensen módosítsa a hálózati beállításokat, hogy a szerver legyen az alapátjáró és ellenőrizze is, hogy a kliens eléri-e az internetet!
Megnézem mi a két kártya neve
ipconfig /all # Ethernet – külső, Ethernet 2 – belső
Install-WindowsFeature Routing -IncludeManagementTools
Install-RemoteAccess -VpnType RoutingOnly
netsh routing ip nat install
netsh routing ip nat add interface „Belső” (Ez itt a belső)
netsh routing ip nat add interface ‘Külső’ mode=full
kellhet :
Remove-NetIPAddress -InterfaceIndex 6 -AddressFamily IPv4 -IPAddress „10.40.50.1” -PrefixLength 24
New-NetIPAddress -InterfaceIndex 6 -AddressFamily IPv4 -IPAddress „10.40.50.1” -PrefixLength 24 -DefaultGateway „10.40.50.200”
ping 8.8.8.8
BELÉPÉSI KORLÁTOK
A DIAK2 felhasználó KIZÁRÓLAG munkanapokon 8-15 óra között léphet be a hálózatba.
Az információ bájttömbként kerül tárolásra – napi 3 bájt, 1 bit óránként, vasárnap kezd
Hétfőtől péntekig 8-15 óráig szeretnénk korlátozni a felhasználókat, ezért
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
S S S S S S S S V V V V V V V V V V V V V V V V
23 22 21 20 19 18 17 16 7 6 5 4 3 2 1 0 15 14 13 12 11 10 9 8
128,0,0 – szombat 23-0
64,0,0 – szombat 22-23
32,0,0 – szombat 21-22
31,0,0 – szombat 16-21
0,128,0 – vas 7-8
0,64,0 – vas 6-7
0,32,0 – vas 5-6
0,31,0 – vas 0-5
0,0,128 – vas 15-16
0,0,64 – vas 14-15
0,0,32 – vas 13-14
0,0,31 – vas 8-13
0,0,0,128 – vas 23-0
[byte[]]$hours = @(0,0,0,128,63,0,128,63,0,128,63,0,128,63,0,128,63,0,0,0,0)
[byte[]]$hours = @(0,0,0,0,0,127,0,0,127,0,0,127,0,0,127,0,0,127,0,0,0)
Get-ADUser -Identity DIAK2 | Set-ADUser -Replace @{logonhours = $hours}
Állítsa be, hogy dolgozók hétköznap, 6-21 óra között tudjanak csak belépni.
[byte[]]$hours = @(0,0,0,128,63,0,128,63,0,128,63,0,128,63,0,128,63,0,0,0,0)
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
S S S S S S S S V V V V V V V V V V V V V V V V
23 22 21 20 19 18 17 16 7 6 5 4 3 2 1 0 15 14 13 12 11 10 9 8
128,0,0 – szombat 23-0
64,0,0 – szombat 22-23
32,0,0 – szombat 21-22
31,0,0 – szombat 16-21
0,128,0 – vas 7-8
0,64,0 – vas 6-7
0,32,0 – vas 5-6
0,31,0 – vas 0-5
0,0,128 – vas 15-16
0,0,64 – vas 14-15
0,0,32 – vas 13-14
0,0,31 – vas 8-13
0,0,0,128 – vas 23-0
Hétfőtől péntekig 6-21 óráig szeretnénk korlátozni a felhasználókat,
[byte[]]$hours = @(0,0,0,0,192,255,31,192,255,31,192,255,31,192,255,31,192,255,31,0,0)
Get-ADUser -Filter ‘Name -like „*”‘ -SearchBase „OU=Biztosító,DC=MODULZARO,DC=LOCAL” | ForEach-Object { Set-ADUser -Identity $_.Name -Replace @{logonhours = $hours} }
Állítsa be, hogy dolgozók hétköznap, 8-22 óra között tudjanak csak belépni.
[byte[]]$hours = @(0,0,0,0,0,255,63,0,255,63,0,255,63,0,255,63,0,255,63,0,0)
Get-ADUser -Filter ‘Name -like „*”‘ -SearchBase „OU=Biztosító,DC=VIZSGA,DC=LOCAL” | ForEach-Object { Set-ADUser -Identity $_.Name -Replace @{logonhours = $hours} }
A DOLGOZO3 felhasználó KIZÁRÓLAG munkanapokon 8-16 óra között léphet be a hálózatba.
[byte[]]$hours = @(0,0,0,0,0,255,0,0,255,0,0,255,0,0,255,0,0,255,0,0,0)
Get-ADUser -Identity DOLGOZO3 | Set-ADUser -Replace @{logonhours = $hours}
AWS
Jelenítse meg a fiókban létrehozott virtuális gépeket!
aws ec2 describe-instances
Hozzon létre és indítson el egy új virtuális gépet, ami Ubuntu-t futtat és t2.micro hardver típusú! (Ubuntu2204Server: ami-08c40ec9ead489470, WS2022: ami-07a53499a088e4a8c, WS2019: ami-050d0a1abe93f4773) Biztosítsa, hogy a gép SSH-n és http protokollon keresztül is elérhető legyen!
aws ec2 create-security-group –group-name csk1 –description „csillagkapu” —> sg-0b7ed8664b3f66549
aws ec2 authorize-security-group-ingress –group-name csk1 –protocol tcp –port 22 –cidr 0.0.0.0/0
aws ec2 authorize-security-group-ingress –group-name csk1 –protocol tcp –port 80 –cidr 0.0.0.0/0
aws ec2 create-key-pair –key-name MyKeyPair
vagy inkább:
aws ec2 create-key-pair –key-name MyKeyPair –query ‘KeyMaterial’ –output text > .ssh/MyKeyPair.pem
aws ec2 run-instances –image-id ami-08c40ec9ead489470 –count 1 –instance-type t2.micro –key-name MyKeyPair –security-group-ids sg-0b7ed8664b3f66549 —> i-0d9cd6eabd6180844
Jelentkezzen be SSH-n keresztül, majd telepítse az Apache2 web szervert!
Publikus IP-hez kell kapcsolódni a shellből is!
aws ec2 describe-instances | grep Public —> 52.87.214.160
Pinghez:
aws ec2 authorize-security-group-ingress –group-name csk1 –protocol icmp –port all –cidr 0.0.0.0/0
ssh -l ubuntu -i .ssh/MyKeyPair.pem 52.87.214.160 –> hiba, kulcs jogok!
chmod 400 .ssh/MyKeyPair.pem
A MyKeyPair.pem fájl tartalmának másolása lokális .pem fájlba. Puttygen-el konvertálni .ppk-vá, majd ezt már oda lehet adni a putty-nak. ubuntu felhasználóval lehet belépni, majd
sudo -s
apt update
apt upgrade //hibára fut, neten a megoldás a következő parancs volt
apt –only-upgrade install grub-efi-amd64-signed
reboot
vagy kintrol
aws ec2 describe-instances|grep InstanceId
aws ec2 reboot-instances –instance-id i-0d9cd6eabd6180844
apt install apache2
ss -tlpnu
Ellenőrizze a virtuális gép alól is a web szolgáltatás működését, majd kijelentkezés után távoli gépről is ellenőrizze!
ss -tlpnu curl localhost curl http://54.196.61.12 w3m http://54.196.61.12
Hozzon létre és indítson el egy új virtuális gépet, ami Windows Server 2022-t futtat és t2.micro hardver típusú! (ami-07a53499a088e4a8c)! Biztosítsa, hogy a gép RDP-n és HTTP protokollon keresztül is elérhető legyen! Minden szükséges erőforrást hozzon létre
aws ec2 create-security-group –group-name vzsg –description „vizsgasg” –> sg-903004f8
aws ec2 authorize-security-group-ingress –group-name vzsg –protocol tcp –port
3389 –cidr 0.0.0.0/0
aws ec2 authorize-security-group-ingress –group-name vzsg –protocol tcp –port
80 –cidr 0.0.0.0/0
aws ec2 create-key-pair –key-name vzkp
aws ec2 run-instances –image-id ami-07a53499a088e4a8c –count 1 –instance-type t2.micro –key-name vzkp –security-group-ids sg-903004f8 –> i-05a459a7b99f71e4c
Jelentkezzen be RDP-n keresztül a létrehozott szerverbe, majd PS alól engedélyezze az ICMP Echo kéréseket és telepítsen Web szolgáltatást is, majd jelentkezzen ki!
mstsc /v:54.196.61.12:3389
vagy
Start-Process „$env:windir\system32\mstsc.exe” -ArgumentList „/v:54.196.61.12”
Enable-NetFirewallRule -Name „FPS-ICMP4-ERQ-In”
Install-WindowsFeature Web-Server -IncludeManagementTools
Ellenőrizze, hogy elérhető-e a szerver ICMP-vel!
ping 54.196.61.12
Állítsa le a létrehozott virtuális gépet!
aws ec2 describe-instances
A listából megkeresni a gépet és az instance id-t, kimásolni.
aws ec2 stop-instances –instance-id i-0d9cd6eabd6180844
bucket – vödör
Hozzon létre egy tárfiókot (fájlok tárolására szolgáló erőforrást) Xyvizsgavodre névvel!
aws s3 mb s3://vzvizsgavodre
Listázza ki a létező tárfiókokat!
aws s3 ls
Hozzon létre egy szöveges állományt XYvizsga.txt névvel, amiben helyezze el a nevét!
echo „Vinnai Zoltán” > vzvizsga.txt
Másolja fel a létrehozott fájlt a most létrehozott tárfiókba!
aws s3 cp vzvizsga.txt s3://vzvizsgavodre
Listázza ki a XYvizsgavodre tárfiók tartalmát!
aws s3 ls s3://vzvizsgavodre
Törölje le a tárfiókból a felmásolt txt állományt!
aws s3 rm s3://vzvizsgavodre/vzvizsga.txt
Törölje le a most létrehozott tárfiókot!
aws s3 rb s3://vzvizsgavodre
AZURE
Hozzon létre egy Azure-felhasználói csoportot Vizsga néven!
New-AzADGroup -DisplayName „Vizsga” -MailNickname „vizsga”
Hozzon létre egy Azure-felhasználót Vizsgázó néven tetszőleges adatokkal!
New-AzADUser -DisplayName „Vizsgázó” -Password (ConvertTo-SecureString -AsPlainText -Force „Password123”) -AccountEnabled $true -MailNickname „vizsgazo” -UserPrincipalName „vizsgazo@gwalakigmail.onmicrosoft.com”
A létrehozott Vizsgázó felhasználót tegye a Vizsga csoport tagjává
Add-AzADGroupMember -TargetGroupObjectId (Get-AzADGroup -DisplayName „Vizsga”).Id -MemberObjectId (Get-AzADUser -DisplayName „Vizsgázó”).Id
Listázza ki a csoport tagjainak névsorát egy Vizsga.txt nevű állományba, amelyet töltsön le az Azure-fiókból!
Get-AzADGroupMember -GroupDisplayName „Vizsga”| ForEach-Object displayname > vizsga.txt
Hozzon létre egy tenantot tetszőleges névvel
Csak grafikus felületen lehet! Azure Active Directory | Bérlők kezelése | Létrehozás
Hozzon létre egy cloud csoportot: CLOUDCSOPORT
New-AzADGroup -DisplayName „CLOUDCSOPORT” -MailNickname „CLOUDCSOPORT”
A csoportban vegyen fel 3 felhasználót (CLOUD1, CLOUD2, CLOUD3 névvel)
$juzerek=@(„CLOUD1”, „CLOUD2”, „CLOUD3”)
foreach ($u in $juzerek) {
New-AzADUser -DisplayName "$u" -Password (ConvertTo-SecureString -AsPlainText -Force "Password123") -AccountEnabled $true -MailNickname "$u" -UserPrincipalName "${u}@gwalakigmail.onmicrosoft.com"
Add-AzADGroupMember -TargetGroupObjectId (Get-AzADGroup -DisplayName "CLOUDCSOPORT").Id -MemberObjectId (Get-AzADUser -DisplayName "$u").Id
}
Hozzon létre még egy csoportot CLOUDCSOPORT2 névvel
New-AzADGroup -DisplayName „CLOUDCSOPORT2” -MailNickname „CLOUDCSOPORT2”
Start-Sleep 5
Rájött, hogy nincs szüksége a CLOUDCSOPORT2-re, ezért törölnie kell
(a cloudcsoport2 létrehozása és törlése között a programot várakoztassa 5 másodpercet!)
Remove-AzADGroup -DisplayName „CLOUDCSOPORT2”
Listázza ki a felhasználókat és csoportokat!
Get-AzADUser
Get-AzADGroup
HYPER-V
Vegyel fel a szerver rendszerébe 3 db 10Gb-os merevlemezt!
New-VHD -Path „d:\HyperV\Virtual Hard Disks\Raid1.vhdx” -SizeBytes 10GB
Get-VM
Stop-VM -Name WS2022_1 (Nálam access denied Administratorként)
Add-VMHardDiskDrive -VMName WS2022_1 -Path „d:\HyperV\Virtual Hard Disks\Raid1.vhdx”
Konfigurálj be RAID0-t! Az új egységen egyetlen maximális méretű partíciót készíts! Rögzítsd a partíció méretét! Helyezz el mappákat és fájlokat rajta, ellenőrizd az elérhetőségüket! Majd vedd ki a rendszerből az egyik 10Gb-os merevlemezt és ellenőrizd a fájlok elérhetőségét! A tapasztaltakat írd is le!
Get-Disk
Get-PhysicalDisk
Get-StoragePool
Get-PhysicalDisk -CanPool $true
Initialize-Disk 2
Initialize-Disk 3
Initialize-Disk 4
Csatlakoztass 2 db 1 GB-os merevlemezt RAID0-ban, a rendszerben „W:” meghajtóként jelenjen meg!
Get-PhysicalDisk -FriendlyName „Msft*”
$disks = Get-PhysicalDisk -FriendlyName „Msft*”
New-StoragePool -FriendlyName „RAID0” -StorageSubsystemFriendlyName „Windows Storage*” -PhysicalDisks $disks | New-VirtualDisk -FriendlyName „RAID0Disk” -NumberOfColumns 2 -ResiliencySettingName simple -UseMaximumSize | Initialize-Disk -PassThru | New-Partition -DriveLetter W -UseMaximumSize | Format-Volume
VIRTUALBOX
A szerver két hálózati interfésszel rendelkezzen, ahol az egyik interfészen legyen internet kapcsolata (DefaultSW illetve Bridge), míg a másik interfészen csak helyi kapcsolata lehessen (BelsoSW illetve Belső hálózat)! A kliens gép (Win10) interfésze csak a belső hálózathoz kapcsolódjon! (2 pont)
d:\Wutil\VirtualBox\VBoxManage.exe modifyvm WS2022 –nic1=hostonly –nic2=bridged
d:\Wutil\VirtualBox\VBoxManage.exe modifyvm Win10 –nic1=hostonly
Csatlakoztasson egy 10Gb-os merevlemezt a rendszerhez, majd inicializálja MBR- el, hozzon létre rajta egy elsődleges partíciót, formázza is meg, majd csatlakoztassa Z: meghajtóként a rendszerhez!
cd \wutil\virtualbox
.\VBoxManage createhd –filename d:\VBox\WS2022\WSPlusz.vdi –size 10000 –variant Standard
.\VBoxManage storageattach WS2022 –storagectl „SATA” –port 2 –device 0 –type hdd –medium d:\VBox\Ws2022\WSPlusz.vdi
Munkaállomás telepítése
- Telepítse fel a megadott ISO-állományból a VirtualBoxba a Windows 7 operációs rendszert a következő paraméterekkel
a. A virtuális operációs rendszer neve legyen WIN7, a felhasznált memória 1 GB, a tárterület 20 GB és egy hálózati kártyával rendelkezzen!
b. A felhasználó neve: vizsga, bejelentkezési jelszava: Password123
New-LocalUser -Name „vizsga” -Password (ConvertTo-SecureString -AsPlainText „Password123” -Force) -UserMayNotChangePassword
Add-LocalGroupMember -Group „Administrators” -Member „vizsga”
A Windows 7 egy hálózati kártyával rendelkezzen (belső csatoló), mely a DC-SERVER-en beállított DHCP-től kapja az IP címet, átjáró címét és a DNS szerver címét is!
Belső csatoló
Alapból DHCP-s, ha mégsem
ipconfig /all
Remove-NetIPAddress -IPAddress 192.168.56.10 -PrefixLength 24
Get-NetIPConfiguration
Set-NetIPInterface -InterfaceIndex 13 -Dhcp Enabled
Disable-NetAdapter -Name Ethernet
Enable-NetAdapter -Name Ethernet
A munkaállomást léptesse be a tartományba!
$credential = New-Object System.Management.Automation.PSCredential(„tanfolyam\Administrator”, (ConvertTo-SecureString -AsPlainText „Password123” -Force))
Add-Computer -ComputerName VBWin10 -DomainName „tanfolyam.com” -Credential $credential -Restart -Force
Get-ADComputer -Filter *
virtualbox parancssorbol
VirtualBox – https://www.virtualbox.org/manual/
VBoxManage list vms
VBoxManage list runningvms
VBoxManage list -l runningvms
VBoxManage list ostypes
VBoxManage createvm –name OracleLinux6Test –ostype Oracle_64 –register
VBoxManage showvminfo OracleLinux6Test
VBoxManage modifyvm OracleLinux6Test –cpus 2 –memory 2048 –vram 12
VBoxManage createhd –filename /path/to/hard_drive_image/OracleLinux6Test.vdi –size 5120
–variant Standard
VBoxManage storagectl OracleLinux6Test –name „SATA Controller” –add sata –bootable on
VBoxManage storageattach OracleLinux6Test –storagectl „SATA Controller”
–port 0 –device 0 –type hdd
–medium /path/to/hard_drive_image/OracleLinux6Test.vdi
VBoxManage storagectl OracleLinux6Test –name „IDE Controller” –add ide
VBoxManage storageattach OracleLinux6Test –storagectl „IDE Controller”
–port 0 –device 0 –type dvddrive –medium host:/dev/dvd
VBoxManage storageattach ol7 –storagectl „IDE Controller” –port 0 –device 0 –type dvddrive –medium ol7-r6-dvd.iso
VBoxManage startvm OracleLinux6Test
VBoxManage controlvm OracleLinux6Test acpipowerbutton
VBoxManage controlvm OracleLinux6Test poweroff
VBoxManage storageattach OracleLinux6Test –storagectl „IDE Controller”
–port 0 –device 0 –type dvddrive –medium none >
VBoxManage modifyvm OracleLinux6Test –vrde on
VBoxManage startvm OracleLinux6Test –type headless
Ubuntu telepites
VBoxManage createvm –name Ubi64 –ostype Ubuntu_64 –register
VBoxManage showvminfo Ubi64
VBoxManage modifyvm Ubi64 –cpus 1 –memory 1024
VBoxManage createhd –filename d:\VBox\Ubi64\Ubi64.vdi –size 51200 –variant Standard
VBoxManage storagectl Ubi64 –name „SATA Controller” –add sata –bootable on
VBoxManage storageattach Ubi64 –storagectl „SATA Controller” –port 0 –device 0 –type hdd –medium d:\VBox\Ubi64\Ubi64.vdi
VBoxManage storagectl Ubi64 –name „IDE Controller” –add ide
VBoxManage storageattach Ubi64 –storagectl „IDE Controller” –port 0 –device 0 –type dvddrive –medium e:\download\iso\ubuntu-22.04.3-live-server-amd64.iso
VBoxManage startvm Ubi64
VBoxManage modifyvm Ubi64 –nic1=bridged (none, hostonly, intnet, nat, natnetwork)
SQL
https://chat.openai.com/
Készítsen egy új adatbázist Vizsga3 néven!
create database Vizsga3;
kilistázza azoknak a moziknak a nevét és a városát, amelyeknél a mozi neve az „art” szórészletet tartalmazza! A felsorolás a városok neve szerint ábécérendben jelenjen meg! Az eredményt mentse Vizsga3A.txt néven!
select nev,varos from mozi
where nev like ‘%art%’
order by varos,nev
megadja azoknak a moziknak a nevét, ahol a filmet aznap a legtöbbször vetítik! Amennyiben több ilyen mozi is van, akkor elegendő csak egyet megjelenítenie. Az eredményt mentse Vizsga3B.txt néven!
select top 1 nev from eloadas,mozi
where moziid=id
group by nev
order by count(kezdes) DESC
Sorolja fel lekérdezés segítségével azoknak a moziknak a nevét, ahol ezen a napon többször vetítik a filmet magyar felirattal! Az eredményt mentse Vizsga3C.txt néven!
select nev from eloadas,mozi
where moziid=id and szinkron like ‘%felirat%’
group by nev
having count(kezdes)>1
a városonként a filmet vetítő mozikról és a mozik előadásainak darabszámáról! A listában a mozikat a névsorba rendezett városok szerint csoportosítva jelenítse meg! Az eredményt mentse Vizsga3D.txt néven!
select varos, nev, count(varos) from eloadas,mozi
where moziid=id
group by varos,nev
order by varos,nev
Készítsen lekérdezést, amely megadja, hogy mely évtől volt számhúzás minden héten, azaz évente legalább 52 alkalommal! Az eredményt mentse Vizsga4A.txt néven!
select top 1 ev from huzas
group by ev
having count(het)>=52
order by ev
Készítsen lekérdezést, amely megadja: mikor fordult elő, hogy az 1 és a 45 is a húzott számok között volt! Az évszámot és a hét sorszámát adja meg! Az eredményt mentse Vizsga4B.txt néven!
select ev, het from huzas,huzott
Where huzas.id = huzott.huzasid and (huzott.szam = ‘1’ or huzott.szam = ’45’)
group by ev,het
having count(szam)=2
order by ev, het
a XXI. század első évtizedében (2001. január 1. – 2010. december 31.) évente mennyit fizettek ki nyereményként! Az évszámot és a kifizetett összeget jelenítse meg! Az eredményt mentse Vizsga4C.txt néven!
SELECT huzas.ev, Sum(cast(nyeremeny.darab as float) * nyeremeny.ertek) AS osszeg
FROM huzas, nyeremeny
WHERE huzas.id = nyeremeny.id AND huzas.ev BETWEEN ‘2001’ AND ‘2010’
GROUP BY huzas.ev
Írassuk ki, hány mérkőzés maradt el visszalépés miatt! A számított mező neve „visszalepes” legyen!
SELECT count(id) AS visszalepes FROM merkozes
WHERE jatszma1 = -1 or jatszma2 = -1;
Jelenítse meg, hogy mikor került a legkorábbi és a legkésőbbi kezdéssel mérkőzés megrendezésre 8-ad döntőben! A számított mezők neve „legkorabban” valamint „legkesobben” legyen!
SELECT min(kezdes) AS legkorabban, max(kezdes) AS legkesobben
FROM merkozes
WHERE fordulo = ‘d8’;
SELECT
CONVERT(VARCHAR, MIN(kezdes), 8) AS legkorabban,
CONVERT(VARCHAR, MAX(kezdes), 8) AS legkesobben
FROM merkozes
WHERE fordulo = ‘d8’
Elő szokott fordulni, hogy egy tornán két azonos ország játékosa játszik egymás ellen. Mikor fordultak elő ilyenek a vizsgált időszakban? A mérkőzés dátumát, az ország rövidítését, és az egymás ellen játszó játékosok nevét jelenítse meg lekérdezéssel! A listát rendezze az országok kódja szerit ábécérendbe!
SELECT m.datum, j1.orszagKod, j1.nev AS ‘egyik jatekos’, j2.nev AS ‘masik jatekos’
FROM merkozes AS m, jatekos as j1, jatekos as j2
WHERE m.jatekos1Id=j1.id and m.jatekos2Id=j2.id and j1.orszagKod=j2.orszagKod
ORDER BY j1.orszagKod ASC;
az ország kódja mellett jelenítse meg az országból érkező játékosok számát! A listát rendezze úgy, hogy a legtöbb versenyzőt jegyző országgal kezdődjön! A számított mező neve „letszam” legyen!
SELECT orszagKod, count(id) AS letszam FROM jatekos
GROUP BY orszagKod
ORDER BY letszam DESC;
Készítsen statisztikát évszám szerinti bontásban, hány mérkőzést nyert az egyik játékos 2:0 arányban! A mezők címkéjét és a lista rendezettségét a minta szerint állítsa be!
SELECT YEAR(merkozes.datum) AS evszam, count(id) AS „2:0 vagy 0:2” FROM merkozes
WHERE ((jatszma1=2 AND jatszma2=0) OR (jatszma2=2 AND jatszma1=0))
GROUP BY YEAR(merkozes.datum)
ORDER BY evszam DESC;
A C1 elszámolási költségtípusnál csak 100 000 forint alatti tárgyi eszközöket lehet elszámolni! Listázza ki azon számlák minden adatát, amelyek ehhez a költségtípushoz tartoznak és meghaladták az értékhatárt!
SELECT * FROM szamla
WHERE koltsegtipusId=’C1′ and ertek>=100000;
Készítsen lekérdezést, amely kilistázza az A7 költségtípusnál elszámolt 5 legnagyobb értékű számla számlaszámát, keltezési dátumát és értékét!
SELECT top 5 szamlaszam, datum, ertek FROM szamla
WHERE koltsegtipusId=’A7′
ORDER BY ertek DESC
Készítsen lekérdezést, amely kilistázza, hogy az egyes költségtípusoknál mekkora összeget és hány számlát számoltak el eddig a pályázók! A számított mezők neve „elszamolt osszeg” és „szamlak szama” legyen! Az eredményt rendezze elszámolt összeg szerint csökkenő sorrendbe!
select megnevezes as ‘megnevezés’, sum(ertek) as ‘elszámolt összeg’, count(ertek) as ‘számlák száma’
from szamla as s, koltsegtipus as k
where s.koltsegtipusId=k.id
group by megnevezes
order by sum(ertek) desc
Pályázatonként listázza ki a pályázat azonosítóját, a pályázati keretösszeget és hogy a benyújtott számlák ennek hány százalékát teszik ki! A keretösszeg a két tervezet (tervezetA és tervezetC) összegeként határozható meg! A mezők neve „palyazat”, „keret” és „allapot” legyen!
SELECT palyazat.id AS palyazat, sum(palyazat.tervezetA+palyazat.tervezetC)/count(palyazat.id) AS keret,
sum(szamla.ertek)/(cast(sum(palyazat.tervezetA+palyazat.tervezetC) as float)/count(palyazat.id))*100 AS allapot
FROM palyazat, szamla
WHERE szamla.palyazatId=palyazat.id
GROUP BY palyazat.id;
SELECT
palyazat.id AS palyazat, tervezetA+tervezetC AS keret, cast(sum(szamla.ertek) as float)/(tervezetA+tervezetC)*100 AS allapot FROM palyazat, szamla
WHERE szamla.palyazatId=palyazat.id
GROUP BY palyazat.id, tervezetA, tervezetC
ORDER BY palyazat.id
select p.id as palyazat, (tervezetA+tervezetC) as keret, (sum(ertek)*1.0) / (tervezetA+tervezetC) * 100 as ‘allapot’
from palyazat as p, szamla as s
where s.palyazatId=p.id
group by p.id,tervezetA, tervezetC
order by p.id
(((( select cast(5.768455 as decimal(18,4) )))))
Jelenítse meg a szállásra költött havi összegeket és azt, hogy hány alkalomból adódott össze, de csak azokat, amelyeknél a havi összeg meghaladta a 120.000Ft-ot! Az eredményt az összes költség alapján csökkenően rendezze!
SELECT year(datum) as ‘év’,month(datum) as ‘hónap’, sum(ertek) as ‘összes költség’, count(ertek) as db–, ertek, megnevezes FROM szamla, koltsegtipus
WHERE szamla.koltsegtipusId=koltsegtipus.id and megnevezes=’Szállás’
GROUP BY year(datum),month(datum)
HAVING sum(ertek)>120000
ORDER BY sum(ertek) desc
Készítsen lekérdezést, amelynek segítségével kiíratja az 1000 Ft-nál drágább áruk nevét és árát!
SELECT nev, ar FROM aru WHERE ar > ‘1000’
Listázza ki lekérdezés segítségével az üdítőitalok nevét, árát, egységét és az eladott mennyiségét!
Select nev,egyseg, ar, mennyiseg From aru, eladas, kategoria
WHERE eladas.aru_kod = aru.aru_kod and kategoria.kat_kod = aru.kat_kod and kat_nev = ‘Üditőitalok’
Hány olyan áru van az adatbázisban, amelynek az egysége liter?
Select Count(egyseg) As ‘Összesen ennyi van’ From aru Where egyseg = ‘liter’
Készítsen lekérdezést, amely kiírja, hogy árunként mekkora volt a bevétel! A lista (áru név, bevétel) az áruk neve szerint növekvő sorrendben jelenjen meg!
SELECT nev,(cast(mennyiseg as int)*ar) as ‘bevétel’ FROM aru, eladas
Where aru.aru_kod = eladas.aru_kod
Order by aru.nev
Írassa ki, hogy kategóriánként hány fajta termék van az adatbázisban! A kategória nevét és a termékek számát adja meg a lekérdezés.
Select kategoria.kat_nev as „Kategória neve”, count(aru.nev) as „Termékek száma” From kategoria, aru
Where kategoria.kat_kod = aru.kat_kod
Group by aru.kat_kod, kategoria.kat_nev
Összesítse árukategóriánként a bevételt! A listában a kategória neve mellett a hozzátartozó bevétel értéke jelenjen meg!
Select kat_nev, sum(cast(ar as int)*mennyiseg) From kategoria, aru, eladas
Where kategoria.kat_kod = aru.kat_kod and eladas.aru_kod=aru.aru_kod
Group by kat_nev
Adja meg a legdrágább áruk nevét és árát!
Select ar, nev From aru
where ar=(select max(ar) from aru)
order by ar desc
Melyek azok az árukategóriák amelyekben van olyan áru, amely drágább, mint 1000 Ft?
Select kat_nev From aru, kategoria
Where aru.kat_kod = kategoria.kat_kod and ar > ‘1000’
group by kat_nev
Jelenítse meg, hogy a vizsgált időszakban hány C1-es színtű nyelvvizsgát szerveztek! A megjelenített név „C1 nyelvvizsgák száma” legyen!
SELECT count(nyelvid) as ‘C1 nyelvvizsgák száma’ FROM vizsgak
WHERE szint=’C1′
Készítsen lekérdezést, amely kilistázza a vizsgált negyedév jelentkezői közül a legidősebb és legfiatalabb jelentkezők (2018-ban betöltött) életkorát! A számított mezők neve „legfiatalabb” és „legidosebb” legyen!
SELECT min(2018-szulev) AS legfiatalabb, max(2018-szulev) AS legidosebb FROM jelentkezesek;
Listázza ki azoknak a vizsgázóknak a nevét és mobilszámát név szerint rendezve, akik a február 16.-i vizsgára jelentkeztek és a vezetéknevük „V” betűvel kezdődik!
SELECT nev, mobil FROM vizsgak,jelentkezesek
WHERE month(idopont)=2 and day(idopont)=16 and vizsgak.sorsz=jelentkezesek.vizsga and nev like ‘V%’
ORDER BY nev
Egy vizsgaidőpontra maximum 25 fő jelentkezését fogadják el! listázza ki azokat a vizsgaidőpontokat, ahol telt házas volt a vizsga! Az eredményt rendezze úgy, hogy a legrégebbi időponttal záruljon a lista!
SELECT idopont FROM vizsgak, jelentkezesek
WHERE vizsgak.sorsz = jelentkezesek.vizsga
GROUP BY idopont
HAVING count(nev)=25
ORDER BY idopont DESC;
Lekérdezéssel listázza ki nyelvenként és szintenként a negyedévben nyelvvizsgára jelentkezők számát! A számított mező neve „vizsgazo” legyen! A listát rendezze számított mező szerint csökkenő sorrendben!
SELECT nyelv, szint, count(nev) AS vizsgazo
FROM vizsgak INNER JOIN jelentkezesek ON vizsgak.sorsz = jelentkezesek.vizsga INNER JOIN nyelvek ON vizsgak.nyelvid=nyelvek.id
GROUP BY nyelv, szint
ORDER BY vizsgazo DESC
Jelenítse meg az informatika szakra 1. helyen jelentkezők számát, de csak azokét, akik nem nyelvi előkészítőre jelentkeztek! A megjelenített név „InfoDB” legyen!
SELECT count(hely) as ‘InfoDB’ FROM jelentkezesek
WHERE hely=1 and tag=4
Készítsen lekérdezést, amely kilistázza azon felvételizők nevét, akik maximális pontszámú központi felvételit írtak mindkét központi felvételi tárgyból, és a hozott pontjuk az általános iskolából legalább 40 pont! A listát a felvételizők neve szerint ábécé rendben jelenítse meg!
SELECT nev
FROM diakok
WHERE kpmagy=50 AND kpmat=50 AND hozott>=40
ORDER BY nev ASC;
Az iskola szeretné elkészíteni a jelentkezők előzetes rangsorát. listázza ki a felvételizők nevét, a jelentkezésben megjelölt ágazatot, a nyelvi előkészítő jelleget, a jelentkezés sorszámát és a felvételiző összesített pontszámát! A számított mező címkéje „osszpont” legyen! A listát rendezze az agazat mező szerint növekvő sorrendbe, azon belül pedig az osszpont mező szerint csökkenő sorrendbe! Ha a jelentkezők összpontszáma azonos, akkor pedig a hely mező szerint növekvő sorrendben jelenjenek meg a felvételizők adatai!
SELECT nev, agazat, nyek, hely, 2*hozott+kpmagy+kpmat AS osszpont
FROM diakok INNER JOIN jelentkezesek ON jelentkezesek.diak=diakok.oktazon INNER JOIN tagozatok ON tagozatok.akod=jelentkezesek.tag
ORDER BY agazat ASC, osszpont DESC, hely ASC;
Listázza ki ágazatonként, első helyen a Jószakma Szakgimnázium nyelvi előkészítő osztályába jelentkezők számát! A lekérdezésben jelenítse meg a jelentkezők hozott pontjainak terjedelmét is! (Terjedelem alatt a legtöbb és a legkevesebb hozott ponttal jelentkező pontszámkülönbségét értjük.) A számított mező címkéje „jelentkezoszam” és „terjedelem” legyen! A listát rendezze a jelentkezőszám szerint csökkenő sorrendbe!
SELECT agazat, count(diak) AS jelentkezoszam, max(hozott)-min(hozott) AS terjedelem
FROM diakok INNER JOIN jelentkezesek ON jelentkezesek.diak=diakok.oktazon INNER JOIN tagozatok ON tagozatok.akod=jelentkezesek.tag
WHERE hely=1 AND nyek=1
GROUP BY agazat
ORDER BY jelentkezoszam DESC;
Határozza meg ágazatonként az első helyen oda jelentkezők átlagos összesített pontszámát! A megjelenítés „ágazat” és „átlag” oszlopnevekkel történjen! A listát pontszám alapján csökkenően rendezze!
SELECT agazat as ‘ágazat’ , avg(2.0*hozott+kpmagy+kpmat) as ‘átlag’
FROM jelentkezesek,diakok, tagozatok
WHERE hely=1 and oktazon=diak and tag=akod
GROUP BY agazat
ORDER BY ‘átlag’ DESC
A 2015-ös versenynaptárból hivatalosan törölték a „Német Nagydíj”-at, ezért törölje a versenyek táblából ennek a futamnak a rekordját!
DELETE FROM versenyek
WHERE vnev = ‘Német Nagydíj’;
Az adatbázisban a „Brazil Nagydíj” esetén a helyszín neve hibásan szerepel. Javítsa a versenyek táblában a vonatkozó rekordban a hely mező értékét „Sao Paulo”-ra!)
UPDATE versenyek
SET hely = ‘Sao Paulo’
WHERE vnev = ‘Brazil Nagydíj’;
Készítsen lekérdezést, amely kilistázza a minta szerint annak a versenyzőnek a nevét és győzelmeinek számát, aki az évadban a legtöbbször nyert futamot! A számított mező címkéje „gyozelmek” legyen!
SELECT TOP 1 pnev, count(celpoz) AS gyozelmek
FROM eredmenyek INNER JOIN pilotak ON eredmenyek.pilota=pilotak.pazon
WHERE celpoz=1
GROUP BY pnev
ORDER BY count(celpoz) DESC
Az egyes nagydíjakon a versenyzők különböző távokon versenyeznek. Listázza ki versenyenként a nagydíj nevét és hogy hány kilométert tesznek meg a versenyzők (kor * hossz / 1000)! A számított mező címkéje „tav” legyen! A listát rendezze a tav mező szerint csökkenően!
SELECT vnev, cast(kor as float)*hossz/1000 AS tav FROM versenyek
ORDER BY tav DESC;
Készítsen lekérdezést, amely kilistázza a Forma-1 három legfiatalabb pilótájának a nevét, születési évét, csapatának nevét és az évadban elért legjobb helyezését! A legjobb helyezés oszlopának címkéje „legjobb” legyen! A listát rendezze a pilóták életkora szerint növekvő sorrendbe!
SELECT TOP 3 pilotak.pnev, pilotak.szev, csapatok.csnev, min(eredmenyek.celpoz) AS legjobb
FROM (pilotak INNER JOIN csapatok ON pilotak.csapat=csapatok.csazon) INNER JOIN eredmenyek ON eredmenyek.pilota=pilotak.pazon
GROUP BY pilotak.pazon, pilotak.pnev, pilotak.szev, csapatok.csnev
ORDER BY pilotak.szev DESC
Melyik kerületben a legnagyobb a lakosságszám? Az oszlop neve Kerület legyen!
SELECT top 1 kerulet_megnev AS ‘Kerület’ FROM keruletek
ORDER BY lak_szam DESC
Mennyien szavaztak országosan a természetvédőkre? Az eredmény oszlop neve legyen Összesen!
SELECT SUM(szav_szam) AS ‘Összesen’ FROM eredmenyek
WHERE part=’VTP’
A szavazásra jogosultak hány százaléka szavazott a liberális pártra? Az eredmény oszlop neve Százalék legyen!
SELECT CAST(SUM(szav_szam) AS float) / (SELECT SUM(jog_szam) FROM keruletek) * 100 AS ‘Százalék’
FROM eredmenyek
WHERE part=’VLP’
Készítsen lekérdezést, amiben a párt megnevezése (part_megnev) és az adott pártra szavazók összlétszáma jelenik meg, és a párt kódja (part_kod) szerint van emelkedő sorrendbe rendezve!
SELECT part_megnev AS ‘Párt’, SUM(szav_szam) AS ‘Szavazat’ FROM eredmenyek, partok
WHERE part=part_kod
GROUP BY part_kod, part_megnev
ORDER BY part_kod
Jelenítse meg azoknak a pártoknak a neveit és elért százalékos eredményeit, amelyek az összes szavazatok 15%-nál kevesebbet értek el! A lista a százalék szerint csökkenő sorrendbe legyen rendezve!
SELECT part_megnev AS ‘Párt’, CAST(SUM(szav_szam) AS FLOAT) / (SELECT SUM(szav_szam) FROM eredmenyek) * 100 AS ‘Százalék’ FROM eredmenyek, partok
WHERE part=part_kod
GROUP BY part_megnev
HAVING CAST(SUM(szav_szam) AS FLOAT) / (SELECT SUM(szav_szam) FROM eredmenyek) *100 <15
ORDER BY ‘Százalék’ DESC
powershell parancsok vegyesen
Powershell, Powershell ISE, Windows Terminal külön telepíthető
http://www.powershellkonyv.hu
dir, ls
dir /s
Get-Command
Get-Command -CommandType alias
Get-Alias
Get-Alias dir
cmd /c dir c:\
New-Alias -Name wh Value „write-host”
wh ggg
wh “ablak”
wh ‘ablak’
wh “ab”lak
””
Remove-Item Alias:wh
gin
Get-ComputerInfo
New-Item alma.txt
Get-Item alma.txt
Get-Item alma.txt | Get-Member
(Get-Item alma.txt).BaseName
Add-Content alma.txt “Blabla…”
Get-Content alma.txt (type alma.txt —> Get-Alias type)
(Get-Item alma.txt).Delete()
1+1
2*5
7-12
$a=5
$a
$b=3
$a*$b
$a.GetType()
$c.GetType()
$a+$c
$c+$a
$c.ToInt32($null) + $a
Help
Get-Help
Help echo
2023.04.20 – eddig
ISE
valami.ps1
./valami.ps1
Get-Process
Get-Process total*
(Get-Process total*).Kill()
Get-Service
Get-Service | Get-Member
| – csővezeték – pipeline
=========================================================
PSDrive, PSProvider
PSmeghajtó lett így a fájlrendszeren kívül a registry, a tanúsítványtár, de a függvényeinket és a környezeti és saját változóinkat is ilyen PSDrive -okon keresztül is megnézhetjük.
Ezekhez a különböző PSDrive-okhoz tartozik egy-egy provider (ami egy .NET alapú program), ami biztosítja az egységes felületet,
Get-PSDrive
dir hkcu:
Get-PSProvider
New-PSDrive -Name MSReg -PSProvider Registry -Root HKEY_CURRENT_USER\Software\Microsoft
Remove-PSDrive MSReg
New-PSDrive -name munka -PSProvider FileSystem -Root ‘C:\munka’
(Resolve-Path munka:\szöveg.txt).ProviderPath
notepad (Resolve-Path munka:\szöveg.txt).ProviderPath
New-PSDrive -Name P -PSProvider FileSystem -Scope Global -Root \dc2016
\PowerShell -Persist
A meghajtó neve csak egybetűs lehet, ami nem ütközhet már meglevő meghajtó betűjelével
A -Root és a -Persist csak hálózati megosztás lehet
Csak a Global PSDrive-ok lesznek ténylegesen állandóra létrehozva
A felcsatolt meghajtó csak azt létrehozó felhasználó számára lesz látható
New-PSDrive -Name X -PSProvider FileSystem -Scope Global “C:\XXX”
(Hiába Global, nem globál :P, adminként sem)
notepad.exe (Resolve-Path .\alma.tyt).ProviderPath
notepad.exe (get-item .\alma.tyt).FullName
Változók, konstansok
Értékadás
$valtozoneve = “érték”
$valtozoneve = “újérték”
Használat
echo $valtozoneve
$valtozoneve
Write-Host $valtozoneve
Write-Output $valtozoneve
echo “A változó értéke: $valtozoneve”
echo ‘A változó értéke: $valtozoneve’
echo “A változó értéke: $valtozoneve”
echo ‘A változó neve: $valtozoneve’,”A változó értéke: $valtozoneve”
echo „A változó neve: `$valtozoneve / A változó értéke: $valtozoneve”
echo „`$valtozoneve=$valtozoneve”
$sz=@”
első sör, : ) “ + “
második, ‘
“@
$o=(get-item .\alma.txt)
$o.GetType() → FileInfo
Érvényesség (Scope)
Hol érhető el? Csak az adott shellben, addig, amíg be nem zárjuk!
Egyéb változó kezelő parancsok
Get-Variable valtozoneve
Get-Variable $valtozoneve — az érték nevű változó adatait adná!
(Get-Variable valtozoneve).Name
(Get-Variable valtozoneve).Value
(Get-Variable valtozoneve).Visibility
(Get-Variable valtozoneve).GetType()
New-Variable -Name x -Value 33
$x
New-Variable -Name xx -Value 33 -Visibility Private → nem elérhető a shellből sem
Set-Variable -Name x -Value 55
$x
$a = get-alias a*
$a.GetType()
Clear-Variable a
$a
$a.GetType()
Remove-Variable x
$x
$x.GetType()
New-Variable -Name co -Option Constant -Value „Konstans”
$co
$co.Get-Type()
$co=”Új” —> hiba
$_ (Output és láncolás , ha nincs külön kimenet, akkor alapesetben a teljes objektum átadódik a következő parancsnak, amire $_ -al tudunk hivatkozni)
„szöveg” | ForEach-Object{$_.Length}
Változók jellemzői:
• név
• érték
• típus (szám, szöveg, object, …)
• hatókör (public, privát)
• láthatóság (locale, global)
• írhatóság (variable,constant, read-only)
• leírás (description)
Kifejezés / parancs üzemmód
Kifejezés üzemmódba vált a PowerShell, ha a beírt szöveg számmal (vagy egy pont karaktert követő számmal), idézőjelek közé tett karakterlánccal, vagy $ jellel kezdődik.
Parancs üzemmódba vált a PowerShell, ha a beírt szöveg bármilyen betűvel, a & karakterrel, egy pont utáni szóközzel, vagy pont utáni betűvel kezdődik.
A két üzemmód vegyes használatát zárójelezéssel érhetjük el, a zárójelek közötti szövegre minden esetben újra megtörténik az üzemmód meghatározása a fenti szempontok szerint.
2+2
Write-Host 2+2
Write-Host (2+2)
Formázás
Alapban is lehet formázva
Get-Service w*
Format-Table = ft
Format-List = fl
Get-Service w* | ft
Get-Service w* | Format-Table Name, Status, CanStop
Get-Service w* | Format-Table -GroupBy Status
HTML output
Get-Service w* | ft | ConvertTo-Html -Property Name,Status -Head “Szolgáltatások” > services.html
“a={0}, b={1}, a+b={2}” -f $a, $b, $a+$b 1.4.16 a könyvben
“Összesen: {0, 5} Ft” -f 1200
“Összesen: {0, 5} Ft” -f 10
„Ez most az óra: {0:hh}” -f (get-date)
Átirányítás: > ( < – linux)
Hozzáfűzés: >>
Beolvasás
$a=Read-Host “Írj be egy számot”
Adattípusok
Eddig: szám, szöveg, objektum, objektum lista
$a=12 → szám
$b=”alma” → szöveg
$c=Get-Location
$d=Get-Alias a*
[int] $f=34
$f=”asd” ->hiba
Számtípusok
• [int]
• [long]
• [double]
• [decimal]
0x1a -> 26
char – ‘m’
bool (0 v 1) [bool]$bl=0
$bl=10 >5 $bl=(10 >5) → kifejezések eredménye szokott lenni!
$bl=$true
$bl
Dátum, Idő
Get-Date
Set-Date
$d=[DateTime]::Parse(„2009. november 18.”)
$d
Get-Date -f yyMMdd_HHmmss
Tömbök – adatsorozatok, az elemek indexelhetőek
$szamtomb=1,2,3,4
$szovegtomb=”egy”,”ketto”,”harom”,”negy”
$vegyestomb=1,”ketto”,3,”negy”
$szamtomb ->külön sorban az elemek
$szamtomb.GetType() -> Object[]
$egyelemu=,”elem”
$urestomb=@()
$szamtomb.Count = .Length
$szamtomb.Rank (dimenzió)
$szamtomb[0] -> első elem
$szamtomb[1..2] -> 2. és 3. elem
1..10 🙂
$szamtomb[-1] -> végétől indul
$b = 1..100
$b[2..4 + 56..58]
$szamtomb += 5 (új elem, de a háttérben új tömbbe másolódik az előző, az eredmény azonos név)
$szamtomb | get-member
gm -InputObject $szamtomb
count, add, clear, indexof, insert, remove, removeat,
Többdimenziós tömbök
$tábla = (1,2,3,4),(„a”,”b”,”c”,”d”) — 2 dim: sorok, oszlopok – mátrix
$tábla[0][0] -> 1
$tábla[1][0] -> a
$igazi = new-object -TypeName ‘object[,]’ -ArgumentList 3,2
$igazi[2,1]=”kakukk”
Típusos tömbök
$t = New-Object int[] 20
$ttdt = New-Object ‘int[,]’ 5,2
$ttdt[0,0] = 12
Gyűjtemények(collections), listák
ArrayList
$intlist = New-Object System.Collections.ArrayList
$intlist.gettype() -> ArrayList
$intlist.Add(2)
$intlist |getmember
gm -InputObject $intlist
addrange, insertrange, removerange, reverse, sort, capacity
$scal = system.collections.arraylist
Sor (Queue)
$sor = [System.Collections.Queue] @()
Enqueue, Dequeue, Peek, ToArray
Verem (Stack)
$verem = [System.Collections.Stack] @()
Push, Pop, Peek, ToArray
Generic – paraméterezhető típusos tömb
$genlist = New-Object collections.generic.list[string]
get-member -i $genlist
Szótárak, hash tábla
$szotar = @{ Név = „Soós Tibor”; Cím = „Budapest”; „e-mail”=”soostibor@citromail.hu”}
$szotar
Összetartozó adatok = rekord, mezőkből áll, akár különböző típusok
Kulcs=Érték párokból áll
Az értékekre a kulcs nevével lehet hivatkozni!
$szotar[“Név”]
$szotar.Keys
$szotar.Values
Szótártömb
$névjegyek = New-Object system.collections.arraylist
$névjegyek.Add(@{Név=”Soós Tibor”;”e‑mail”=”soostibor@citromail.hu”;Cím=”Budapest”})
$névjegyek.Add(@{Név=”Fájdalom Csilla”;”e‑mail”=”fcs@citromail.hu”;Cím=”Zamárdi”})
$névjegek
Típuskonverzió
$a=12
$a
$a.GetType()
$b=[string]$a
$b
$b.GetType()
$c=”46”
$c
$c.GetType()
$d=[int]$c
$d
$d.GetType()
$sz=”Alma”
$cc=[char[]]$sz
$cc
$cc[0]
[int]$cc[0]
Operátorok
+, -, *, /, %, ++, — ($a=10, $b=$a++, $b, $c=++$a, $c)
+=, -=, *=, /=
Operátor
Leírás
Kis-nagybetű érzékeny operátor
Leírás
-eq
egyenlő
-ceq
egyenlő
-ne
nem egyenlő
-cne
nem egyenlő
-gt
nagyobb
-cgt
nagyobb
-ge
nagyobb egyenlő
-cge
nagyobb egyenlő
-lt
kisebb
-clt
kisebb
-le
kisebb egyenlő
-cle
kisebb egyenlő
1 -eq 1
1 -eq 2
“alma” -gt “korte”
“alma” -lt “korte”
Tartalmaz (-contains, -notcontains, -ccontains, -cnotcontains)
1,2,3,4,1,2,3,1,2 -contains 3
Van benne, nincs benne (-in, -notin, -cin, -cnotin)
Dzsóker 🙂 – *, ?, -like … -notlike …
„ablak” -like „[a-f]lak”
„ablak” -like „[a-f]?lak”
Logikai és bit (-not, -and, -or, -xor, -bnot, -band, -bor, -bxor, -shl, -shr) -not === !
(5 -eq 1) -and $true
(5 -gt 1) -and $true
0 -and 1
1 -and 1
12 -band 5 (1100 and 0101 —> 0100 = 4)
12 -and 5 0-tól eltérő az True
12 -shl 1
12 -shr 1
Típusvizsgálat (-is, -isnot)
“szam” -is [string] – “szam” -is [object] – “szam” -is [array]
Csoportosítás – (), $(), @(), {}, ${}
$a=12, ($a=22)
$($a =”ab”; $b=”lak”; $a+$b).length
$tömb = „egy”, @($tömb).length
$script = {$dátum = get-date; $dátum}, $script, $script.invoke()
${ilyen név nem lehetne} = 1
Tartomány ( .. )
1..5, 3..-2
Szöveges operátorok (-join, -split, -csplit)
„egy”, „kettő”, „három” -join „-„
-join („egy”, „kettő”, „három”)
„egy-kettő-három” -split „-„
‘1.2.3.4.5.6.7.8’ -split „.”, 3
Parancsok feltételes összefűzése (&& és ||)
Test-Path C:\Windows && Write-Host „Success”
remove-item C:\kakukk || Write-Host „Failure”
Vezérlési szerkezetek
Feltételes végrehajtás (if/then/else, ?:)
if($a -gt 10) {“Nagyobb, mint 10”}
if($a -gt 10) {“Nagyobb, mint 10”}else{“Kisebb egyenlő mint 10”}
if($a -gt 10) {“Nagyobb, mint 10”} elseif($a -eq 10) {“Pontosan 10”} else {“Kisebb mint 10”}
(Get-Command -CommandType alias | Where-Object {$_.Name -eq „wh”}).Length
?:
$true ? „Igaz” : „Hamis”
Esetszétválasztás (switch)
switch($a){ 1 {„egy”} 2 {„kettő”} 3 {„három”} 10 {„tíz”} default {„egyéb”}}
Ciklusok (for, foreach, while, do-while, do-until)
Menü: 1.7.5
do
{
Write-Host "========================================================="
Write-Host "0 - Folyamatok listázása"
Write-Host "1 - Szolgáltatások listázása"
Write-Host "2 - Folyamat indítása"
Write-Host "3 - Folyamat leállítása"
Write-Host "9 - Kilépés"
$v = Read-Host
Write-Host "========================================================="
switch ($v)
{
"0" {Get-Process}
"1" {Get-Service}
"2" {&(Read-Host "Folyamat neve")}
"3" {Stop-Process -name (&Read-Host "Folyamat neve")}
"9" {break}
default {Write-Host "Érvénytelen billentyű!";break }
}
} while ($v -ne „9”)
Véletlenszám gen
Get-Random
Get-Random 100
Get-Random -Minimum 50 -Maximum 100
5..15 | Get-Random -Count 3
„Aladár”, „Bence”, „Csaba”, „Dénes”, „Ferenc”, „Hugó”, „István” | Get-Random -Count 3
Függvények
function függvény1 {„első”}
függvény1
———————————————-
function körterület ($sugár)
{
$sugár*$sugár*[math]::Pi
}
körterület 12
———————————————-
function üdvözlet ($név = „Tibi”) {“üdv $nev” }
üdvözlet
üdvözlet(“Pisti”)
———————————————-
function körterület ([double] $sugár)
{
$sugár*$sugár*[math]::Pi
}
———————————————-
$a=1
„a=$a”
function fv1($par=2)
{
"fv1 - a=$a"
"fv1 - par=$par"
$b=$par+1
"fv1 - b=$b"
}
fv1
„b=$b”
„par=$par”
fv1(4)
„b=$b”
„par=$par”
———————————————-
function fv1($p1, $p2=3)
{
„p1=$p1”
„p2=$p2”
}
fv1
fv1(4)
fv1 5 6
———————————————-
function fv2 ($par1, [ref]$par2)
{
$par1++
$par2.Value++
„par1=$par1”
Write-Host(„par2={0}” -f $par2.Value)
}
$a=10
$b=20
fv2 $a ([ref]$b)
„a=$a”
„b=$b”
———————————————-
function fv5 ($par1, $par2)
{
return ($par1+$par2)
}
$c=fv5 11 22
$c
$c.gettype()
Kiírás fájlba
10..20 > adatok.txt
30..50 >> adatok.txt
$file=”adatok.txt”
$sorok=”Első sor”, „Második sor”
Set-Content -Path $file -Value $sorok
Add-Content -Path $file -Value „Harmadik sor”
Get-ChildItem | Out-File c:\dir.txt #1.8.13
Beolvasás fájlból
$file=”adatok.txt”
$sorok=Get-Content $file
$sorok
$sorok.GetType()
$sorok[1]
$sorok[1].GetType()
Táblázatok kezelése (import, export, convertfrom, convertto)
Excel 2016 export CSV – Adatok.csv
Get-Content Adatok.csv
Import-Csv .\Adatok.csv -Encoding Default
Get-Content .\Adatok.csv | ConvertFrom-Csv -Delimiter „;”
Import-Csv .\Adatok.csv -Encoding Default -Delimiter „;”
Get-Process -Name A* > proclist.txt
Get-Process -Name A* | ConvertTo-Csv -Delimiter “;” > proclist.csv
Get-Process -Name A* | Export-Csv -Delimiter „;” proclist2.csv
Változók láthatósága 1.6.4
get-variable a -scope 0 #0 -local, 1-szülő, 2-nagyszülő
$a=”valami”
function fv3{$a=”másvalami”;$a; (get-variable a -scope 1).value; set-variable a -scope 1 -value „változás”}
$c=1
function kie{$c=2; „Én c-m:$local:c”;”Te c-d:$global:c”}
kie
Hibakezelés 2.4
terminating, nonterminating error
„Eleje”; 15/0; „Vége”
„Eleje”; throw „kakukk”; „Vége”
„Eleje”; get-content blabla.txt -ErrorAction SilentlyContinue; „Vége”
$error[0]
function deletefile ($path){
try {remove-item -Path $path -ErrorAction Stop}
catch {
"Nincs ilyen fájl!"
return -1
}
finally {"Itt a vég!"}
"Ez a normális vég"
}
Remove-Item nemlétezőfájl.txt 2> $null
filter bulk-remove
{
if (-not (Test-Path $_))
{ Write-Warning "Nincs ilyen file: $_!" }
else
{ Remove-Item $_ }
}
„nincs.txt”, „file.txt” | bulk-remove
filter bulk-remove
{
remove-item $_ -ErrorAction silentlycontinue
if (!$?)
{ $Error[0].categoryinfo.reason}
}
Futtatás háttérben és távol 1.11
Get-Command -noun job
Get-Job, Start-Job, Stop-Job, Wait-Job, Receive-Job, Remove-Job, Suspend-Job
start-job -ScriptBlock { for($i=0; $i -lt 60; $i++){$i; Start-Sleep -Seconds 1}}
Enable-PSRemoting
Enable-PSRemoting -force
New-PSSession -ComputerName dc, member
New-PSSession -ComputerName server -Credential VZ\Administrator
New-PSSession -ComputerName 192.168.56.200 -Credential VZ\Administrator
Invoke-Command -Session (Get-PSSession) -ScriptBlock {get-service g*}
Enter-PSSession 1
Exit-PSSession
Disconnect-PSSession 2
Remove-PSSession 2
Környezeti változók (env: PSDrive) 2.1.5
CMD-ben: echo %USERNAME%
cd env:
dir
$env:USERNAME
(Get-Item USERNAME).Value
Szűrők 1.8
ForEach-Object 1.5.5
1,2,3 | ForEach-Object {$_ * 3}
1,2,3 | ForEach-Object {“-eleje-”} {$_ * 3} { “-vége-”}
get-date; 10..1|ForEach-Object -Parallel {Start-Sleep $_; Write-Host $_}; Get-Date
7.0-tól van csak -Paralell
Where-Object 1.5.6
$tömb = 1,2,”szöveg”, 3
$tömb | Where-Object {$_ -is [int]} | ForEach-Object {$_*2}
Get-Process | Where-Object -Property Ws -GE 130mb
Get-Process | Where WS -ge 130mb
Sort-Object 1.8.3
3,32,1,6,24 | Sort-Object
3,32,1,6,24 | Sort-Object -Descending
get-process | sort-object -property workingset -Descending
Get-ChildItem C:\Windows -File | Sort-Object -Property extension, name
Get-ChildItem . | Sort-Object -Property {$_.name.length}
Select-Object 1.8.5
Format-Table, Format-Wide 1.8.6
Out-String 1.8.16
Group-Object 1.8.4
Compare-Object 1.8.7
Measure-Object 1.8.8
Tee-Object 1.8.9
Server Core-n nincs ISE, nem is telepíthető!!!
De van lehetőség Remote ISE-re!
http://mctexpert.blogspot.com/2015/08/can-you-add-powershell-ise-to-server.html
De tűzfal nem engedi távolról, csak helyi hálón!
“ Alapértelmezés szerint a Rendszerfelügyeleti webszolgáltatások tűzfalkivétele a
nyilvános profilok esetében ugyanazon helyi alhálózaton található távoli számítógépekre korlátozza a hozzáférést.”
AWS-en engedni az 5985/TCP portot
Enable-PSRemoting
Enable-PSRemoting -Force
Set-NetFirewallRule -Name „WINRM-HTTP-In-TCP-PUBLIC” -RemoteAddress Any
2019-en intellisence is megy, a 2022-n is megy! 🙁 Várni kell, lassan éled! Illetve kapcsolgatni kell! Picit lassúúúúúúúúúúúúúúú 🙁
Rendszerkezelési lehetőségek
Számítógép kezelés 2.10
Get-Command *-computer
Restart-Computer / Restart-Computer -Force
Stop-Computer / Stop-Computer -ComputerName member (Távoli gép leállítása)
Rename-Computer -NewName azújnév -Force
Add-Computer -WorkGroupName WG (Munkacsoport beáll.)
$cred = new-object -typename System.Management.Automation.PSCredential -argumentlist r2\administrator”, ( Convertto-SecureString ‘Password123’ -force -asplaintext) (Tartományba léptetés)
Test-Connection member / Test-Connection member -Quiet (Kapcsolat ell.)
Test-ComputerSecureChannel -Server member (Tartományi komm. ell.)
Processzek kezelése 2.15
Get-Command *-process
Start-Process notepad.exe
Start-Process notepad.exe -ArgumentList C:\fájl.txt -PassThru
A -PassThru paraméterrel visszakapjuk az elindított processz adatait.
stop-process -name „notepad”
Invoke-Command -ComputerName member -ScriptBlock {start-process notepad} (Távoli gépen háttérben)
(Get-WmiObject -Class Win32_process -Filter „Name = ‘notepad.exe'”).getowner().user (Ki indította)
(Get-Process notepad).CloseMainWindow() (Szelíd leállás)
(Get-Process notepad).Kill() (Get-Process notepad).Close() (Erőszakos leállítás)
whoami /priv
Start-Process -FilePath notepad -Verb runas (Futtatás emelt jogokkal – -Verb)
Szolgáltatások kezelése 2.15.3
Get-Command *-service
get-service | where-object {$_.CanStop}
get-service | where-object {$_.CanStop} | Stop-Service
get-service audiosrv | get-member -MemberType properties
$service=[WMI] „Win32_Service.Name="Alerter
„” – hiba
$service.StartMode
get-help Set-Service
Set-Service -Name „SERVICE-NAME” -Status stopped -StartupType disabled
New-Service -Name „YourServiceName” -BinaryPathName .exe
Szerveren
Install-WindowsFeature …
Remove-WindowsFeature …
Registry 2.8
New-PSDrive -Name Uninstall -PSProvider Registry -Root HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall
cd Uninstall:
Get-ItemProperty 7-Zip
New-ItemProperty . -Name DumpsterAlwaysOn -Value 1 -type DWORD
Set-ItemProperty . -Name DumpsterAlwaysOn -Value 0
New-Item Valami
Fájlkezelés 2.6
Get-Location
(Get-Location).GetType() — PathInfo
(Get-Location).ToString()
pwd
Get-Alias pwd -> Get-Location
Get-Item .
Get-Item ..
(Get-Item .).GetType() — DirectoryInfo
(Get-Item .).GetType() | gm
(Get-Item .).Name
(Get-Item .).FullName
Get-Alias dir -> Get-ChildItem
Get-ChildItem
Get-ChildItem -Force (Rejtetteket is)
Get-ChildItem -Directory
Get-ChildItem -File
Get-ChildItem -Attributes “h”
Get-ChildItem -Filter *.txt
Get-ChildItem C:\PSKönyv -Exclude *.txt -Recurse -Attributes !directory
New-Item -Path . -Name szöveg.txt -type file -Value „Ez egy szöveg”
New-Item -Path . -Name „Alkönyvtár” -type Directory
New-Item uresfile
New-Item -ItemType Directory ujmappa
Test-Path ujmappa
Test-Path uresfile
Test-Path C:\scripts\ -OlderThan 2016.01.01
(Get-Item C:\scripts\alice.txt).attributes = „Archive, hidden”
Copy-Item C:\PowerShell\20150923* -Destination C:\PowerShell\másolat\
Get-Command *-Item
Move-Item
Rename-Item
Remove-Item
Jogosultságok kezelése – ACL 2.6.11
Get-Command *-acl
Get-Acl
Get-Acl | fl
Set-Acl —> FELEJTŐS!!!! Megoldás icacls!
icacls . #nem powershell!
Aktuális jogok:
icacls mappa
Öröklés tiltása:
icacls mappa /inheritancelevel:d
Users csoport törlése:
icaclsmappa/remove:g:d Users /t
Subfolder and files only Full:
icacls mappa /grant „csoport:(OI)(CI)(IO)(F)”
This folder RX,W:
icacls mappa /grant „csoport:(RX,W)”
Csak olvasási jog
icacls mappa /grant „masikcsoport:(OI)(CI)(RX)
Írási jog
icacls mappa /grant „harmadikcsoport:(OI)(CI)(RX,W)
Lokális felhasználók és csoportok 2.22
Get-Command -Local
Get-LocalUser
Get-LocalGroup
New-LocalUser -Name „felhasználóneve”-Password (ConvertTo-SecureString -AsPlainText `
„Password123” -Force) `
-PasswordNeverExpires `
-AccountNeverExpires `
-UserMayNotChangePassword
New-LocalGroup “Újcsoport”
Add-LocalGroupMember -Group „Újcsoport” -Member „felhaszn1”, “felhaszn2”
Get-LocalGroupMember -Group „Újcsoport”
Megosztások
Get-ChildItem \asus\powershell
Get-Command share Get-Command -Smb
Get-SmbShare
New-SmbShare -Name „megosztásneve” -Path „mappa” -FullAccess „Everyone”
New-SmbMapping -LocalPath ‘S:’ -RemotePath ‘\ServerCoreGyak\12A’
New-SmbMapping -LocalPath ‘K:’ -RemotePath ‘\ServerCoreGyak\Kozos’ -Persistent
Get-SmbMapping
net #nem powershell!
net share #nem powershell!
net
Hálózati beállítások
Get-NetAdapter
Get-NetIPInterface
Get-NetIPAddress
Get-NetIPInterface -AddressFamily IPv4
Set-NetIPInterface -InterfaceIndex 6 -Dhcp Disabled
New-NetIPAddress -InterfaceIndex 6 -AddressFamily IPv4 -IPAddress „192.168.0.110” -PrefixLength 24 -DefaultGateway „192.168.0.254”
Set-DnsClientServerAddress -InterfaceIndex 6 -ServerAddresses „8.8.8.8” -PassThru
Remove-NetIPAddress -Confirm -DefaultGateway 192.168.111.254 -IPAddress 192.168.111.200 -PassThru
Get-NetAdapterBinding | Where-Object ComponentID -EQ ‘ms_tcpip6’
Disable-NetAdapterBinding -Name ‘Ethernet’ -ComponentID ‘ms_tcpip6’ #IPv6 tiltás
ipconfig /all #nem powershell!
Tűzfal
Get-Command -NetFirewall
Get-NetFirewallRule
Get-NetFirewallRule -DisplayName „ICMPv4„
Get-NetFirewallRule -Name „FPS-ICMP4-ERQ-In”
Enable-NetFirewallRule -Name „FPS-ICMP4-ERQ-In” #ping engedélyezés
New-NetFirewallRule -Name ‘ICMPv4’ -DisplayName ‘ICMPv4’ -Description ‘Allow ICMPv4’ -Profile Any -Direction Inbound -Action Allow -Protocol ICMPv4 -Program Any -LocalAddress Any -RemoteAddress Any
Enable-NetFirewallRule -Name ‘ICMPv4’
DHCP
Install-WindowsFeature DHCP –IncludeManagementTools
Restart-Computer –Force
Get-Command -DhcpServer
Add-DhcpServerv4Scope -Name „Internal Network” `
-StartRange 192.168.20.71 -EndRange 192.168.20.90 `
-SubnetMask 255.255.255.0 `
-LeaseDuration 0.08:00:00 `
-State Active `
-PassThru
Set-DhcpServerv4OptionValue -ScopeId 192.168.20.0 `
-DnsServer 192.168.20.1,192.168.20.2 `
-Router 192.168.20.254 `
-DnsDomain ‘test.com’
Set-DhcpServerv4Reservation -IPAddress 192.168.111.10 -ClientId 08-00-27-F1-73-59 -Name W10
Restart-Service DHCPServer
Get-DhcpServerv4Scope
Get-DhcpServerv4Reservation 192.168.111.0 //a 192.168.111.0 a scope id
Get-DhcpServerv4Binding
Get-DhcpServerv4DnsSetting
Get-DhcpServerv4Lease 192.168.111.0
DNS
Install-WindowsFeature DNS –IncludeManagementTools
Restart-Computer –Force
Get-Command -DnsServer
Add-DnsServerPrimaryZone -Name „tartománynév” -ZoneFile „tartománynév.dns” -DynamicUpdate None –PassThru
Add-DnsServerPrimaryZone -NetworkID 192.168.111.0/24 -ZoneFile „111.168.192.in-addr.arpa.dns” -DynamicUpdate None -PassThru
Remove-DnsServerZone „tartománynév.nev” –PassThru
Get-DnsServerZone
Add-DnsServerResourceRecordA -Name „rx-8” -ZoneName „srv.world” -IPv4Address „10.0.0.110” -TimeToLive 01:00:00 -CreatePtr -PassThru
Add-DnsServerResourceRecordCName -Name „fd3s” -HostNameAlias „rx-7.srv.world” -ZoneName „srv.world” -PassThru
Get-DnsServerResourceRecord -ZoneName „srv.world” | Format-Table -AutoSize -Wrap
Add-DnsServerForwarder -IPAddress 10.0.0.10 -PassThru
Web
Install-WindowsFeature Web-Server -IncludeManagementTools
Get-Command -WebSite
Stop-Website ‘Default Web site’
New-WebSite -Name „NewSite” -Port 20080 -HostHeader „RX-8.srv.world” -PhysicalPath „C:\inetpub\newsite”
NAT
Rename-NetAdapter -Name „Ethernet” -NewName „Belso”
Install-WindowsFeature Routing -IncludeManagementTools
Install-RemoteAccess -VpnType RoutingOnly
netsh routing ip nat install
netsh routing ip nat add interface InterfaceNeve (Ez itt a belső)
netsh routing ip nat add interface ‘InterfaceNeve’ mode=full
AD 2.19
Install-WindowsFeature -name AD-Domain-Services –IncludeManagementTools
Restart-Computer –Force
Install-ADDSForest -DomainName „domain.neved ” -ForestMode WinThreshold -DomainMode WinThreshold -DomainNetbiosName FD3S01 -SafeModeAdministratorPassword (ConvertTo-SecureString -AsPlainText „Password123” -Force) -InstallDNS
Get-ADDomain -Server SzerverNeve
Get-ADDomainController -Server SzerverNeve
Get-ADForest -Server SzerverNeve
Get-ADUser -Filter *
Get-ADGroup -Filter *
Get-ADOrganizationalUnit -Filter *
New-ADOrganizationalUnit -Name valami
New-ADOrganizationalUnit -Name alvalami -Path OU=VALAMI,DC=XY,DC=LOCAL”
New-ADGroup -GroupScope Global -Name csoport -Path „OU=ALVALAMI,OU=VALAMI,DC=XY,DC=LOCAL”
New-ADUser -Name valaki -AccountPassword (ConvertTo-SecureString -AsPlainText „Password123” -Force) -Path „OU=ALVALAMI,OU=VALAMI,DC=XY,DC=LOCAL”
Add-ADGroupMember -Identity csoport -Members valaki
Felhasználók .csv fájlból: 2.19.3
GPO 2.23
Windows Update
Install-Module PSWindowsUpdate
Get-WindowsUpdate
Install-WindowsUpdate
Get-WindowsUpdate -AcceptAll -Install -AutoReboot
Azure
Tulajdonos weboldalon mindent csinálhat, de powershellben nem.
Weben új felhasználó felvétele, szerepkörét tekintve Globális rendszergazda -> weben dolgozhat.
Azure előfizetésnél (Subscription) a felvett felhasználót classic administrátorhoz is hozzá kell tenni, ekkor tud erőforrásokkal dolgozni és ekkor tudja a get-azsubscription-al lekérdezni az előfizetési infókat!
Get-AzSubscription
Set-AzContext -Subscription „Azure-előfizetés 1”
Nem kizárt, hogy ezt csak akkor kell elvégezni, ha az ingyenes hozzáférésről váltottunk fizetősre!
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser
Install-Module -Name Az -Scope CurrentUser -Repository PSGallery -Force (Online és Adminként)
Get-Module
Uninstall-Module -Name Az
Connect-AzAccount (Online – böngésző)
Disconnect-AzAccount (egymás után kétszer kell futtatni – csak másodikra megy)
Get-AzContext
Get-AzTenant
$tenantId = (Get-AzContext).Tenant.Id
Get-AzADUser
Get-AzADUser -DisplayName „Walaki” |fl
Get-AzADGroup
New-AzADUser -DisplayName „Új felhasználó” -Password (ConvertTo-SecureString -AsPlainText -Force „Password123”) -AccountEnabled $true -MailNickname „ujfelh” -UserPrincipalName „ujfelh@gwalakigmail.onmicrosoft.com”
Update-AzADUser -UPNOrObjectId $upn -City $city
New-AzADGroup -DisplayName „Új csoport” -MailNickname „ujcsop”
Update-AzADGroup -ObjectId $objectid -Description $description
Add-AzADGroupMember -TargetGroupObjectId (Get-AzADGroup -DisplayName „Új csoport”).Id -MemberObjectId (Get-AzADUser -DisplayName „Új felhasználó”).Id
Get-AzADGroupMember -GroupDisplayName „Új csoport”
Remove-AzADGroupMember -GroupDisplayName „Új csoport” -MemberObjectId (Get-AzADUser -DisplayName „Új felhasználó”).Id
Remove-AzADGroup -DisplayName „Új csoport”
Get-AzResourceGroup
Get-AzLocation
New-AzResourceGroup -Name „ujfelh-rg” -Location „North Europe”
Remove-AzResourceGroup -Name „ujfelh-rg” -Force
New-AzStorageAccount -ResourceGroupName „ujfelh-rg” -Name „ujfelhsa” -Location „North Europe” -SkuName Standard_RAGRS -Kind StorageV2
Remove-AzStorageAccount -Name „ujfelhsa” -ResourceGroupName „ujfelh-rg” -Force
Get-AzStorageAccount
$ctx = New-AzStorageContext -StorageAccountName -UseConnectedAccount
New-AzStorageContainer -Name $containerName -Context $ctx
Get-AzStorageContainer -Name $containerName
…
Remove-AzStorageContainer -Name $containerName -Context $ctx
$path = „C:\temp\”
$containerName = „myContainer”
$filename = „demo-file.txt”
$imageFiles = $path + „*.png”
$file = $path + $filename
Set-AzStorageBlobContent -File $file -Container $containerName -Context $ctx
Get-AzStorageBlob -Container $namedContainer -Context $ctx
Get-AzStorageBlobContent -Container $containerName -Blob $blobName -Destination $path -Context $ctx
Copy-AzStorageBlob -SrcContainer „photos” `
-SrcBlob $blobname -DestContainer "archive" `
-DestBlob $("photos/$blobname") -Context $ctx
Create VM
$vmParams = @{
ResourceGroupName = ‘TutorialResources’
Name = ‘TutorialVM1’
Location = ‘eastus’
ImageName = ‘Win2016Datacenter’
PublicIpAddressName = ‘tutorialPublicIp’
Credential = $cred
OpenPorts = 3389
Size = ‘Standard_D2s_v3’
}
$newVM1 = New-AzVM @vmParams
Get-AzVM -ResourceGroupName „ResourceGroup11” -Name „VirtualMachine07”
Stop-AzVM -ResourceGroupName „ResourceGroup11” -Name „VirtualMachine07”
Start-AzVM -ResourceGroupName „ResourceGroup11” -Name „VirtualMachine07”
Restart-AzVM -ResourceGroupName „ResourceGroup11” -Name „VirtualMachine07”
Remove-AzVM -ResourceGroupName „ResourceGroup11” -Name „VirtualMachine07”