PS Windows Hizmet Yöneticisi v1.00

Programlama hakkında genel bilgilerin, dökümanların yer aldığı bölümümüz.
Cevapla
Kullanıcı avatarı
TRWE_2012
Mesaj Panosu Yöneticisi
Mesaj Panosu Yöneticisi
Mesajlar: 879
Kayıt: 30 Ağu 2022 21:59
Konum: DÜZCE/Akçakoca
Meslek: MADEN MÜHENDİSİ
Teşekkür etti: 233 kez
Teşekkür edildi: 723 kez
İletişim:

PS Windows Hizmet Yöneticisi v1.00

Mesaj gönderen TRWE_2012 »

Windows Hizmet Yönetimi PowerShell Betiği

Bu PowerShell betiği, Windows hizmetlerini yönetmek için kullanıcı dostu bir menü arayüzü sunar.

Aşağıda betiğin ana işlevleri ve özellikleri özetlenmiştir:

Betiğin Özellikleri:

Kullanıcı Menüsü:

Betik, kullanıcıya çeşitli seçenekler sunan bir menü ile başlar. Kullanıcı, hizmetleri listeleme, istatistik gösterme, dosya oluşturma, yeni hizmet oluşturma, mevcut bir hizmeti silme ve oluşturulan/silinen hizmetleri listeleme gibi işlemleri gerçekleştirebilir.

Hizmetleri Listeleme:

List-Services fonksiyonu, sistemdeki tüm Windows hizmetlerini ad, görünür ad ve durum bilgileri ile birlikte listeler.

Hizmet İstatistikleri:

Show-Service-Stats fonksiyonu, çalışan, durdurulan ve devre dışı bırakılmış hizmetlerin sayısını gösterir.

Hizmetleri Dosyaya Kaydetme:

Save-ServicesToFile fonksiyonu, mevcut hizmetleri bir CSV dosyasına kaydeder. Dosya, kullanıcının masaüstünde oluşturulur.

Yeni Hizmet Oluşturma:

Create-New-Service fonksiyonu, kullanıcıdan hizmetin görünür adı, teknik adı ve çalıştırılacak .exe dosyasının yolunu alarak yeni bir Windows hizmeti oluşturur. Ayrıca, hizmetin başlatma türünü (otomatik, manuel, devre dışı) seçme imkanı sunar.

Hizmet Silme:

Delete-Service fonksiyonu, kullanıcıdan silmek istediği hizmetin görünür adını alır ve onay aldıktan sonra hizmeti siler. Silinen hizmetler, bir diziye kaydedilir.

Oluşturulan ve Silinen Hizmetleri Listeleme:

List-CreatedAndDeletedServices fonksiyonu, daha önce oluşturulan ve silinen hizmetlerin listesini gösterir.

Yönetici İzni Kontrolü:

Betik, yönetici olarak çalıştırılıp çalıştırılmadığını kontrol eder ve eğer yönetici izni yoksa kullanıcıyı uyarır.

Kullanım:

Kullanıcı, betiği çalıştırdıktan sonra menüden bir seçenek seçerek işlemlerini gerçekleştirebilir. Her işlemden sonra kullanıcıdan devam etmek için bir tuşa basması istenir.

Bu betik, Windows hizmetlerini yönetmek isteyen kullanıcılar için pratik bir araçtır ve sistem yöneticileri için faydalıdır.

KOD İÇERİĞİ :

Kod: Tümünü seç

$logFile = [System.IO.Path]::Combine($env:USERPROFILE, "Masaüstü", "Windows Hizmet Listesi.txt")
$deletedServices = @()

# Kullanıcı menüsünü yazdırma
function Show-Menu {
    cls
    Write-Host "Merhaba WindowsPC Kullanıcısı, ne yapmak istiyorsun...!!!"
    Write-Host "1 : Windows Hizmetlerini Listele"
    Write-Host "2 : Windows Hizmetleri İstatistiği Göster"
    Write-Host "3 : Windows Hizmet Listesi.txt Dosyasını Oluştur"
    Write-Host "4 : Sıfırdan Windows Hizmeti Oluştur"
    Write-Host "5 : Sistemde Mevcut Bir Hizmeti SİL"
    Write-Host "6 : Oluşturulan ve Silinen Hizmetleri Listele"
    Write-Host "0 : Çıkış"
}

# Windows hizmetlerini listele
function List-Services {
    cls
    Get-Service | Format-Table -Property Name, DisplayName, Status
}

# Hizmet istatistiklerini göster
function Show-Service-Stats {
    cls
    $services = Get-Service
    $running = ($services | Where-Object { $_.Status -eq 'Running' }).Count
    $stopped = ($services | Where-Object { $_.Status -eq 'Stopped' }).Count
    $disabled = ($services | Where-Object { $_.StartType -eq 'Disabled' }).Count
    Write-Host "Çalışan Hizmet Sayısı: $running"
    Write-Host "Çalışmayan Hizmet Sayısı: $stopped"
    Write-Host "Devredışı Bırakılmış Hizmet Sayısı: $disabled"
}

# Hizmetleri masaüstüne kaydet
function Save-ServicesToFile {
    cls
    # Dosya yolunun varlığını kontrol et
    if (-not (Test-Path -Path $logFile)) {
        New-Item -Path $logFile -ItemType File
    }
    
    $services = Get-Service
    $services | Select-Object DisplayName, Status | Export-Csv -Path $logFile -NoTypeInformation
    Write-Host "Windows hizmetleri masaüstüne kaydedildi: $logFile"
}

# Yeni bir hizmet oluştur
function Create-New-Service {
    cls
    $displayName = Read-Host "Oluşturacağınız Windows Hizmetinin GÖRÜNEN ADI"
    $serviceName = Read-Host "Oluşturacağınız Windows Hizmetinin TEKNİK ADI"
    $exePath = Read-Host "Oluşturduğunuz Windows Hizmetinin Bağlı Olacağı .exe Dosyasının Tam Yolunu Yazınız"

    # Başlatma türünü seçme: A (Automatic), M (Manual), D (Disabled)
    Write-Host "Başlatma Türü Seçiniz:"
    Write-Host "A: Automatic"
    Write-Host "M: Manual"
    Write-Host "D: Disabled"
    $startTypeInput = Read-Host "Başlatma türünü (A/M/D) girin"

    # Başlatma türünü doğrula
    switch ($startTypeInput.ToUpper()) {
        'A' { $startType = 'Automatic' }
        'M' { $startType = 'Manual' }
        'D' { $startType = 'Disabled' }
        default {
            Write-Host "Geçersiz giriş! Lütfen 'A', 'M' veya 'D' seçeneklerinden birini seçin."
            return
        }
    }

    try {
        # Hizmeti oluşturma komutu
        New-Service -Name $serviceName -DisplayName $displayName -Binary $exePath -StartupType $startType
        Write-Host "Windows Servisi başarılı bir şekilde oluşturuldu"
    }
    catch {
        Write-Host "Hizmet oluşturulurken bir hata oluştu: $_"
    }
}


# Hizmet silme
function Delete-Service {
    cls
    $services = Get-Service | Sort-Object DisplayName
    $services | ForEach-Object { Write-Host "$($_.DisplayName)" }
    
    # Kullanıcıdan silmek istediği servisin Görünen Adını al
    $serviceToDelete = Read-Host "Silinmesi İstenen Windows Hizmetinin Görünen Adı"
    
    # Görünür adı ile teknik adı eşleştir
    $service = $services | Where-Object { $_.DisplayName -eq $serviceToDelete }
    
    if ($service) {
        $confirmation = Read-Host "EMİN MİSİNİZ? (evet/hayır)"
        
        if ($confirmation -eq "evet" -or $confirmation -eq "e") {
            try {
                # Hizmeti sc.exe ile silme (teknik adı kullanarak)
                sc.exe delete $service.Name
                Write-Host "Windows servisi silindi."
                $deletedServices += $serviceToDelete
            }
            catch {
                Write-Host "Hizmet silinirken bir hata oluştu: $_"
            }
        } else {
            Write-Host "İşlem iptal edildi kullanıcı tarafından."
        }
    } else {
        Write-Host "Belirtilen hizmet bulunamadı!"
    }
}


# Oluşturulan ve silinen hizmetleri listele
function List-CreatedAndDeletedServices {
    cls
    Write-Host "Oluşturulmuş ve silinmiş hizmetler:"
    $deletedServices | ForEach-Object { Write-Host $_ }
}

# Yönetici izni kontrolü
function Check-Administrator {
    $isAdmin = [Security.Principal.WindowsPrincipal][Security.Principal.WindowsIdentity]::GetCurrent()
    return $isAdmin.IsInRole([Security.Principal.WindowsBuiltInRole]::Administrator)
}

# Ana Menü döngüsü
do {
    if (-not (Check-Administrator)) {
        Write-Host "Yönetici olarak çalıştırılmadınız! Lütfen betiği yönetici olarak çalıştırın."
        break
    }

    Show-Menu
    $selection = Read-Host "Seçiminizi yapınız"
    switch ($selection) {
        1 { List-Services }
        2 { Show-Service-Stats }
        3 { Save-ServicesToFile }
        4 { Create-New-Service }
        5 { Delete-Service }
        6 { List-CreatedAndDeletedServices }
        0 { Write-Host "Çıkıyor..." }
        default { Write-Host "Geçersiz seçim, tekrar deneyin." }
    }
    Read-Host "Devam etmek için Enter'a basın..."
} while ($selection -ne 0)
NOT :

$logFile = [System.IO.Path]::Combine($env:USERPROFILE, "Masaüstü", "Windows Hizmet Listesi.txt")

Yukarıdaki kod satırında mavi ile işaretlenmiş sistem klasörünü siz kendi sisteminize göre başka bir sistem dizini adı yazabilirsiniz.Örneğin, Belgelerim dizini için "Belgelerim" şeklinde yazmak gibi.....Böylece .txt dosyasının kayıt yerini değiştirmiş olursunuz.

EKRAN GÖRÜNTÜLERİ : (Sistem : MS-WindowsOS Yapı 22H2 x64 Home TR)

Betiğin Ana DOS Menüsü:Resim
Sıfırdan Windows Hizmeti/Servisi Oluşturma:Resim
Sıfırdan Oluşturulan Windows Servisinin Sistem'den Silinmesi :Resim
Dosya ekleri
PS Windows Hizmet Yöneticisi v1.00.7z
TRWE_2012 tarafından kodlandı
ŞUBAT 2025
(2.02 KiB) 28 kere indirildi
Verily We have granted thee a manifest Victory
Fetih Suresi - 1.Ayet


Resim
Resim

Etiketler:
Kullanıcı avatarı
TRWE_2012
Mesaj Panosu Yöneticisi
Mesaj Panosu Yöneticisi
Mesajlar: 879
Kayıt: 30 Ağu 2022 21:59
Konum: DÜZCE/Akçakoca
Meslek: MADEN MÜHENDİSİ
Teşekkür etti: 233 kez
Teşekkür edildi: 723 kez
İletişim:

Re: PS Windows Hizmet Yöneticisi v1.00

Mesaj gönderen TRWE_2012 »

Uzun bir zamandır üzerinde (yaklaşık 1,5 hafta) uğraştığım (hatta bunu yapmaya çalışırken bir tane maviekran yedim) PS betiğidir.Gerçek sistem üzerinde oluşturuldu ve denendi.Güle güle kullanın....

PS BETİĞİN ÇALIŞMA GEREKSİNİMLERİ :

1.Yönetici olarak çalıştırın.

2.PowerShell Güvenlik Politika kısıtlamaması olmaması gerekiyor.
Execution Policy Change
The execution policy helps protect you from scripts that you do not trust. Changing the execution policy might expose
you to the security risks described in the about_Execution_Policies help topic at
https:/go.microsoft.com/fwlink/?LinkID=135170. Do you want to change the execution policy?
[Y] Yes [A] Yes to All [N] No [L] No to All Suspend [?] Help (default is "N"):
Buradan, klavyenizden A tuşuna basarak izin vermeniz gerekiyor.

3.Bu betik en az PS sürüm 5.1 ile en yüksek PS sürüm 7.1 sürüm gerektirir....
Verily We have granted thee a manifest Victory
Fetih Suresi - 1.Ayet


Resim
Resim
Kullanıcı avatarı
TRWE_2012
Mesaj Panosu Yöneticisi
Mesaj Panosu Yöneticisi
Mesajlar: 879
Kayıt: 30 Ağu 2022 21:59
Konum: DÜZCE/Akçakoca
Meslek: MADEN MÜHENDİSİ
Teşekkür etti: 233 kez
Teşekkür edildi: 723 kez
İletişim:

Re: PS Windows Hizmet Yöneticisi v1.00

Mesaj gönderen TRWE_2012 »

Soru :

Mesela tipik bir Windows11 Yapı 22H2 x64 OS Home TR sisteminde toplam kaç adet hizmet vardır?

Cevap :

Resim
PS Windows Servis Yöneticisi v1.00
Verily We have granted thee a manifest Victory
Fetih Suresi - 1.Ayet


Resim
Resim
Cevapla

“Genel Programlama” sayfasına dön