मैंने सी # में एक एसएसएच सर्वर लिखा है और मैंने सोचा कि यह शेल के रूप में पावरहेल को हुक करने के लिए साफ होगा। मैंने इसे ठीक से काम करने के लिए 2 विधियों का प्रयास किया है लेकिन दोनों सही से बहुत दूर हैं। यहां मैंने जो कोशिश की है:क्या नकली विंडोज कंसोल एपीआई संभव है?
- powerhell.exe लॉन्च करें और इसके std (in/out) को रीडायरेक्ट करें। यह अच्छी तरह से काम नहीं करता है क्योंकि powerhell.exe का पता लगाया जाता है कि इसे पुनर्निर्देशित किया गया है, बदलता है यह व्यवहार है। और भी, यह stdid पर इनपुट डेटा की अपेक्षा करता है, आदेश नहीं। तो यह कमांड पढ़ने के लिए कंसोल एपीआई का उपयोग करता है।
- "रैपर" एप्लिकेशन में होस्ट पावरहेल। इसका का लाभ शक्तियों के लिए "कंसोल" कार्यान्वयन प्रदान करने में सक्षम है ( PSHostRawUserInterface के माध्यम से)। यह बेहतर काम करता है, लेकिन आप अभी भी कमांड (ज्यादातर वास्तविक कंसोल एप्लिकेशन) जैसे "... | अधिक" का आह्वान कर सकते हैं, जो कंसोल एपीआई का उपयोग करने में सक्षम होने के लिए की अपेक्षा करते हैं, और बाद में रैपर के कंसोल से पढ़ने का प्रयास करें प्रक्रिया।
तो मैं क्या करना चाहता हूं कि नियमित कंसोल इनपुट/आउटपुट फ़ंक्शंस को प्रतिस्थापित करने वाले कार्यों का एक सेट है जो अनुप्रयोगों को कंसोल करते हैं, इसलिए मैं उन्हें संभाल सकता हूं। लेकिन यह एक खराब डिजाइन विचार (आईएमओ) होने के बिंदु पर बल्कि कठोर लगता है।
अभी मैं मूल/पिनवोक कार्यों जैसे WriteConsoleInput के साथ प्रासंगिक कुंजी भेजकर कंसोल में हेरफेर करने के विचार पर हूं। मैं इकट्ठा करता हूं कि इस तरह कंसोल को नकली करना संभव हो सकता है। लेकिन मैं नहीं देखता कि मैं कैसे कंसोल पर क्या होता हूं "पढ़ता हूं"।
यह भी ध्यान रखें, यह एक सेवा है, इसलिए अधिमानतः इसे वास्तविक कंसोल विंडो नहीं बननी चाहिए, हालांकि शायद विंडोज सत्र 0 में जो दिखाई नहीं देगी और इससे कोई फर्क नहीं पड़ता।
ठीक है, मैं अपने एंड्रॉइड मोबाइल डिवाइस से अपने एसएसएच तक पहुंचना चाहता हूं। मैंने इसके लिए एक असली पावरहेल क्लाइंट नहीं देखा है। इस परियोजना के लिए एक निश्चित "बस अच्छा मजा" हिस्सा है। सिगविन के लिए ... अच्छी तरह से मेरे पास इसके साथ समस्याएं हैं (शायद तर्कहीन)। –
क्या आप इसे एक [PowerShellInside] (http: //www.powershellinside) आज़माएं।com/powershell/ssh/download.aspx)। यह एक कनेक्शन मुक्त संस्करण मौजूद है। – JPBlanc
हम, एक इंटरस्टेस्टिंग खोज, मैं इसे देख लूंगा। मुझे आश्चर्य है कि उन्होंने समस्या को हल कैसे किया। –