Uygulamamda oldukça sınırlı bir PowerShell desteği eklemeye çalışıyorum: Kullanıcı tanımlı bir PowerShell betiğini periyodik olarak çalıştırma ve herhangi bir çıktı gösterme yeteneği (ve sonuçta) istiyorum İlerleme bildirimi ve kullanıcı istemi isteklerini ele alabilme. Kullanıcı komut kabuk ben konak içinden o kendisini yapmazsa, uzaktan erişim veya aynı anda birden çok komut dosyalarını çalıştırmak için yeteneği Ben interaktif destek değil ihtiyaç komut satırı-stili yapmak , ya da (Sanırım). Komut dosyası zaman uyumsuz olarak veya bir arka plan iş parçacığı üzerinde çalıştırmak isteyecek ve muhtemelen bazı başlangıç değişkenleri ve belki de bir cmdlet ile kabuğunu tohumlamak istiyorum, ancak bu özellik olası olduğu gibi "fantezi" olarak.Barındırma PowerShell: PowerShell vs. Runspace vs. RunspacePool vs. Pipeline
Ben MSDN documentation about writing host application code okuma, ancak mutluRunspace
veya RunspacePool
veya Pipeline
bir PowerShell
nesne oluşturmak veya nasıl açıklarken, yaklaşık biri üzerinde bu yaklaşımların herhangi seçsin hiçbir belirti yok ettik bir diğeri.
Ben ben bu ikisinden birine aşağı olduğumu düşünüyorum ama yaklaşım daha iyi bir yapılacağı hakkında bazı geribildirim gibi ettik:
PowerShell shell = PowerShell.Create();
shell.AddCommand(/* set initial state here? */);
shell.AddStatement();
shell.AddScript(myScript);
shell.Invoke(/* can set host! */);
ya:
Runspace runspace = RunspaceFactory.CreateRunspace(/* can set host and initial state! */);
PowerShell shell = PowerShell.Create();
shell.Runspace = runspace;
shell.AddScript(myScript);
shell.Invoke(/* can set host here, too! */);
(Gerekli PSHost
türetilmiş sınıf yöntemlerinden biri EnterNestedPrompt()
olup, çalıştırdığım kullanıcı tanımlı komut dosyasının çağrı yapıp yapamayacağını bilmiyorum. Eğer yapabilirse, o zaman sorumlu olurum " yeni iç içe geçmiş bir giriş loo p "(as per here) ... eğer yukarıda hangi yolu etkileyecekse, bunu bilmek de iyi olur.)
Teşekkürler!
Aslında bir taşıyıcıya ihtiyaç yoktur. Sadece PS bağlı bir ev sahibi var olmadığını denetlemek için bir yol yoktur vs. Salt ana bilgisayar,-ana bilgisayar yaz çağrıları önlemek için emin olun, ama şu an bunu hatırlamıyorum. –
Bir PSHost _need_ olmayabilir, ama ben benim durumumda biri _want_ ... Ben göstermek isterler ara sıra tanısal mesajınız var kullanıcı tanımlı komut bekliyorum. (Bunu daha net hale getirmek için orijinal gönderiyi düzenleyeceğim.) – JaredReisinger