sc.exe, Get-Service ve bu
İkisi de zaten makinede ve ikisi de yararlı kalacak. Bu sayfa, nerede durduklarıyla ilgili - ve hâlâ daha iyi yanıt olduklarını açıkça söylüyor.
Her birinin durduğu yer
sc.exe
Hizmet denetim yöneticisinin bildiği hemen her şeye erişebilir ve nasıl soracağınız konusunda size hiçbir şey söylemez. Sözdizimi doksanlardan kalmadır - sc config X start= auto; burada eşittir işaretinden sonraki boşluk zorunludur ve yokluğu, ne demek istediğinizi yapmamanın sessiz bir başarısızlığıdır.
Aynı anda tek bir öğe hakkında yanıt verir. Filtreleme yok, bir betiğin ayrıştırıcı yazmadan ayrıştırabileceği bir çıktı yok ve önizleme yok: sc stop ya çalışır ya da bir sayı döndürür.
Get-Service ve *-Service cmdlet'leri
Düzgün nesneler, bir ardışık düzen ve yüzeysel bir görünüm. Windows'la gelen Windows PowerShell 5.1'de Get-Service bir hizmetin hangi hesapla çalıştığını ya da açıklamasını göstermez. PowerShell 7 ikisini de ve başlatma yolunu da gösterir ve ayrıca kurulur.
Stop-Service -Force "ona bağlı bir şey olsa bile" demektir - bağımlı hizmetleri durdurur ve size bunu önceden değil, sonradan söyler.
Aynı sorular, üç yolla
| Soru | Makinede olanla | Burada |
|---|---|---|
| Çalışması gereken ve çalışmayan nedir | Get-Service | Where-Object { $_.StartType -eq 'Automatic' -and $_.Status -ne 'Running' } |
bws list --query "start:auto !status:running" |
| Hangi hizmetlerin imzasız yürütülebilir dosyası var | Her başlatma yolunu oku, çöz, her birinde Get-AuthenticodeSignature çağır - bir komut değil, bir betik |
bws list --query "signed:no" |
| Bunu durdurmak neleri indirir | sc enumdepend X, sonra listeyi oku ve kendin karar ver |
bws stop X --dry-run --dependents, yani çalışacak plan |
| Geçen haftadan beri ne değişti | Toplayıcıyı kendiniz yazmadıysanız hiçbir şey | bws snapshot diff before.json --live |
| Başlangıç türünü kim değiştirdi ve ne zaman | Get-WinEvent -FilterHashtable @{ LogName = 'System'; Id = 7040 }, sonra her olayın iletisini oku |
bws history Spooler, ilk satırı günlüğün ne kadar geriye gittiğini söyler |
| Makine tarafından okunabilir çıktı | PowerShell'den nesneler, sc.exe'den metin |
Her komutta --json, standart çıktıda, uyarılar standart hatada |
Bu aracın bir hizmet konusunda sc.exe ile anlaşmazlığa düştüğü yer, burada bir hatadır. Test paketinin bir bölümü ikisini de üzerinde çalıştığı makinede çalıştırır ve öğe öğe karşılaştırır; ikisi arasındaki bir fark, bir sorun kaydına koyabileceğiniz en yararlı şeydir.
Elinizdekini ne zaman kullanmaya devam etmeli
- Bir kez dokunacağınız bir makinedesiniz. İkisi de zaten orada ve hiçbir şeyin bir ilkeden geçmesi gerekmiyor.
- Hesabı, başlatma yolunu ya da kurtarma eylemlerini değiştirmeniz gerekiyor.
sc.exeüçünü de yapar. Bu araç hesabı ve başlatma yolunu gösterir ve ikisini de değiştirmez; kurtarma eylemlerini yalnızca bir süreci sonlandırmadan önce uyarmak için okur. - Bir hizmet oluşturmanız ya da silmeniz gerekiyor.
sc createvesc delete. Burada değil, bilerek. - Zaten bir PowerShell ardışık düzeninin derinindesiniz.
bws list --json,ConvertFrom-Jsonaracılığıyla nesne olarak geri gelir; yani ardışık düzenin yerini almak yerine ona katılır.
Birlikte, onların yerine değil
Bu makinede ne yanlış sorusunu yanıtlayan araç ile tek bir ayarı değiştiren araçlar aynı araç değildir. Soruyu burada sorun, planı burada okuyun ve onu yürütmek için istediğinizi kullanın - plan, aynı şeyi isteyen komut satırını yazdırır ve o satır kopyalanmak için tasarlanmıştır.