PowerShell Ile Gelismis Fonksiyonlara Bir Ornek (Begin, Process, End)

Fonksiyonlar super faydali dostlarimiz. Onlar sayesinde defalarca calistirmamiz gereken komutlari ve scriptleri nezaman istersek o zaman bir butun olarak ve otomatik sekilde calistirabiliriz. Bir baska deyisle PowerShell’e onceden bir fonksiyon tanimlayip daha sonra ne zaman istersek cagirabiliriz. Bu sayede bir dizi komut ya da script’I her defasinda yasmak ya da calistirmak zorunda kalmayiz. PowerShell’e daha onceden tanittigimiz fonksiyonun ismini cagirmamiz yeterli. Gerisi PowerShell’de.
Fonksiyon konusunu farkli zamanlara farkli orneklere ele aliyorum fakat yine de burada minik de olsa bir aciklama yapmak istedim.
Simdi gelelim bu asagidaki basit fonksiyona. Bu fonksiyon digerlerine gore biraz farkli. Zira Parametre bolumunde “(ValueFromPipeline)” seklinde bir ifade var. Bu ifade, pipeline icinden gelen bir input oldugunda bunun $sayi adli degiskeni doldurmak icin kullanilacagini gosteriyor. Fonksiyon icindeki 3 bolum ise fonksiyonun hangi bolumunun ne sekilde calisitirilacagini gosteriyor.
Begin: Baslangicta hazirlik maksatli olarak 1 kere calisitirilir. Burada bir “trick” var, bakalim bulabilecek misiniz!
Process: Fonksiyon birden cok kere calisitirildiginda her seferinde alinacak aksiyonlari barindirir.
End: Tum islemler bittiginde son olarak 1 kere calisitirilir.
Bunu, ayni fonksiyonu iki farkli sekilde kullanarak test edelim simdi.
[crayon]
function test1{
[CmdletBinding()]
Param
(
[Parameter(ValueFromPipeline)]
[int[]]$sayi
)
BEGIN{
Write-Host “basla – sayi: $sayi” -ForegroundColor Red
}PROCESS{
Write-Host “islem – sayi: $sayi” -ForegroundColor Green
}END{
Write-Host “bitir – sayi: $sayi” -ForegroundColor Red
}
}
[/crayon]
Ilk olarak parametreyi kendimiz el ile verelim ve bakalim sonuc nasil oluyor. Bu, normal bir fonksiyonu calistirdigimiz yontem aslinda.

Goruldugu gibi fonksiyona parameter olarak verdigim 1 sayisi fonksiyonun tum bolumlerinde yerini aldi.
Simdi ayni fonksiyonu pipeline icinden gelen sayilarla besliyorum. Bu ornekte fonksiyon icindeki “sayi” parametresinin degeri once 1 sonra, sonra 3… sonra 5 olacak ve fonksiyon 5 kere bu degerlerle ayri ayri calisitirilacak. Bakalim sonuc nasil

Evet, begin ve end bolumleri, fonksiyonun 5 kere calisitirlmasina ragmen yalnzica 1 kere calistirildilar. Process bolumu ise beklendigi gibi fonksiyonun her calistirilisinda farkli bir deger alarak yoluna devam etti.
Bu yontemi pipeline icinde olusacak degeri fonksiyonlara parameter olarak atamak istediginizde kullanabilirsiniz. Begin, process ve end bolumlerini uygun sekilde kullanarak elbette!

Continue Reading PowerShell Ile Gelismis Fonksiyonlara Bir Ornek (Begin, Process, End)

Kent Azure Grubu'nda PowerShell Azure Functions Anlattim

Ashford bolgesi topluluklarindan Kent Azure grubunun daveti uzerine PowerShell ile Azure Functions anlattigim guzel bir etkinlik daha. Katkisi olan herkese tesekkur ediyorum.

Ajandamiz ise soyleydi:
The agenda is:
18:30 : Arrive – Drinks & Networking
19:00 : 1st Speaker Microsoft MVP B. Onur Okutucu
Subject: PowerShell in Azure Functions in a Nutshell
As one of the key players of Azure Serverless Architecture, Azure Functions can now be used with PowerShell which allows you to dynamically manage your Azure environment.
In this session, we will be looking at an example PowerShell Function for managing resources using HTTP requests.
19:45 : Break – Pizza / Drinks and general chin-wagging
20:10 : Speaker 2 – Microsoft Cloud Architect Steve Leonard
Subject: Building PWAs (Progressive Web Apps) on Azure.
Steve will take us through the benefits of PWAs and the different ways they can be hosted on Azure. Including Azure Function and even directly from blob storage. The combination of using a SPA hosted on Azure is a great way to build and host your app in an affordable and flexible way.
21:00 : Break up and networking

June Kent Azure Meetup

Tuesday, Jun 25, 2019, 6:30 PM

Ashford Picturehouse
Elwick Road Kent, GB

11 Members Went

Hi everyone June has arrived, and after a truly entertaining and insightful series of Lightning Talks (thanks again to everyone that came and spoke) we have 2 new speakers for you for June. The agenda is: 18:30 : Arrive – Drinks & Networking 19:00 : 1st Speaker Microsoft MVP B. Onur Okutucu Subject: PowerShell in Azure Functions in a Nutshell As on…

Check out this Meetup →

Continue Reading Kent Azure Grubu'nda PowerShell Azure Functions Anlattim

PowerShell ile Windows Server 2019 Active Directory Uzerinde Zaman Dayali Grup Uyeligi Olusturmak

Guvenlik her gecen gun daha cok onem kazaniyor. Bunun bir sonucu olarak her sistem kendi koruma mekanizmasini gelistiriyor. Active Directory zaten uzun yillardir guvenlik anlaminda cok buyuk bir sorumluluk ustelniyor ancak yeni ve kullanisli ozellikler de gelmeye devam ediyor. Iste bunlardan bir tanesi daha. Privileged Access Management ozelligi Forest seviyesinde aktif edildikten sonra asagidaki script kullanilarak bir kisiyi bir gruba belirli bir sure icin uye yapabilirsiniz.
[crayon]
Get-ADOptionalFeature -Filter * | select name
if((Get-ADOptionalFeature -Identity “Privileged Access Management Feature”).enabledscopes){
$kacsaat = 1
$zamanaraligi = New-TimeSpan -Hours $kacsaat
$group = “CN=YeniGrup,OU=PSTR,DC=POWERSHELLTURKIYE,DC=COM”
$user = “CN=PSTRUser9,OU=PSTR,DC=POWERSHELLTURKIYE,DC=COM”
Add-ADGroupMember -Identity $group -Members $user -MemberTimeToLive $zamanaraligi
}else{
Write-Host “Privileged Access Management Feature aktif degil” -ForegroundColor Red
}
[/crayon]
Durumun ne olduguna ve grup uyeliginin ne zaman silinecegi bilgisine asagidaki komutla ulasabiliriz.
[crayon]
Get-ADGroup ‘YeniGrup’ -Property member -ShowMemberTimeToLive
[/crayon]

Zaman doldu ve grup uyeligi otomatik olarak silindi.

Continue Reading PowerShell ile Windows Server 2019 Active Directory Uzerinde Zaman Dayali Grup Uyeligi Olusturmak

PowerShell ile Windows Server 2019 Active Directory Uzerinde Priviledged Access Management Ozelligini Aktif Etmek

Bu ozellik bize zamana dayali grup uyeligi ozelligini kullanmamizi saglayacak. Bu sebeple once Priviledged Access Management ozelliginin aktif olup olmadigina bir goz atalim.
[crayon]
(Get-ADOptionalFeature -Identity “Privileged Access Management Feature”).enabledscopes)
[/crayon]
Yukaridaki komut bir deger dondurmuyorsa bu ozellik kapali demektir. O halde acalim.
[crayon]
Enable-ADOptionalFeature -Identity “Privileged Access Management Feature” -Scope ForestOrConfigurationSet -Target ‘powershellturkiye.com’
[/crayon]

Bu ozellik icin Forest Functional Level degerinin Windows Server 2016 olmasi gerekiyor.

Continue Reading PowerShell ile Windows Server 2019 Active Directory Uzerinde Priviledged Access Management Ozelligini Aktif Etmek

27 Nisan’da IYTE’de Azure Cloud Shell anlattim

Bu sene Izmir’in Urla ilcesinde bulunan Izmir Yuksek Teknoloji Enstitusu kampusunde gerceklestirdigimiz Azure Global Bootcamp gercekten cok renkli gecti. Her biri kendi alaninda tecrubeli konusmacilarin birbirinden guzel sunumlari katilimcilar tarafindan da ilgiyle izlendi. Bu organizasyonun yapilmasinda emegi gecen MShowto ailesine ve bol gunesli bir Izmir havasini bir yana birakip bizleri dinlemeye gelen degerli katilimcilara cok tesekkur ederim.

 

    

Continue Reading 27 Nisan’da IYTE’de Azure Cloud Shell anlattim

PowerShell ile Windows Server 2019 Active Directory – Otomatik Test Kullanicilari Olusturmak

Active Directory uzerinde herhangi bir amacla test kullanicisi olusturmak isteyebilirsiniz. Bunu elbette cok cesitli yontemlerle (csvde, ldifde, cmd, vbscript vs.) yapabilirsiniz. Peki PowerShell ile olusturacaginiz bir fonksiyon sayesinde bunu tamamen dinamik olarak yapmaya ne dersiniz?
Asagidaki basit fonksiyon ile, olusturulacak kullanici adedini ve Organizational Unit bilgisini girerek bu islemi super hizli bir sekilde yapabilirsiniz. Iste su sekilde:

Continue Reading PowerShell ile Windows Server 2019 Active Directory – Otomatik Test Kullanicilari Olusturmak

PowerShell ile Windows Server 2019 Uzerinde CIMv2 Kullanarak Bilgi Toplamak

WMI objeleriyle calismanin bir suru avantaji var elbette. Bilgisayarinizdaki bir cok servis, arac ya da uygulama hakkinda bilgileri WMI kullanarak alabilir, degistirebilir ve yonetebilirsiniz. WMI, aslinda cok eski zamanlardan beri kullandigimiz bir arac ancak; PowerShell ile cok hizli ve kolay bir sekilde kullanilabildigi icin artik cok daha revacta diyebilirim. WMI aslinda CIM standardinin Windows sistemler icin kullanilan bicimi. Yani, CIM=WMI diyebiliriz. Bu sebeple PowerShell 3.0 ile kullanilmaya baslayan CIM komutlarini kullanarak cok daha efektif sonuclar alabilecegimizi dusunuyorum.
O halde biraz faydali komut kosturalim!
Oncelikle hangi
Hangi bilgilere erisebileceginizi goerbilmek icin “Class” adi verilen bilesenlere ihtiyacimiz bulunuyor. Her Class belirli bir yazilim, donanim ya da servis hakkinda bilgi ve aksiyonlar iceriyor.
Asagidaki komutla tum Class’lari listeleyebiliriz.

Hatta isterseniz win32* filtrelemesiyle daha rafine bir sonuc alabilirsiniz.

Bu liste epey uzun ancak icinde cok faydali Class’lar var. Ben ornek olarak 5 tanesini sececegim ancak siz de kendi denemelerinizi farkli Class’lar ile yapabilirsiniz.




Continue Reading PowerShell ile Windows Server 2019 Uzerinde CIMv2 Kullanarak Bilgi Toplamak

PowerShell ile Windows Server 2019 Active Directory Uzerinde Gruplari Farkli Sekilde Filtrelemek

AD uzerinde kullanici, grup ya da diger objeeri cok farkli yollarla yonetebilirsiniz. PowerShell’in sundugu esneklik sayesinde farkli metotlari kullanabilir, farkli senaryolarla bilginizi genisletebilirsiniz.
Bunun bir parcasi olarak, asagidaki ornegi iki farkli opsiyonla paylasmak istedim.
Opsiyon 1
[crayon]
Get-ADGroup -Properties * -filter “GroupScope -eq ‘Global’ -AND description -like ‘*Turkiye*'” -SearchBase `
“OU=PSTR,DC=powershellturkiye,DC=com” | Select Name,Group*, description
[/crayon]
Opsyion 2
[crayon]
Get-ADGroup -Properties * -filter * | where{($_.GroupScope -eq ‘Global’) -AND ($_.description -like ‘*Turkiye*’)} | Select Name,Group*, description
[/crayon]
Ilk opsiyon belki syntax anlaminda biraz daha zor gelebilir ancak bu da hizli bir alternatiftir.

Continue Reading PowerShell ile Windows Server 2019 Active Directory Uzerinde Gruplari Farkli Sekilde Filtrelemek

PowerShell ile Windows Server 2019 Active Directory Uzerinde LastLogon Bilgisini Yazdirmak

Bir liste icinde verilen kullanicilarin en son logon olma zamanlarini sade bir sekilde ekrana yazdirmak isterseniz asagidaki script’I kullanabilirsiniz. Benim kullanicilar logon olmayali epey olmus anlasilan 😊
[crayon]
$kullanicilar = @(“PSTRuser1″,”PSTRuser2″,”PSTRuser3”)
$sonuc = @()
foreach($kullanici in $kullanicilar){
$kullanicidetay = Get-ADUser $kullanici -Properties lastlogon -ErrorAction Stop
$sonuc+=New-Object -TypeName PSObject -Property (@{
‘Kullanici’ = $kullanicidetay.Name
‘LastLogon Bilgisi’ = [datetime]::FromFileTime($kullanicidetay.’lastLogon’)
})
}
$sonuc
[/crayon]

Continue Reading PowerShell ile Windows Server 2019 Active Directory Uzerinde LastLogon Bilgisini Yazdirmak