Ana içeriğe atla

Kayıtlar

Getting Web Site Availability Result using Powershell

function webSiteHealthCheck{ [CmdletBinding(SupportsShouldProcess)] param( $URLList ) $result = @() Foreach($Uri in $URLList) {     $time = try{   $request = $null    ## Request the URI, and measure how long the response took.   $result1 = Measure-Command { $request = Invoke-WebRequest -Uri $uri -Verbose }   $result1.TotalMilliseconds   }    catch   {    $request = $_.Exception.Response    $time = -1   }       $result += [PSCustomObject] @{   Time = Get-Date;   Uri = $uri;   StatusCode = [int] $request.StatusCode;   StatusDescription = $request.StatusDescription;   ResponseLength = $request.RawContentLength;   TimeTaken =  $time;    }     }    return $result } $urllist = ("https://social.technet.microsoft.com/Forums/ie/en-US/955754db-e85b-4cf9-a516-eaec405706b9/how-to-check-the-availability-of-...

Copy Files and Folders with structure

Herkese Merhaba, Robocopy yıllarca dosya operasyonlarında kadim dostumuz oldu, ancak kabul etmeliyiz ki artık devir Powershell'in devri.. Aslında bazı arkadaşlar bu kadar uğraşmaya ne gerek vardı, Copy-Item ile bu işlemi yapabilirsin der gibi ancak, ben yaptığım testlerde Copy-Item'in -Exclude parametresinin sağlıklı çalışmadığını gözlemledim. Bu nedenle de kontrolün tamamen bende olacağı, biraz eski kafalıyım kabul, item item gezerek kontrol sağlayan aşağıdaki scripti geliştirdim. Scriptin özellikle ilk bölümündeki CmdletBinding() bölümü bir kısmınız için tanıdık olmayabilir. Onunla ilgili olarak blogda Power of Powershell yazısını incelemenizi tavsiye ederim.  Function aslında basit bir iş yapıyor ancak benim gibi detaycı:) Tıpkı Copy-Item gibi iki parametreye ihtiyacımız bulunuyor. $sourceDirectory ile kopyalama yapacağımız folder bilgisini iletmeliyiz. Örneğin C:\inetpub\wwwroot\site1 sitesinin içeriğini bir yere kopyalamak istiyorsak, doğrudan bu şekilde ...

Import Active Directory Module in Powershell

Active Directory rolüne sahip olmayan bir workstation üzerinde AD yönetimi için powershell script çalıştırmak istiyorsanız öncelikle Remote Server Administration Tools feature’ini workstation üzerinde kurmalısınız. Kurulumu tamamlandıktan sonra aşağıdaki komut ile öncelikle modüller arasında ActiveDirectory modülünün olup olmadığı kontrol edilir, eğer modüller arasında ActiveDirectory modülü yoksa session bazında Import-Module cmd’letiyle Active Directory commandletleri kullanımımıza açılır. if ( -not ( Get-Module -Name ActiveDirectory -ea Continue )) { Import-Module ActiveDirectory -ea Stop } Umarım faydalı olur.  

Powershell Remote Yönetimi

Powershell'in ne kadar güçlü bir tool oluğunu hepimiz biliyoruz. En güçlü ve güvenlik anlamında korkutucu özelliklerinden birisi ise local administrator yetkilerine sahip olduğumu bir credential ile WinRM kullanarak istediğimiz scriptleri çalıştırabilmek diyebiliriz. Akşam televizyon başında oyalanırken 3 aşamadan oluşan bir script yazarak remote sessionda script çalıştırmayı deneme fırsatım oldu. Bu test sırasında ilk olarak iki ayrı çok basit functiondan ve write-host ile host ekranına yazı basan bir script geliştirdim. Bu script çalıştırken iki parametre alıyor. Kendi içerisinde iki functiondan ilkini çağırarak function çağrısının tamamlanmasını bekliyor. Çağırdığı testFunc function'ı ise yine bu script dosyası içerisindeli testFunc2 function'ı çağırıyor. [ cmdletBinding (SupportsShouldProcess) ] param ( [ string ] $firstParam , [ string ] $secondParam ) function testFunc2 { [ cmdletBinding (SupportsShouldProcess) ] param ( [ string ] $newNa...

DevOps Yolculuğum - 1 - Continous Delivery

DevOps Yolculuğum 2018 yılıyla birlikte kariyerime DevOps Mühendisi olarak devam edeceğim. Bu zamana kadar IT altyapı ve operasyon ekiplerinde kazandığım, server operasyon ve yönetimi, veritabanı operasyon ve yönetimi, uygulama operasyon ve geliştirme deneyimlerimi DevOps için kullanacağım. Bu süreçte fırsat buldukça DevOps adına öğrendiklerimi blog yazılarımda toparlamayı hedefliyorum. Umarım hem yeni kariyer hedefimde hem de blog zinciri hedefimde başarılı olabilirim:) Bu zincirdeki ilk yazımda Continous Delivery mekanizmasından bahsetmeyi düşündüm. Umarım bana ve okuyan herkese faydası dokunur. Continous Delivery Nedir? Continous Delivery temelde software release sürecinin tamamını etkileyen yazılım mühendisliği yaklaşımıdır. Test otomasyonu, uygulama deploymentlarının otomasyonu ve development sırasında kullanılan süreçlerin otomasyonu Continous Delivery'nin önemli bileşenleridir. Continous Delivery'in temel hedefi büyük ölçekli dağıtık ortamlara, kompleks pr...

Windows Feature Batch Deployment

Aşağıdaki function ile bir sunucu üzerinde oluışturduğumuz configuration file dosyası ile uzak lokasyondaki birden çok sunucuya yükleme yapabiliriz. Umarım faydalı olur, her türlü ek geliştirme için hakki.ogretmen@gmail.com adresine mail atabilirsiniz. function Invoke-WindowsFeatureBatchDeployment { param ( [parameter(mandatory)] [string[]] $ComputerNames, [parameter(mandatory)] [string] $ConfigurationFilePath ) # Deploy the features on multiple computers simultaneously. $jobs = @() foreach($ComputerName in $ComputerNames) { $jobs += Start-Job -Command { Install-WindowsFeature -ConfigurationFilePath $using:ConfigurationFilePath -ComputerName $using:ComputerName -Restart } } Receive-Job -Job $jobs -Wait | Select-Object Success, RestartNeeded, ExitCode, FeatureResult }

Check Computer Object is Alive On Domain

Powershell'in gücü system admin rolündeki kişiler için tartışılmaz. Zaman zaman üzerinde aging tanımı olmayan ortamlarda, düzgün yönetilemeyen domain ve dns ortamlarında aslında kapalı olan ve kapalı olmamasına rağmen domainden düşmüş computer objelerinin tespit edilebilmesi için aşağıdaki gibi bir script geliştirmiştim. Umarım faydası olur, her türlü ek geliştirme için hakkiogretmen@gmail.com adresine mail atabilirsiniz. Import-Module ActiveDirectory $myServers = @("servers") If (Test-Path "D:\Temp\PasswordLastSetResult.txt"){ Remove-Item "D:\Temp\PasswordLastSetResult.txt" } $Servers_OU =  "OU=ServersOU,OU=ABCServersOU,DC=mydomain,DC=dmn,DC=com" foreach ($myserver in $myServers)         {         $mycomp = Get-ADComputer –SearchBase $Servers_OU –SearchScope SubTree -Filter { OperatingSystem -like "Windows Server*"} -Properties PasswordLastSet,IPv4Address | Select * | Where-Object {$_.Name -eq $myserver} trap [Syste...