Burak Istanbullu

Bilgi Teknolojileri Günlüğü

MAPI Over Http ve RPC Over Http Farkları Nelerdir ?

MAPI Over Http ve RPC Over Http Farkları Nelerdir ?

MAPI Over HTTP Exchange Server 2013 SP1 ile birlikte geldi.
RPC Over Http kullandığımızda , RPC iletişim yöntemiyle paketleyip sonra HTTP ile taşıyarak bu işi yapabiliyorsunuz.Yani direkt HTTP üzerinden iletinizi teslim edemiyorsunuz, iletiniz gittiği yerde de tersi bir işlem ile çözülüp o şekilde işleme koyuluyor.
MAPI Over Http kullandığımızda ise bu aradaki RPC çevrim işlemine gerek kalmadan direkt olarak iletimizi HTTP ile gönderiyoruz.

Bu yazının devamını oku

RPC (Remote Procedure Call) mimarisi nedir ?

RPC genel olarak server ve client arasındaki iletişimi güvenilir bir şekilde sağlayan bir mimaridir. Örneğin Exchange Server ve Outlook.

SMTP – POP3 – IMAP – MAPI Nedir ?

SMTP Nedir ?
SMTP ya da Simple Mail Transfer Protokol çoğunlukla , clientlar tarafından (örn; Outlook) bir mail sunucusuna (örn; Exchange Server) mail göndermek için kullandıkları bir protokoldür. Aynı zamanda bir mail sunucusundan diğerine mail yönlendirmek için de kullanılır. Sunucular farklı domain de veya farklı servis sağlayıcılarında ise aynı şekilde sunucudan mail gönderimi işlemi de SMTP ile yapılır. Default olarak 25 nolu portu kullanır.

smtp_sending_forwarding

Bu yazının devamını oku

Exchange 2013 Mimarisi

Exchange 2010’dan farklı olarak Hub, Edge ve UM rolleri artık Exchange 2013’de bulunmuyor.

Kullanılan 2 rol vardır.
1. Mailbox Server Role : Exchange 2013 deki Hub Transport Service, Mailbox Database
ve Unified Messaging servislerini içerir.

2.Client Access Server Role : Yetkilendirme, yönlendirme ve proxy servislerini sağlar. Client Access Server da kuyruk olmaz ve hiçbir şey depolanmaz. Client Access genelde eHttp, Pop,IMAP,SMTP ve RPC Over Http protokollerini kullanır.

Bu yazının devamını oku

Ders 7

Remote Powershell
2012 sunucular itibariyle remote powershell(WinRM) servisi default da acıkta geliyor. 2008 ve öncesi sunucular için sunucuda remote powershell aktif etmek için aşağıdaki komutu calıstırıyoruz baglanmak istediğimiz sunucuda.
PS C:\Users\burakist> Enable-PSRemoting

Pssession ile ilgili komutları görmek için ;
get-command *pssession*

Yeni bir session olusturmak için;
New-PSSession -ComputerName WEB

Session kaldırmak için;
Remove-PSSession -ID 1

Mevcut session ları görmek için;
Get-PSSession

Olusturdugumuz session a girmek için;
Enter-PSSSession -ID 1

Birden Çok sunucuya Erişim için;
Invoke Command komutu ile birden cok sunucu üzerinde script blok calıstırıp işlem yapabiliriz.
2 sunucu uzerındeki proccess leri almak
Invoke-Command -ComputerName WEB,APP -ScriptBlock {Get-Process}

2 sunucu üzerindeki bir process i alırken(bu örnekte mstdc process i) değişken kullanmak
Kendi sunucumuz üzerinde yarattığımız bir değişkeni uzaktaki sunucuda calıstırmak için param ve argumentlist komutlarını kullanırız

$process = mstdc (mstdc servis ismi için değişken olusturduk)
Invoke-Command -ComputerName Web – ScriptBlock {param ($process) Get-Process $process} -ArgumentList $process

Asagıdaki şekilde birden fazla değişken ile lokalimizde tanımladığımz değişkenleri uzak makinede calıstırabiliriz.
Invoke-Command -ComputerName Web – ScriptBlock {param ($process,$burak) Get-Process $process} -ArgumentList $process

PowerShell WebAccess
Sunucuda Powershell WebAccess i aktif ederek , sunucuya WinRm üzerinden değil , 80 ya da 443 portu üzerinden erişiriz.

Ders 6

Pipeline ile calısmak
Pipeline 2 şekilde calısır.

1. Değere Göre (ByValue)
get-service spooler | stop-service

2. Özellik e göre (Property)
PS C:\Users\burakist> Get-Process |
>> Get-Member -MemberType Properties

Önemli : Hangi CMDlet leri pipeline ile birbirine baglayabilirim sorusunun cevabını hangi CMDLET i kullanmak istiyorsak onun full help komutuyla yardım dosyasına bakıp hangi property ler ile pipeline kullanılır görebiliriz.

Örneğin get-adcomputer ve get-process komutlarını birlikte kullanıp bütün bilgisayarlar üzerinde calısan process leri getirmeyi hedefliyorsak bu iki komutta ortak bir property bulmamız gerekiyor.

Oncelikle asagıdaki komutla get-service için get-help komutu calıstırılır.
get-help get-process -full

Alınan aşağıdaki cıktıdan -ComputerName property si ile get-process ile pipeline kullanabildiğimizi anlıyoruz.

PARAMETERS
-ComputerName <string[]>

Required? false
Position? Named
Accept pipeline input? true (ByPropertyName)
Parameter set name InputObject, Name, Id
Aliases Cn
Dynamic? false

Get-process e baktık, computername property si ile ortak bir pipeline kullanabiliceğimizi gördük. Simdi de get-adcomputer ın bize standartta hangi property leri hangi isimle getirdiğine bakalım. Asagıdaki komutla ;
Get-ADComputer -filter *

DistinguishedName : CN=DC01,OU=Domain Controllers,DC=contoso,DC=local
DNSHostName : dc01.contoso.local
Enabled : True
Name : DC01
ObjectClass : computer
ObjectGUID : 981e7aa0-2607-4904-9cba-a032d0953290
SamAccountName : DC01$
SID : S-1-5-21-2625711292-427662074-1261138565-1001
UserPrincipalName :

Cıktı yukarıdaki şekilde, baktığımızda Name property sini goruyoruz ama bize computer name lazım, o yüzden asagıdaki komutla get-adcomputer daki name property sini computername e cevirip, get-process ile baglıyoruz.

Get-ADComputer -filter * | Select @{Name=”ComputerName”;Expression={$_.Name}} | Get-Process

Asagıdaki sekilde expression kullanmadan da getirebiliriz.
Get-Process -ComputerName ((Get-ADComputer -filter *).Name)

Aynı sekilde bu sefer process leri değil get-service ile calısan servisleri alalım. Asagıda expandproperty kullanmamızın sebebi expandproperty ile baslıksız cıktı alınır.
get-service -ComputerName (Get-ADComputer -filter * | Select -ExpandProperty Name)

Ders 4

Get-Module -ListAvailable
komutuyla powershell de hangi modüllerinizin olduğunu gorebilirsiniz. Sunucuza rol tanımı yaptıkça buradaki modüllerde ona göre artar ve aktif hale gelir. Eğer sunucunuzda rol yoksa ve uzaktaki sunucularınızı kendi sunucunuzdan yönetmek istiyorsanız, Server Manager üzerinden Add Roles and features dan yönetmek istediğiniz rollerin feature larını ekleyebilirsiniz. Örn ; Feature altında Hyper-V Management Tools altından Hyper-V Module for Windows Powershell ekleyerek Hyper V yönetebilirsiniz powershell modülünü kurarak.

Get-command -Module ActiveDirectory
komutuyla Active Directory ait komutları görebiliriz.

Windows Feature ları görmek ve kurmak
Get-WindowsFeature *telnet*
komutuyla telnet ile baslayan feature ları getirir.

Install-WindowsFeature -Name Telnet-Client
komutuyla telnet feature install edilir.

Organizasyonda atılan bir Maili silmek

Not : işlem yaptığınız User ın Exchange Mailbox Import Export rolüne ekli olması gerekmektedir.
Belirli bir mailbox daki maili silmek için ;
Search-Mailbox -Identity “April Stewart” -SearchQuery ‘Subject:”Your bank statement”‘ -DeleteContent

Bütün mailbox lardaki mailleri silmek için;
Get-Mailbox -ResultSize unlimited | Search-Mailbox -SearchQuery ‘Subject:”Download this file”‘ -DeleteContent

Birden fazla parametreyle maili silmek için;
Get-Mailbox -ResultSize unlimited | Search-Mailbox -SearchQuery ‘(subject:armut) AND (from:administrator@contoso.local)’ -DeleteContent

Get-Mailbox -ResultSize unlimited | Search-Mailbox -SearchQuery {subject:”armut” AND from:”administrator@contoso.local” AND Sent:”1/28/2017″} -DeleteContent

Diğer parametreler için ;
https://www.codetwo.com/admins-blog/search-mailbox-exchange-2013-2016-online-attributes/

Ders 3

Ders 3

Pipeline Nedir ?
Pipeline CMDlet’lere bağlanarak daha iyi sonuclar döndürür, ve filtreleme yapar, aşağıdaki örnek filtreleme yaptığı şekli. Pipeline örneklerini incelerken dikkat etmemiz gereken nokta soldan başlayıp sağa doğru filtreleme yapar, ve bu detaylandırmayı birbirine bağlar.Örneğin aşağıdaki örnekte , bütün servisleri for each ile alır bir collection a atar, bu servislerin name ve status larını getirir,bunları name e göre sıraladı.
get-service | Select-Object Name,Status | sort-object name komutunu incelersek

get-service | select-object name | sort-object -Property Name -Descending
Bu örnekte de bütün servisleri çekti bir collection atadı, name leri ni aldı, objenin name property sine göre tersten sıraladı.

get-service | select-object name | sort-object -Property Name -Descending | select-object -first 5
Yukarıdaki script in aynısı ama bir pipeline daha ekledik , sadece ilk 5 kaydı getir.

get-service | select-object name | sort-object -Property Name -Descending | select-object -first 5 | Stop-Service -whatif
Yukarıdaki script in aynısı ama bir pipeline daha ekledik , sadece ilk 5 servisi getir ve bu servisleri durdurursam ne olur.
Aşağıdaki örnek de CMDlet’leri bağlamasıyla ilgili.
get-service -displayname Windows* | stop-service => display name i windows ile baslayan servisleri getirdi, ve durdurdu.
get-service -displayname windows* | stop-service -whatif => Komutu calıstırırsak ne olur u gösterir.
get-service -displayname windows* | stop-service -confirm => Herbir servis için onay ister.

Icerik karsılastirma Nasıl yapılır ? Compare-Object
Icerik karsılastırmayı -Reference Object ve -Difference Object komutuyla yapıyoruz. Asagıdaki örnekte ; önceden disklist.txt ye aldığımız sunucu üzerinde volume leri mevcut haliyle karsılastıracağız. Bu işlemi yaparken filtreleme yapacağız. Filtremiz de drive letter ı olmayan volume ler olacak.
İlk olarak volume leri cekip disklist.txt ye atıyoruz.Komutun sonuna Out-String koyduk ki string e cevirelim sonucu(Daha sonra mail atacağımız için)
Get-Volume | Select -Property DriveLetter, FileSystemLabel | Where-Object {$_.DriveLetter -eq “`0”} | Out-String | Export-Csv C:\Tools\disklist.txt

Simdi de karsılastırma yapacağız;
Compare-Object -ReferenceObject (Import-Csv C:\tools\disklist.txt) -DifferenceObject (Get-Volume | Select -Property DriveLetter, FileSystemLabel | Where-Object {$_.DriveLetter -eq $null}) | Out-String

Mail gönderimi nasıl yapılır ?

İlk olarak yukarıda iki dosya arasındaki farkı asagıdaki gibi $body etiketine aldık.
$body = Compare-Object -ReferenceObject (Import-Csv C:\tools\disklist.txt) -DifferenceObject (Get-Volume | Select -Property DriveLetter, FileSystemLabel | Where-Object {$_.DriveLetter -eq $null}) | Out-String

Daha sonra aşağıdaki komutla maili gönderdik.
Send-MailMessage -SmtpServer 10.2.3.1 -to “Burak <Burak.istanbullu@intertech.com.tr>” -from “Burak <Burak.istanbullu@intertech.com.tr>” -subject “Restart Sonrasi Disk Farklari” -Body $body

Cıktı Alma nasıl yapılır?
HTML dosyasına cıktı almak için ;
1. Yöntem : get-service | Select-Object Name,Status | ConvertTo-Html | Out-File Servisler.html
2. Yöntem : $servisler = get-service | ConvertTo-Html
$servisler > servisler.html

Out-GridView ile cıktı nasıl alınır ?
Aşağıdaki şekilde Out-GridView ile cıktı alarak acılan arayüzden rahatlıkla filtreleme yapılabilir.
1. Yöntem : get-service | Select-Object Name,Status | Out-GridView
2. Yöntem : $servisler | Out-GridView

Powershell update nasıl yapılır ?

Powershell , Windows Management Framework üzerinden çalıştığı için şu an için en güncel versiyon olan Version 5 i, aşağıdaki linkten indirip kurduktan sonra sunucu restartıyla güncellemeyi yapabiliriz.

https://www.microsoft.com/en-us/download/details.aspx?id=50395