2013-03-23 19 views
7

Windows Server 2008'de, WMI ve Win32_ServerFeature sınıfını kullanarak sunucu Özellikleri ve Rollerini program aracılığıyla algılayabilirsiniz. Windows ServerSunucu Sunucularının Windows Server 2012'de yüklü olduğunu algılama

2012 Win32_ServerFeature sınıf kaldırıldı ve Bildiğim kadarıyla ben Win32_ServerFeature sınıf Server Manager Deployment tarafından yerine olmuştur ve nasıl hiçbir örnekler için vardır söyleyebilirim 2012.

yeni özellikler ve rolleri içermemektedir kullan.

İnternette arama yaptım ve üzerinde hiçbir bilgi olmayan dokümanlar bulunamıyor.

Herhangi bir yardım memnuniyetle karşılanacaktır, 4.5 Dot Net Framework Uygulamasında C# geliştiriyorum.

cevap

8

Bunu yapmayı düşünürüm, bir parça PowerShell betiği kullanmak ve daha sonra C# içindeki çıktıyla "oynatmaktır".

aşağıdaki öğeye başvuru eklerseniz C# PowerShell komut dosyaları ile etkileşim mümkün olacak: ifadelerini kullanarak aşağıdaki

Ardından kullanmak

System.Management.Automation Bu özelliğin ayrıntılarını incelemek ve bunlarla etkileşime girmek için:

Aşağıdaki

private string RunScript(string scriptText) 
{ 
// create a Powershell runspace then open it 

Runspace runspace = RunspaceFactory.CreateRunspace(); 
runspace.Open(); 

// create a pipeline and add it to the text of the script 

Pipeline pipeline = runspace.CreatePipeline(); 
pipeline.Commands.AddScript(scriptText); 

// format the output into a readable string, rather than using Get-Process 
// and returning the system.diagnostic.process 

pipeline.Commands.Add("Out-String"); 

// execute the script and close the runspace 

Collection<psobject /> results = pipeline.Invoke(); 
runspace.Close(); 

// convert the script result into a single string 

StringBuilder stringBuilder = new StringBuilder(); 
foreach (PSObject obj in results) 
{ 
stringBuilder.AppendLine(obj.ToString()); 
} 

return stringBuilder.ToString(); 
} 

Sonra aşağıdaki PowerShell komutunu geçirebilirsiniz: komut bir PowerShell komut almak ve her öğe ile okunabilir bir dize döndürür güzel bir alt yaratacaktır (bu durumda, bir rol) yeni bir satır olarak eklenen senaryoya ve şöyle çıktı receieve:

import-module servermanager | get-windowsfeature > C:\output.txt 
: komut işleme sona erdiğinde

RunScript("Import-module servermanager | get-windowsfeature"); 

Alternatif olarak sadece bir C# komut dosyasından bu PowerShell komutunu çalıştırın ve sonra C# çıktısı metin dosyasını okuyabilir

Bu yardımcı olur umarız!

+0

Evet. PS'de oldukça kolay anladım. Ben aslında her şeyi rearchitect ve Powershell içinde yapmak için cazip değilim .. Varsayım ben bir Exe dosyasına aşağı derleyebilirsiniz .. –

+1

Evet, neden olmasın! Yukarıdaki prosedür ile C# üzerinden herhangi bir PowerShell komutunu pipetleyebilir ve yine de iyi bir GUI seçeneği olabilir, ayrıca ağ/OS ile etkileşim seçenekleri PowerShell ile neredeyse sonsuzdur. PowerShell ile elde edemediğiniz herhangi bir şey, sadece C# 'un tek bitlerini kullanırsınız. Yine de bu işe yaradı! – chrismason954

İlgili konular