Powershell ile Matematik

Powershell herşeyden önce iyi bir hesap makinesidir. Bunu aşağıdaki System.Math Class’I ile daha net görebilirsiniz.
Powershell’de Class’ları (Sınıf objeleri) kullanabilirsiniz. Böylece aslında bir programlama platformuna sahip olmuş olursunuz. Powershell’in default yetenekleri dışında bu tür Class’lar ile zenginleştirilmiş olması Powershell ile yapılabileceklerin neredeyse sınırsız olduğu anlamına gelmektedir.
Matematiğe geri dönelim. System.Math Class’ını Powershell içinden nasıl görüntüleyebilrim?
[System.Math] ya da kısaca [Math]
Bu obje ile hangi komutları kullanabileceğime bir göz atayım şimdi.

[System.Math] |Get-Member -Static -MemberType methods


Gördüğünüz gibi yok yok J
O halde biraz örnek yapalım.
Pi sayısı

[Math]::pi


E (Euler’s) sayısı

[Math]::e


Aşağı Yukarı Yuvarlama

[Math]::Round


Karekök

[Math]::Sqrt(64)


Üssü

[Math]::Pow(6,2)


Mutlak Değer

[Math]::Abs


Kapasite Birimi hesabı için (6gb kaç byte?)

[Math]::BigMul(1gb, 6)


Trigonometri

[Math]::Sin(90)
[Math]::Cos(30)
[Math]::Tan(45)


Logaritma

[Math]::Log10(1000)


Sorular icin bakionur@bakionur.com

Continue Reading Powershell ile Matematik

Powershell ile Office 365 Yönetimi – Part 3

Powershell ile sadece Office 365 organizasyonunun detaylarını yönetmekle kalmaz aynı zamanda Office 365’in sunduğu neredeyse tüm servisleri ayrı Powershell modülleri aracılığıyla yönetebilirsiniz. Powershell ile birlikte Office 365 bünyesinde bulunan servislerden yönetebilecekleriniz şöyle:

  • Exchange Online
  • Sharepoint Online
  • Compliance Center
  • Skype for Business Online (eski Lync Online)
  • One Drive for Business

Yukarıdakilerden her birinin yönetimi için Powershell’e ilgili modülü yüklemeniz gerekir. Bazı modülleri download ederek kullanırken bazılarını da (Exchange) uzak oturum aracılığıyla kendi oturumunuza yüklersiniz.

Exchange ve Mailbox Yönetimi

Bu bölümde Powershell ile Office 365 içerisindeki servislerden Exchange Online servisini nasıl yöneteceğimizi ele alacağız.

Şimdi Powershell ile Office 365 Exchange Online yapısına bağlanalım ve local bir Exchange Server yönetir gibi Office 365’de bulunan mailbox’ları, kullanıcı ve grupları yönetelim.

$credential= Get-Credential

$365 = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri https://outlook.office365.com/powershell-liveid/ -Credential $Credential -Authentication Basic -AllowRedirection

Import-PSSession $365

Yukarıdaki script önce bağlantı için gerekli kullanıcı ve parola bilgilerini bizden istiyor. Sonrasında yeni bir Powershell Session kurarak Office 365’in Exchange bölümüne bağlanıyor. Sonrasında da bağlantı kurduğu bu sunucudaki komutları kendi oturumu içine import ediyor.

Görüldüğü gibi bağlantı sağlandı ve uzak oturum ile bağlandığım Office 365’ten ilgili komutları kendime import edebildim. Unutmadan bu komutlar Powershell penceresini kapattığınız zaman kaybolur. Yeniden oturum bağlantısını yaparak komutları kendinize almanız gerekir. Bakalım kaç yeni komutum oldu.

Yukarıda kırmızı çerçeve içine aldığım isim aslında uzak oturum sorasında kendi oturumum içine Import ettiğim modülün ismi. Bu modülün içinde yeni komutlar var. Evet artık adedini görebiliriz.

Tüm komutların listesini de görebilirim elbette.

Get-Command -Module tmp_i2kl1fxk.nc1

Şimdi artık bağlantı kurduğuma göre rahatlıkla local bir Exchange Server yönetir gibi Exchange Management Shell komutlarını kullanabilirim.

Mesela;

Get-Mailbox

Get-MailboxStatistics

Get-CasMailbox

Get-MobileDeviceStatistics

Sonraki yazılarda Office 365’in diğer servislerinin yönetimini ele alacağım.

Sorular için bakionur@bakionur.com

Continue Reading Powershell ile Office 365 Yönetimi – Part 3

Powershell ile SWITCH kullanarak basit bir menu yapmak

Powershell ile belirli koşullara göre farklı aksiyonlar aldırmak pekala mümkündür. Hatta Powershell’in en önemli silahlarından biridir bu. IF-ELSE gibi bir koşullandırmanın gücünü uzun yıllardır biliyoruz. Powershell içinde de bu koşullandırma yapıları tümüyle desteklenir. Bunlardan biri olan SWITCH yapısı da farklı bir alternatif olarak bazı durumlarda kullanım kolaylığı sağlar. Önce IF-ELSE yapısını basit bir örnekle hatırlayalım.

Function yas {
cls
$yas=read-host "Yaşınızı giriniz"
if ($yas -eq 35)
{
 " Yolun yarisi"
}
elseif ($yas -lt 35)
{
 "Genç"
}
elseif ($yas -gt 35)
{
 "İkinci yarı"
}
}
Yas


Yukarıdaki IF-ELSE kontrolü yerine Switch kullanabiliriz. Unutmamak lazım ki; Switch 1 sabit değişkenin control ettirildiği durumlarda kullanışlıdır. Örneğin script’inizin menuden seçilen sayıya göre aksiyon almasını istediğiniz durumlarda bunu kullanabilirsiniz.

Function menu{
Cls
Write-host "BakiOnur Bank'a Hoşgeldiniz" -foregroundcolor red
Write-host "1 - Bankacılık işlemleri"
Write-host "2 – Kredi Kartı işlemleri"
Write-host "3 - Yatırım işlemleri"
$menulistenumarasi = read-host "Menüden seçmek istediğiniz öğenin numarasını giriniz"
switch ($menulistenumarasi)
{
 1 { write-host "Bankacılık işlemleri bölümüne giriş yaptınız" -foregroundcolor Blue}
 2 { write-host "Kredi kartı işlemleri bölümüne giriş yaptınız " -foregroundcolor Blue }
 3 { write-host "Yatırım işlemleri bölümüne giriş yaptınız " -foregroundcolor Blue }
}
}
Menu

Sonuç mu?

Sorular icin bakionur@bakionur.com

Continue Reading Powershell ile SWITCH kullanarak basit bir menu yapmak

Powershell ile Office 365 Üzerinden E-mail Gönderin

Özellikle zamanlanmış görevler oluşturduğunuzda çok işinize yarayacak bir özellik bu. E-mail göndermek. Aslında uzun yıllardır Powershell içerisinden mail gönderebiliyoruz.

Hatta biraz nostalji yaşamak isterseniz şuraya bakabilirsiniz.

http://www.towershell.com/2012/01/28/powershell-uzerinden-hizli-ve-kolay-e-mail-gonderin/

Şimdi ise Powershell’in entegre komutu sayesinde bu işlemi yukarıdaki yönteme kıyasla 10 kat daha hızlı yapacağız ve tek satırda halledeceğiz. Nasıl mı?

Send-MailMessage -From bakionur@winwin10.com -to bakionur@winwin10.com -Subject "towershell.com test" -body "By BakiOnur" -SmtpServer smtp.office365.com -Port 587 -Credential $cred -BodyAsHtml -UseSsl

Ve sonuç!

Sorular icin bakionur@bakionur.com

Continue Reading Powershell ile Office 365 Üzerinden E-mail Gönderin

Windows Powershell 5.0 ile Gelen 7 Güzel Özellik

Powershell gün geçtikçe gelişiyor ve yepyeni güzel özelliklere sahip oluyor.

En son versiyon olan Powershell 5.0 ile gelen özelliklerden bazılarına değinelim.

  1. Get-ChildItem için -Depth parametresi sayesinde yah ep ya hiç derdinden kurtuluyorsunuz. Get-ChildItem -Recure parametresi ile bir dosya yolunun altındaki tüm klasörlerde işlem yapmasını sağlayabiliyorduk. Ancak bazen bu çok uzun sürebiliyordu. Depth parametresi ile hangi derinliğe inebileceğinize karar verebiliyorsunuz.

Get-childitem -depth 5

 

 

 

  1. Get-Member için Force parametresi ile gizli durumda bulunan property, method vs. öğelere erişebilirsiniz.

Get-member -force

 

 

  1. Artık oturumlar arası dosya kopyalamak mümkün. Bir Session içindeyken başka bir Session’a dosya kopyalamak için -ToSession parametresi artık kullanılabilir.

Copy-Item -Path c:\dosya.txt -ToSession $session1 -Destination e:\dosyalar

 

  1. Artık çıktılarınızı Hex olarak da alabileceksiniz. Nasıl mı? Şöyle:

Get-process| out-string | Format-Hex

  1. Clip.exe’nin Powershell’cesi. Son derece kolay kullanımlı

"test" | Set-clipboard

Get-clipboard

 

  1. Out-file -nonewline parametresi ile dosyaya veri yazdırırken otomatik boş satır ekleme özelliğini devre dışı bırakabilirsiniz.

 

  1. Syntax Coloring özelliği ile artık script yasmak çok daha anlaşılır ve zevkli. Daha önce Powershell ISE (Integrated Scripting Environment) sahip olduğumuz bu özellik artık Powershell konsolu içinde de kullanılabilir durumda.

    Bir örnek:

    Sorular için bakionur@bakionur.com

 

 

Continue Reading Windows Powershell 5.0 ile Gelen 7 Güzel Özellik

Powershell ile Çöp Kutusu (Recycle Bin) Yönetimi

Powershell ile çöp tenekenizi boşaltabilirsiniz. Evet bu son derece basit. Siz asıl daha fazlasına hazır olun.

Neyse öncelikle şu normal çöp tenekesi boşaltma işlemini aradan çıkartalım.

Clear-RecycleBin

Buraya kadar her şey normal. Powershell ile çöp tenekesine müdahale edebiliyor olmam güzel. Ancak küçük ama kullanışlı bir özelliği daha var bu komutun.

Mesela; son günlerde binlerce dosyayı çöp tenekesine yolladınız.Bu yolladıklarınızın içinde sistem dosyalarının da olmasından korkuyorsunuz. Bildiğiniz tek şey sistem dosyalarınızın C: sürücüsünde olduğu. Neyse ki bu bilgi bile bizim için yeterli, kaygılanmanıza gerek yok.

Gelin örneğimize bakalım. Aşağıdaki çöp tenekesinde 2 dosya var. Bunlardan bir tanesi silinmeden önce C: sürücündeydi. Diğeri de ise silinmeden önce D: sürücüsündeydi. Ben bu 2 dosyayı da sildim ve şimdi artık ikisi de çöp tenekesinde.

Şimdi Powershell’den Clear-RecycleBin komutunu -DriveLetter parametresi ile birlikte kullanıyorum.

Clear-RecycleBin -DriveLetter C

Vee sonuç!

Sorular için bakionur@bakionur.com

Continue Reading Powershell ile Çöp Kutusu (Recycle Bin) Yönetimi

Powershell ile Office 365 Yönetimi – Part 2

Part 1’de Powershell ile Office 365’e nasıl bağlantı kurulacağı üzerinde durmuştuk. Şimdi artık en çok kullanılan 10 komutu tanıyalım.

Get-MsolCompanyInformation

Office 365 Organizasyonunuz içindeki şirket bilgilerini görüntülemek için kullanılır.

Get-MsolDomain

Office 365 üzerinde konumlandırdığım ve Office 365 tarafındasn yönetilen domain’leri listeler.

 

Get-MsolAccountSku

Bu komut ile Organizasyondaki Lisans durumunu anlık olarak görebilirsiniz. Örnek olarak ENTERPRISEPACK=E3, ENTERPRISEPREMIUM=E5 anlamına geliyor.

Get-MsolUser

Bu komut Office 365’deki tüm kullanıcıları listeler .

Get-MsolGroup

Bu komut Office 365’deki tüm grupları listeler.

Get-MsolPasswordPolicy -DomainName winwin10.com | fl *

Bu komut ile Office 365’deki kullanıcıların Parola politikalarını görüntüleyebilirsiniz. Benim örneğimde parolalar 250 günde bir eskiyecek ve 30 gün öncesinde de kullanıcıya bildirim yapılacaktır. Set-MsolPasswordPolicy komutu ile düzenlenebilir.

Get-MsolRole

Office 365’in varsayılan olarak getirdiği roller listeler. Bu roller sayesinde kullanıcıların yetkilerini ve Office 365 organizasyonu yönetimindeki yerlerini belirleyebilirsiniz. Bu yetki ve görevler şirketinizdeki yetkiler değil Office 365 portalının yönetimini ifade eder.

Get-MsolUserRole -UserPrincipalName bakionur@winwin10.com	

Herhangi bir kullanıcının yukarıda listelenmiş rollerden hangisine sahip olduğunu görüntüleyebilirsiniz.

New-MsolUser -UserPrincipalName towershell@winwin10.com -City ISTANBUL -Country TR -UsageLocation TR -Department "INFORMATION TECHNOLOGIES" -DisplayName TOWERSHELL -FirstName TOWER -LastName SHELL -PasswordNeverExpires $TRUE -StrongPasswordRequired $FALSE -UserType Member

Yeni bir kullanıcı oluşturmak için bu komutu kullanabilirsiniz. Özellikle Lisans ataması yapmadım. Bir sonraki komutta onu da göreceğiz. Unutmadan; bir kullanıya lisans ataması yapmazsanız, o kullanıcı Office 365 içerisindeki özellikleri kullanamayacaktır.

Set-MsolUserLicense -UserPrincipalName towershell@winwin10.com -AddLicenses windowsturkiye:ENTERPRISEPACK
Get-MsolUser -UserPrincipalName towershell@winwin10.com

Bu komutlarla da varolan bir kullanıcıya lisans ataması / değişikliği yapabilirsiniz.

Evet bir solukta en çok kullanılan Office 365 Powershell komutlarına göz attık. Sonraki yazılarda daha spesifik görevlerin nasıl yapılandırıldığını inceleyeceğiz.
Sorular için bakionur@bakionur.com

Continue Reading Powershell ile Office 365 Yönetimi – Part 2

Powershell’de Bir Printer’i Default Printer Olarak Ayarlamak

Powershell’de bir printer’i varsayılan printer olarak ayarlamadan önce sistemimizde bulunan tüm printer’lerin bir listesini çekelim. Bunun için;

Get-Printer

Komutundan faydalanabiliriz.

İstediğimiz Printer’i varsayılan olarak ayarlamak için ise WMI objelerinden faydalanacağız. İlgili WMI objesinin ismini de yine WMI obje listesinden çekerek bulalım. Hem bu şekilde merak ettiğiniz başka objeleri de bularak onları da arştırmaya başlayabilirsiniz. İçinde Printer geçen WMI objelerini listeleyelim.

Burada Win32_Printer objesini kullanacağız. Dilersek Printer listesini Win32_Printer objesini kullanarak da listeleyebiliriz.

Get-WmiObject Win32_Printer

Aşağıdaki komut ile tek satırda hem Win32_Printer objesini çağırıp hem de ismi ‘Microsoft Print to PDF’ olan Printer’i çekiyorum. Bunu da Printer isimli bir değişkene atıyorum.

$printer = Get-WmiObject -Query "Select * from Win32_Printer Where Name = "Microsoft Print to PDF'"

Artık Printer’imi Default Printer olarak tanımlayabilirim. Bunun için de;

$printer.SetDefaultPrinter()

Sorular icin bakionur@bakionur.com

Continue Reading Powershell’de Bir Printer’i Default Printer Olarak Ayarlamak

Powershell ile Office 365 Yönetimi – Part 1

Powershell’in en önemli kullanım alanlarından birisi de Office 365 yönetimi. Sadece portal üzerinden yönetilebilen Office 365’i alternative olarak Powershell üzerinden de yönetebilirsiniz. Kullanıcılarınızı, gruplarınızı, lisans yönetiminizi, güvenlik özelliklerinizi.. kısacası portal üzerinden yapabildiğiniz tüm yönetimsel faaliyetleri çok daha hızlı ve esnek olarak Powershell içerisinden de yönetebilirsiniz. Bu yazıda öncelikle Office 365’e Powershell ile bağlantı gerçekleştireceğiz ve yapabileceklerimize göz atacağız.
Powershell içerisinden Office 365 yönetimi yapabilmek için öncelikle aşağıdaki uygulamanın indirilmesi gerekmektedir.
https://www.microsoft.com/en-in/download/details.aspx?id=28177

Uygulamayı bilgisayarınıza kurarak devam ediyoruz.

Artık Powershell Office 365’e bağlanmak için gerekli modüle sahip duruma geldi. Şimdi bakalım bu yeni modül içinde neler var?

Tam komut listesi ise şöyle;

CommandTypeName
CmdletAdd-MsolAdministrativeUnitMember
CmdletAdd-MsolForeignGroupToRole
CmdletAdd-MsolGroupMember
CmdletAdd-MsolRoleMember
CmdletAdd-MsolScopedRoleMember
CmdletConfirm-MsolDomain
CmdletConfirm-MsolEmailVerifiedDomain
CmdletConnect-MsolService
CmdletConvert-MsolDomainToFederated
CmdletConvert-MsolDomainToStandard
CmdletConvert-MsolFederatedUser
CmdletDisable-MsolDevice
CmdletEnable-MsolDevice
CmdletGet-MsolAccountSku
CmdletGet-MsolAdministrativeUnit
CmdletGet-MsolAdministrativeUnitMember
CmdletGet-MsolCompanyInformation
CmdletGet-MsolContact
CmdletGet-MsolDevice
CmdletGet-MsolDeviceRegistrationServicePolicy
CmdletGet-MsolDirSyncConfiguration
CmdletGet-MsolDirSyncProvisioningError
CmdletGet-MsolDomain
CmdletGet-MsolDomainFederationSettings
CmdletGet-MsolDomainVerificationDns
CmdletGet-MsolFederationProperty
CmdletGet-MsolGroup
CmdletGet-MsolGroupMember
CmdletGet-MsolHasObjectsWithDirSyncProvisioningErrors
CmdletGet-MsolPartnerContract
CmdletGet-MsolPartnerInformation
CmdletGet-MsolPasswordPolicy
CmdletGet-MsolRole
CmdletGet-MsolRoleMember
CmdletGet-MsolScopedRoleMember
CmdletGet-MsolServicePrincipal
CmdletGet-MsolServicePrincipalCredential
CmdletGet-MsolSubscription
CmdletGet-MsolUser
CmdletGet-MsolUserByStrongAuthentication
CmdletGet-MsolUserRole
CmdletNew-MsolAdministrativeUnit
CmdletNew-MsolDomain
CmdletNew-MsolFederatedDomain
CmdletNew-MsolGroup
CmdletNew-MsolLicenseOptions
CmdletNew-MsolServicePrincipal
CmdletNew-MsolServicePrincipalAddresses
CmdletNew-MsolServicePrincipalCredential
CmdletNew-MsolUser
CmdletNew-MsolWellKnownGroup
CmdletRedo-MsolProvisionContact
CmdletRedo-MsolProvisionGroup
CmdletRedo-MsolProvisionUser
CmdletRemove-MsolAdministrativeUnit
CmdletRemove-MsolAdministrativeUnitMember
CmdletRemove-MsolApplicationPassword
CmdletRemove-MsolContact
CmdletRemove-MsolDevice
CmdletRemove-MsolDomain
CmdletRemove-MsolFederatedDomain
CmdletRemove-MsolForeignGroupFromRole
CmdletRemove-MsolGroup
CmdletRemove-MsolGroupMember
CmdletRemove-MsolRoleMember
CmdletRemove-MsolScopedRoleMember
CmdletRemove-MsolServicePrincipal
CmdletRemove-MsolServicePrincipalCredential
CmdletRemove-MsolUser
CmdletReset-MsolStrongAuthenticationMethodByUpn
CmdletRestore-MsolUser
CmdletSet-MsolADFSContext
CmdletSet-MsolAdministrativeUnit
CmdletSet-MsolCompanyContactInformation
CmdletSet-MsolCompanySecurityComplianceContactInformation
CmdletSet-MsolCompanySettings
CmdletSet-MsolDeviceRegistrationServicePolicy
CmdletSet-MsolDirSyncConfiguration
CmdletSet-MsolDirSyncEnabled
CmdletSet-MsolDomain
CmdletSet-MsolDomainAuthentication
CmdletSet-MsolDomainFederationSettings
CmdletSet-MsolGroup
CmdletSet-MsolPartnerInformation
CmdletSet-MsolPasswordPolicy
CmdletSet-MsolServicePrincipal
CmdletSet-MsolUser
CmdletSet-MsolUserLicense
CmdletSet-MsolUserPassword
CmdletSet-MsolUserPrincipalName
CmdletUpdate-MsolFederatedDomain

 
Şimdi öncelikle Office 365’e organizasyon bilgileriyle (hesap bilgileri) bağlanmamız gerekiyor. Bu sayede yukarıdaki komutları kullanabilir durumda olacağım.
Bunun için öncelikle Office 365 portalına bağlanmak için kullandığım Kullanıcı Adı ve Parolayı bir credential olarak Powershell’e söylemem gerekiyor. Sonraında da Connect-MsolService komutunu kullanarak bağlantımı gerçekleştireceğim.

$credential=Get-Credential

Connect-MsolService -Credential $Credential


Şimdi artık bağlantımızı gerçekleştirdiğimize göre Office 365 Organizasyonumu tüm yönleriyle bu yönetibiliriz.
Sonraki yazılarımızda bir çok önemli komuta uygulamalı olarak yer vereceğim.
Sorular için bakionur@bakionur.com

Continue Reading Powershell ile Office 365 Yönetimi – Part 1

Powershell’de DO-WHILE kullanımına 5 güzel örnek

Do While döngüsünün tam karşılığı şudur; “Bir koşul sağlandığı müddetçe bunu yap”
Düşünsenize; 2 sayısı 1 sayısından büyük oluncaya kadar ekrana 1 saniye aralıklarla tarihi yazdır desem ne olur?
Bakalım ne olur!

do {
start-sleep 1
cls
get-date
} while (2 -gt 1)


Kullanıcı ekrana 3 ile 5 arasında bir sayı girene kadar aynı uyarı çıksa ve bir sonraki adıma geçilemese..
Buyrun..

do {
cls
$sayi=read-host "3 ile 5 arasında bir rakam giriniz"
} while (!(($sayi -lt 5) -AND ($sayi -gt 3)))


Spesifik bir parolayı girmeden sonraki adıma geçilmesin istiyorsak ne yapmalıyız? Hem de parola Case Sensitive ise!

do {
$parola=read-host "parolayı giriniz (ParolA123)"
} while (!($parola -ceq "ParolA123"))


Örneğin IP Helper servisi çalıştığı sürece ekrana “Servis Çalışıyor” yazdırılsa. Hoş olmaz mı?

do {
write-host "Servis calisiyor"
} while ((get-service iphlpsvc).status -eq "Running")


Ya peki ben D sürücümde 10 GB’den boş yer olduğu müddetçe, bir başka deyişle 10 GB’den az kalana kadar “diskte yer var” mesajını yazdırmak istesem!
O da böyle olsun..

do {
write-host "Diskte yer var"
} while (((Get-WmiObject win32_logicaldisk | where{$_.deviceid -eq "d:"}).freespace)/1024/1024/1024 -gt 10)


Sorular icin bakionur@bakionur.com

Continue Reading Powershell’de DO-WHILE kullanımına 5 güzel örnek