Otomasyonda Uzmanlaşmak: İş Akışınızı Kolaylaştırmak için Pratik PowerShell Örnekleri


PowerShell ile Otomasyon İçin 5 Pratik Örnek: İş Akışlarınızı Bugün Kolaylaştırın

Günümüzün hızlı teknoloji ve yenilik dünyasında otomasyon ihtiyacı abartılamaz. Yazılım mühendislerinden yüksek kaliteli işler üretmeye yönelik bitmek bilmeyen talepler nedeniyle, günlük görevlerde verimlilik bulmak zorunludur. PowerShell ile otomasyon, iş akışlarını optimize etmek ve süreçlerini kolaylaştırmak isteyenler için uzmanlaşılması gereken temel bir beceridir. Bu makalede, işinizin çeşitli yönlerini otomatikleştirmek için PowerShell'in gücünden nasıl yararlanabileceğinizi gösteren beş gerçek dünya örneğini inceleyeceğiz.

1. Dosya Yönetimini Otomatikleştirme

PowerShell kullanmanın en önemli avantajlarından biri dosya yönetimi otomasyonundaki etkinliğidir. Dosyalarda ve dizinlerde esnek ve verimli bir şekilde gezinme, bunları değiştirme ve yönetme yeteneği şüphesiz zamandan ve emekten tasarruf sağlayacaktır. Aşağıdaki örneği düşünün:

*Görev:* 30 günden eski tüm log dosyalarını Logs klasöründen OldLogs klasörüne otomatik olarak taşıyın.

Bunu başarmak için aşağıdaki kod parçasını kullanabilirsiniz:

$source = “C:Logs”
$destination = “C:OldLogs”
$thresholdDate = (Get-Date).AddDays(-30)
Get-ChildItem -Path $source -Recurse -File -Filter “*.log” | Where-Object { $_.LastWriteTime -lt $thresholdDate } | Move-Item -Destination $destination

Bu komut dosyası, dizin yapılarını korurken belirtilen dosyaları tanımlar ve taşır, böylece devam eden dosya yönetimi ihtiyaçlarınızı kolaylaştırır.

2. Active Directory'de Kullanıcı Yönetimini Basitleştirme

BT yöneticileri için kullanıcı yönetimi, erişim kontrollerini sürdürmek ve optimum sistem performansını sağlamak açısından kritik öneme sahiptir. PowerShell örnekleriyle otomasyon sayesinde Active Directory'deki kullanıcı hesaplarını verimlilik ve hassasiyetle kolayca yönetebilirsiniz.

*Görev:* Satış kuruluş birimindeki (OU) 60 gün boyunca oturum açmayan tüm kullanıcıları belirleyin ve hesaplarını devre dışı bırakın.

$ouPath = “OU=Sales,DC=yourdomain,DC=com”
$thresholdDate = (Get-Date).AddDays(-60)

Import-Module ActiveDirectory

Get-ADUser -Filter * -SearchBase $ouPath -Properties LastLogonTimestamp | Where-Object { $_.LastLogonTimestamp -lt $thresholdDate } | Disable-ADAccount

Yukarıdaki komut dosyası, PowerShell'in kullanıcı yönetimi görevlerini nasıl basitleştirebileceğini ve kuruluşunuzun güvenliğini ve üretkenliğini nasıl sağlayabileceğini gösterir.

3. Yazılım Kurulumunun Otomatikleştirilmesi

Yazılımı birden fazla makineye yüklemek sıkıcı bir süreç olabilir. PowerShell, tekrarlanan kurulumlara harcanan süreyi önemli ölçüde azaltarak bu görevi otomatikleştirmenize olanak tanır.

*Görev:* Google Chrome tarayıcısını uzak bir bilgisayara yükleyin.

$remoteComputer = “Remote-PC”
$installerUrl = “https://dl.google.com/chrome/install/375.126/chrome_installer.exe”
$localPath = “C:Tempchrome_installer.exe”

Invoke-WebRequest -Uri $installerUrl -OutFile $localPath

Invoke-Command -ComputerName $remoteComputer -ScriptBlock { Start-Process -FilePath “C:Tempchrome_installer.exe” -ArgumentList “/silent /install” -Wait }

Bu örnek, bir kuruluş genelinde yazılım dağıtımlarını kolaylaştırmada PowerShell ile otomasyonun gücünü göstermektedir.

4. Otomatik Görevleri Planlama

PowerShell, görevleri otomatikleştirmenize ve bunları belirli bir zamanlamaya göre çalıştırmanıza olanak tanır. Komut dosyalarını manuel olarak yürütmek yerine, iş akışınızı daha da kolaylaştırmak için yerleşik Görev Zamanlayıcı'yı kullanabilirsiniz.

*Görev:* Bir PowerShell betiğini her gün saat 14:00'te çalışacak şekilde planlayın.

$scriptPath = “C:ScriptsYourScript.ps1”
$action = New-ScheduledTaskAction -Execute ‘powershell.exe’ -Argument “-NoProfile -ExecutionPolicy Bypass -File $scriptPath”

$trigger = New-ScheduledTaskTrigger -Daily -At 2pm

Register-ScheduledTask -Action $action -Trigger $trigger -TaskName “DailyScript” -Description “Run PowerShell script daily at 2 PM”

Bu örnekte komut dosyası, istediğiniz komut dosyasının yürütülmesini otomatikleştirmek için zamanlanmış bir görev oluşturarak diğer kritik görevlere odaklanmanıza olanak tanır.

5. Sistem Bakımının Otomatikleştirilmesi

Optimum performans için sisteminizin düzenli olarak izlenmesi ve bakımı çok önemlidir. PowerShell ile sisteminizin sorunsuz çalışmasını sağlamak için temel bakım görevlerini kolayca otomatikleştirebilirsiniz.

*Görev:* Yedi günden eski Windows olay günlüklerini temizleyin.

$thresholdDate = (Get-Date).AddDays(-7)
Get-WinEvent -ListLog * | Where-Object { $_.RecordCount -gt 0 } | ForEach-Object {
$logName = $_.LogName
$query = “*[System[(EventRecordID >= 0) and TimeCreated[timediff(@SystemTime) >= $($thresholdDate.Ticks)]]”
Get-WinEvent -FilterXml $query | Remove-EventLog -LogName $logName
}

Bu komut dosyası, her olay günlüğünde yinelenir, belirtilen eşikten daha eski kayıtları siler ve sisteminizi etkili bir şekilde temiz ve güncel tutar.

Sonuç olarak, PowerShell örnekleriyle otomasyonun gücü, hem yazılım mühendislerinin hem de BT yöneticilerinin üretkenliğini ve verimliliğini büyük ölçüde artırabilir. Bu tekniklere hakim olarak iş akışlarınızı optimize etmek, değerli zamandan tasarruf etmek ve daha kritik görevlere odaklanmak için iyi bir donanıma sahip olacaksınız. Otomasyon yolculuğunuza bugün başlayın ve PowerShell'in sunduğu avantajları deneyimleyin.

PowerShell komut satırını kullanarak Active Directory kullanıcılarını ve gruplarını yönetmek için otomatikleştirilmiş bir komut dosyasını nasıl oluşturabilirsiniz?

PowerShell komut satırını kullanarak Active Directory (AD) kullanıcılarını ve gruplarını yönetmek üzere otomatik bir komut dosyası oluşturmak için aşağıdaki adımları takip edebilirsiniz:

1. Active Directory modülünü yükleyin: Öncelikle sisteminizde PowerShell için gerekli Active Directory modülünün kurulu olduğundan emin olun. Aşağıdaki komut aracılığıyla yükleyebilirsiniz:

Install-WindowsFeature -Name RSAT-AD-PowerShell

2. AD modülünü içe aktarın: PowerShell oturumunuza Active Directory modülünü içe aktararak başlayın:

Import-Module ActiveDirectory

3. Bir komut dosyası oluşturun: Şimdi PowerShell komut dosyanızı içerecek yeni bir .ps1 dosyası oluşturun. Bu örnek için buna Manage_AD_Users_and_Groups.ps1 adını verelim.

4. Komut dosyanızı düzenleyin: Komut dosyanızı, kullanıcı oluşturma, kullanıcıları güncelleme, kullanıcıları silme, grup oluşturma, gruplara kullanıcı ekleme vb. gibi kullanıcıları ve grupları yönetmek için bölümlere ayırın.

5. Kullanıcı oluşturun: Komut dosyasında yeni kullanıcılar oluşturmak için New-ADUser cmdlet'ini kullanın:

$FirstName = Read-Host “Enter the first name”
$LastName = Read-Host “Enter the last name”
$UserName = Read-Host “Enter the username”
$Password = Read-Host “Enter the password” -AsSecureString
$OUPath = Read-Host “Enter the OU path”
New-ADUser -Name “$FirstName $LastName” -GivenName $FirstName -Surname $LastName -SamAccountName $UserName -UserPrincipalName “[email ” -AccountPassword $Password -Enabled $true -Path $OUPath -ChangePasswordAtLogon $false

6. Kullanıcıları güncelleyin: Kullanıcı bilgilerini güncellemek için Set-ADUser cmdlet'ini kullanın:

$UserName = Read-Host “Enter the username to update”
$NewFirstName = Read-Host “Enter the new first name”
$NewLastName = Read-Host “Enter the new last name”
Set-ADUser -Identity $UserName -GivenName $NewFirstName -Surname $NewLastName

7. Kullanıcıları silin: Kullanıcıları silmek için Remove-ADUser cmdlet'ini kullanın:

$UserName = Read-Host “Enter the username to delete”
Remove-ADUser -Identity $UserName -Confirm:$true

8. Gruplar oluşturun: Yeni gruplar oluşturmak için New-ADGroup cmdlet'ini kullanın:

$GroupName = Read-Host “Enter the new group name”
$GroupScope = Read-Host “Enter the group scope (DomainLocal, Global, Universal)”
$OUPath = Read-Host “Enter the OU path”
New-ADGroup -Name $GroupName -GroupScope $GroupScope -Path $OUPath

9. Kullanıcıları gruplara ekleyin: Kullanıcıları gruplara eklemek için Add-ADGroupMember cmdlet'ini kullanın:

$GroupName = Read-Host “Enter the group name”
$UserName = Read-Host “Enter the username to add”
Add-ADGroupMember -Identity $GroupName -Members $UserName

10. Betiğinizi gerektiği gibi PowerShell komut satırına kaydedin ve çalıştırın.

Komut dosyasını kuruluşunuzun gereksinimlerine göre özelleştirmeyi ve AD kullanıcılarının ve gruplarının çeşitli yönlerini yönetmek için uygun cmdlet'leri kullanmayı unutmayın.

Windows ortamında sunucu bakım görevlerini otomatikleştirmek için PowerShell komut satırını kullanmanın bazı etkili örnekleri nelerdir?

PowerShell, Windows tabanlı sistemlerde otomasyon ve yönetim görevleri için tasarlanmış güçlü bir betik dili ve komut satırı kabuğudur. Windows ortamında sunucu bakım görevlerini otomatikleştirmek için PowerShell komut satırını kullanmanın bazı etkili örnekleri aşağıda verilmiştir:

1. Windows güncellemelerini otomatikleştirme: Sunucularınız genelinde Windows güncellemelerini yüklemek ve yönetmek için PowerShell'i kullanabilirsiniz. Aşağıdaki komut mevcut güncellemeleri arar ve yükler:

Install-Module PSWindowsUpdate
Get-WindowsUpdate -Install

2. Hizmetleri yönetme: PowerShell, hizmetleri başlatma, durdurma veya yeniden başlatma gibi görevleri otomatikleştirebilir. Örneğin, uzak bir bilgisayarda IIS hizmetini yeniden başlatabilirsiniz:

Invoke-Command -ComputerName Server1 -ScriptBlock { Restart-Service -Name W3SVC }

3. Zamanlanmış görevler oluşturma: PowerShell, zamanlanmış görevleri oluşturmayı ve güncellemeyi kolaylaştırır. Aşağıdaki komut dosyası, her gün sabah 7:00'de belirli bir komut dosyasını çalıştıran zamanlanmış bir görev oluşturur:

$Action = New-ScheduledTaskAction -Execute “powershell.exe” -Argument “-File C:ScriptsDailyTask.ps1”
$Trigger = New-ScheduledTaskTrigger -Daily -At 7am
Register-ScheduledTask -Action $Action -Trigger $Trigger -TaskName “DailyMaintenance” -Description “Runs daily maintenance script.”

4. Disk alanının kontrol edilmesi: Disk alanının izlenmesi ve yönetilmesi, sağlıklı bir sunucu ortamının sürdürülmesi açısından çok önemlidir. Birden fazla bilgisayardaki boş disk alanını kontrol etmek için aşağıdaki komutu kullanın:

$computers = ‘Server1’, ‘Server2’, ‘Server3′
Invoke-Command -ComputerName $computers -ScriptBlock { Get-PSDrive -PSProvider FileSystem } | Select-Object -Property PSComputerName, Name, @{Name=’FreeSpaceGB’;Expression={“{0:N2}” -f ($_.Free / 1GB)}}

5. Geçici dosyaları temizleme: Bu komutu kullanarak Temp klasöründeki eski ve gereksiz dosyaları kaldırın:

$TempPath = ‘C:WindowsTemp*’
Remove-Item $TempPath -Recurse -Force -ErrorAction SilentlyContinue

6. Olay günlüklerini birleştirme: PowerShell'i kullanarak birden fazla Windows sunucusundaki olay günlüklerini dışa aktarmayı ve birleştirmeyi otomatikleştirebilirsiniz:

$computers = ‘Server1’, ‘Server2’, ‘Server3’
$OutputPath = ‘C:EventLogs’
ForEach ($computer in $computers) {
Get-WinEvent -ComputerName $computer -FilterHashtable @{ LogName=’System’; StartTime=(Get-Date).AddDays(-7)} | Export-Csv -Path “$OutputPath$computer-EventLogs.csv” -NoTypeInformation
}

Bunlar, Windows ortamında sunucu bakım görevlerini otomatikleştirmek için PowerShell komut satırından nasıl yararlanabileceğinize dair yalnızca birkaç örnektir. Olasılıklar neredeyse sonsuzdur ve bu da PowerShell'i BT profesyonelleri için vazgeçilmez bir araç haline getirir.

PowerShell komut satırını kullanarak dosya işlemeyi ve veri işlemeyi otomatikleştirmeye ilişkin gerçek dünyadan örnekler sunabilir misiniz?

Elbette! Aşağıda, PowerShell komut satırını kullanarak dosya işleme ve veri işleme görevlerinin nasıl otomatikleştirileceğini gösteren gerçek dünyadan üç örnek bulunmaktadır.

Örnek 1: Birden fazla dosyayı yeniden adlandırma
Bir dizindeki tüm metin dosyalarını .txt'den .log'a yeniden adlandırmak istediğinizi varsayalım. Bunu aşağıdaki PowerShell betiğini kullanarak gerçekleştirebilirsiniz:

Get-ChildItem -Path “C:ExampleDirectory*.txt” | ForEach-Object { Rename-Item $_.FullName -NewName ($_.Name -replace “.txt”,”.log”) }

Bu komut dosyasında, Get-ChildItem belirtilen dizindeki tüm .txt dosyalarını alırken, ForEach-Object dosyalar arasında yinelenir ve bunları yeniden adlandırır. Öğeyi Yeniden Adlandır komutunu kullanarak.

Örnek 2: CSV dosyalarını birleştirme
Tek bir CSV dosyasında birleştirmek istediğiniz verileri içeren birden fazla CSV dosyanız varsa bu komut dosyasını kullanabilirsiniz:

$SourceFolder = “C:ExampleDirectoryCSVFiles”
$DestinationFile = “C:ExampleDirectoryMergedData.csv”
Get-ChildItem -Path $SourceFolder -Filter *.csv | ForEach-Object {
$CurrentFile = Import-Csv -Path $_.FullName
$CurrentFile | Export-Csv -Path $DestinationFile -Append -NoTypeInformation
}

Burada, Get-ChildItem kaynak klasördeki tüm CSV dosyalarını bulur ve ForEach-Object, içeriğini Import-Csv ile içe aktararak her dosyayı işler. ve bunu Export-Csv kullanarak hedef dosyaya eklemek.

Örnek 3: Günlük dosyası verilerini işleme
ERROR sözcüğüyle başlayan satırlar da dahil olmak üzere çeşitli öğeleri içeren server.log adında bir günlük dosyanız olduğunu düşünün. Aşağıdaki komut dosyasını kullanarak bu hata satırlarını çıkarabilir ve ayrı bir dosyaya kaydedebilirsiniz:

$LogFile = “C:ExampleDirectoryserver.log”
$ErrorFile = “C:ExampleDirectoryerror_lines.log”
Get-Content -Path $LogFile | Where-Object { $_ -match “^ERROR” } | Set-Content -Path $ErrorFile

Bu komut dosyası, günlük dosyasının içeriğini Get-Content aracılığıyla okur, hata satırlarını Where-Object ile filtreler ve bunları Set-Content kullanarak yeni bir hata dosyasına kaydeder. .

İlgili makaleler