2010-08-08 6 views
30

मैं पावरहेल रीमोटिंग का उपयोग करके किसी अन्य कंप्यूटर से कनेक्ट कर रहा हूं, वास्तव में अच्छा। बहुत कुछ कर सकते हैं, लेकिन मैं एक फाइल कैसे संपादित करूं?पावरहेल रीमोटिंग सत्र (पावरहेल) में फ़ाइल को संपादित करने के लिए कैसे करें

पी एस सी: \ Users \ guutlee>दर्ज-PSSession -ComputerName appprod

[appprod]: पी एस सी: \ Users \ guutlee \ दस्तावेज़>सीडी \ MyApp

[ एपप्रोड]: पीएस सी: \ myapp>

रिमोट मशीन पर फ़ाइल पर फ़ाइल संपादक खोलने के लिए मैं क्या कर सकता हूं?

[appprod]: पुनश्च C: \ MyApp> संपादित app.config

तो संपादित करें "फ़ाइल नाम" सिर्फ PowerShell.exe से या powershell_ise.exe

से लटका, लगता है केवल एक चीज जिसे मैं सोच सकता हूं वह वापस पंसेशन से बाहर है और "प्रारंभ \ webprod \ c $ \ inetpub \ myapp \ web.config" शुरू होता है, जो दृश्य स्टूडियो खोल देगा।

[appprod]: पुनश्च C: \ MyApp> बाहर निकलने

पी एस सी: \ Users \ guutlee>शुरू \ agobuild \ ग $ \ MyApp \ app.config

पी एस सी: \ उपयोगकर्ता \ guutlee>दर्ज-PSSession -ComputerName appprod

[appprod]: पी एस सी: \ Users \ guutlee \ दस्तावेज़>सीडी \ MyApp

[appprod]: पुनश्च C: \ MyApp>myapp.exe

बेशक इस के साथ

मैं, फ़ाइल को फिर से खोजने के लिए उम्मीद है कि ग $ शेयर उपलब्ध है और उपलब्ध है, और पुनः कनेक्ट मेरा पंसेशन और जब मैं आगे बढ़ना चाहता हूं तो मेरी कामकाजी निर्देशिका को फिर से ढूंढें। यह बहुत सुरुचिपूर्ण प्रतीत नहीं होता है।

मैं शायद लपेट सकता है इस एक समारोह है, लेकिन एक कठिन समय है कि चारों ओर मेरे सिर लपेटकर होने ..

तो कैसे मैं आसानी से एक फाइल एक दूरस्थ PSSession साथ संपादित करूं?

संपादित

kbrimington पद मुझे ssh को -X विकल्प के बारे में सोच मिला है। शायद पावरहेल सत्रों के लिए खिड़की वाले ऐप्स को मूल विंडोिंग वातावरण पर अग्रेषित करने में सक्षम होने के लिए एक शानदार बात होगी ...

लेकिन फिर भी मैं फ़ाइल को संपादित करने में खुश हूं।\ Users \ मेरेडिथ>दर्ज-PSSession -ComputerName appprod

[appprod]: पी एस सी

संपादित

vi, Emacs, cmd और संपादित

पी एस सी का उपयोग कर परीक्षण \ guutlee दस्तावेज़>सी \ \ उपयोगकर्ता: \ guutlee \ \ Users दस्तावेज: \ vim \ vim72 \ vim filename.txt

[appprod]: पी एस सी: >C: \ Emacs-23.2 \ बिन \ emacs.exe -nw filename.txt

emacs.exe: Emacs: मानक इनपुट एक tty नहीं है

+ CategoryInfo   \: NotSpecified: (emacs: standard input is not a tty:String) [], RemoteException 

+ FullyQualifiedErrorId \: NativeCommandError 

[appprod]: पी एस सी: \ उपयोगकर्ता \ guutlee \ दस्तावेज़>cmd

माइक्रोसॉफ्ट विंडोज [संस्करण 6.1.7600]

कॉपीराइट (c) 2009 Microsoft Corporation। सर्वाधिकार सुरक्षित।

C: \ Users \ guutlee \ दस्तावेज़>

[appprod]: पी एस सी: \ Users \ guutlee \ दस्तावेज़>संपादित filename.txt

vi और संपादित लटका (Control- सी एक शीघ्र वापस)

cmd रन, एक त्वरित उत्पादन प्राप्त करने के लिए, लेकिन तुरंत वापस powershell शीघ्र

Emacs त्रुटि पैदा करता है करने के लिए बाहर निकलता है (मानक इनपुट एक नहीं है tty)

संपादित

येरेद फ़ाइल खींच पता चलता वापस स्थानीय रूप से संपादित करने के लिए। मैं pssessions का उपयोग कर के बजाय UNCs को कॉपी करने के लिए अपने जवाब अलंकृत (शायद यह उसका इरादा है)

पुनश्च C: \ Users \ मेरेडिथ>आह्वान-कमान -Session $ ps -ScriptBlock {मिल-सामग्री c:/inetpub/MyApp/web.config}> web.config

संपादित वेब config

पी एस सी: \ Users \ मेरेडिथ>मिल-सामग्री web.config | आह्वान-कमान -Session $ ps -ScriptBlock {सेट सामग्री c: /inetpub/myapp/web.config}

संभावित हम किसी भी दिशा में आह्वान-आदेश, दूरदराज के लिए स्थानीय या दूरदराज के वापस करने के लिए चला सकते हैं स्थानीय।

+0

यह किसी फ़ाइल को आसानी से संपादित करने का उत्तर नहीं देता है, लेकिन लटकने वाले व्यवहार की व्याख्या है, इसलिए मैं एक टिप्पणी के रूप में पोस्ट करूंगा। आपका सत्र लटकता प्रतीत होता है क्योंकि एक दूरस्थ सत्र आपके लिए विंडो किए गए अनुप्रयोगों को वर्चुअलाइज़ नहीं करेगा; अर्थात, यदि आप टर्मिनल सेवाओं के माध्यम से जुड़े थे तो आपका संपादन सत्र दूरस्थ डेस्कटॉप में आपके लिए दृश्यमान होगा। – kbrimington

+0

यह इंटरैक्टिव कंसोल ऐप्स के साथ या तो बहुत अच्छा काम नहीं करेगा। – x0n

उत्तर

1

कंसोल-आधारित संपादक जैसे VI या Emacs का उपयोग करके इसे आज़माएं। मेरी टिप्पणी में, मुझे लगता है कि समस्या यह है कि संपादन कमांड एक खिड़की वाले अनुप्रयोग से जुड़ा हुआ है, जो बदले में, दूरस्थ सत्र में वर्चुअलाइज्ड नहीं होता है।

+0

मेरा मानना ​​है कि edit.com कंसोल संपादक है और खिड़की एप्लिकेशन नहीं है। मैंने emacs इंस्टॉल किया था, (ठीक है, मैं पहले से ही emacs स्थापित किया था, शक्तियों के साथ मेरी यूनिक्स जड़ों से दूर पाने की कोशिश कर रहा है :))। यह आउटपुट > [एपप्रोड]: पीएस सी: \ emacs-23.2>। \ bin \ emacs.exe -nw। \ README.W32 > emacs.exe: emacs: मानक इनपुट एक tty > + नहीं है श्रेणीइन्फो: निर्दिष्ट नहीं किया गया: (emacs: मानक इनपुट एक tty नहीं है: स्ट्रिंग) [ >], रिमोटएक्सप्शन > + पूरी तरह से योग्यता त्रुटि: NativeCommandError – guutlee

+0

बमर। क्या छठी आपको कहीं भी ले जाती है? मैं रिमोट सत्र से 'cmd' चला सकता हूं, इसलिए शायद मैं आशावादी था कि अन्य कंसोल ऐप्स भी वही काम करेंगे। – kbrimington

+0

मैं एक दूरस्थ सत्र से cmd भाग गया, यह भाग गया, लेकिन तुरंत शक्तियों के लिए बाहर निकल गया। क्या यह अलग व्यवहार है जिसे आप देख रहे हैं? मैंने वीआई की कोशिश की, यह सिर्फ संपादन की तरह लटका हुआ था। मेरे परीक्षण ऊपर संक्षेप में हैं। – guutlee

3

क्या आप स्थानीय रूप से फ़ाइल को खींच नहीं सकते हैं, इसे संपादित कर सकते हैं और इसे पोस्ट कर सकते हैं? मुझे पता है कि यह कठिन और सुरुचिपूर्ण नहीं है लेकिन ऐसा लगता है कि संपादकों को वर्तमान में दूरस्थ सत्रों के साथ समस्या है।

जैसे,

Get-Content REMOTE\Filename.txt > LOCAL\Filename.txt 

स्थानीय स्तर पर अपने परिवर्तन करें और फिर

Set-Content -path REMOTE\Filename.txt -value (get-content LOCAL\Filename.txt) 

संपादित

इसके अलावा

यदि आप केवल कुछ मामलों आप बहुत आसानी से कर सकते ले रही हैं।

जैसे,

Get-Content REMOTE\Filename.txt | foreach-object { $_ -replace "OLD", "NEW" } | Set-Content REMOTE\Filename.txt 
+0

रिमोट शेयर पर स्थानीय संपादक खोलने के मेरे प्रारंभिक विचार का एक अच्छा विकल्प। लेकिन यह एक स्थानीय शेयर में प्रतिलिपि का उपयोग करके निर्भरता को उलट देता है और फिर फिर स्थानीय संपादक, और एक प्रतिलिपि मूल स्थान पर वापस ले जाता है। मैं वास्तव में एक फ़ाइल शेयर पर निर्भरता खोना चाहता हूं ताकि मैं केवल WinRM का खुलासा कर सकूं और कोई अतिरिक्त सेवाएं नहीं। – guutlee

+0

आप किस प्रकार के संपादन कर रहे हैं? क्या यह एक पैटर्न का पालन करता है? –

+0

अधिकतर विज्ञापन-प्रसार, मुझे लगता है; शायद एक HTML फ़ाइल में पाठ का एक अनुच्छेद जोड़ना; हो सकता है कि एक वेब ऐप में कनेक्शन स्ट्रिंग अपडेट हो; शायद कुछ कार्यक्षमता जोड़ने के लिए एक powerhell स्क्रिप्ट बदल रहा है। – guutlee

0

मैं सब से ऊपर सुझाव और यहां तक ​​कि अन्य माइक्रोसॉफ्ट संबंधित समाधान की कोशिश, लेकिन कोई भी जिस तरह से आप और मैं चाहता हूँ काम करता है - "पूर्ण इंटरैक्टिव और उत्तरदायी खोल।" - यदि आप वास्तव में एसएसएच अनुभव चाहते हैं कि यूनिक्स उपयोगकर्ताओं के समय की भिक्षा से है तो मैं आपको एक एसएसएच सर्वर स्थापित करने की सिफारिश करता हूं। मैं व्यक्तिगत रूप से फ्रीसेड का उपयोग करता हूं, आप इसे यहां http://www.freesshd.com और इसे कॉन्फ़िगर करने के निर्देश यहां देख सकते हैं http://www.windowsnetworking.com/articles_tutorials/install-SSH-Server-Windows-Server-2008.html। निर्देशों में जो कुछ भी कहता है, उसे बनाने के बाद आपको अपने कंप्यूटर से कनेक्ट करने के लिए केवल किसी भी एसएसएच क्लाइंट ऐप का उपयोग करने की आवश्यकता होती है और पावरहेल पूर्ण इंटरैक्टिव का उपयोग करने की आवश्यकता होती है। विम, एडिट, एमएक्स या जो भी आप फ़ाइल को संपादित करने के लिए उपयोग करते हैं, बिना किसी समस्या के काम करने जा रहा है।

मैं आपको प्रोत्साहित करने के लिए प्रोत्साहित करता हूं कि एक वास्तविक इंटरैक्टिव खोल प्रदान करने की कोशिश कर रहा है (मैं इसे पहले ही खो चुका हूं, टी_T) प्राप्त करने के लिए psremoting, telnet, winrs, psexec के साथ अपना समय बर्बाद नहीं करता हूं। एसएसएच सर्वर को अपने आप के लिए देखें।

+0

पावरहेल सत्रों को स्टेटलेस बनने के लिए डिज़ाइन किया गया है, वे कभी पूर्ण नहीं थे इंटरैक्टिव और उत्तरदायी खोल '। * निक्स शैल और पावरहेल के फायदे हैं, और यह नुकसान में से एक होता है। उस ने कहा, इसके आसपास के तरीकों के रूप में कुछ अच्छे सुझाव दिए गए हैं। –

3

बहुत खुदाई के बाद, मुझे कुछ ऐसा लगता है जो पावरहेल सहायता दस्तावेज़ में प्रासंगिक लगता है। powershell शीघ्र, प्रकार में:

:

कि प्रदर्शित किया जाता है मदद फ़ाइल के बहुत अंत में about_remote_troubleshooting मदद, वहाँ एक अनुभाग हकदार 'समस्या निवारण अनुत्तरदायी व्यवहार', जिसमें कहा गया है

समस्या निवारण अनुत्तरदायी व्यवहार

यह खंड दूरस्थ समस्याओं किसे एक कमांड को रोकने की चर्चा 10 Windows PowerShell प्रॉम्प्ट की वापसी को पूरा करने और रोकने या देरी।

एक आदेश में दखल देने कैसे इस तरह के एक यूजर इंटरफेस, सांत्वना अनुप्रयोग जो इनपुट के लिए संकेत, और कंसोल अनुप्रयोगों कि Win32 कंसोल एपीआई का उपयोग के साथ कार्यक्रमों के रूप में


कुछ देशी Windows प्रोग्राम,, नहीं है Windows PowerShell दूरस्थ होस्ट में सही ढंग से काम करें।

जब आप इन प्रोग्राम का उपयोग करते हैं, तो आप अप्रत्याशित व्यवहार, ऐसे को आउटपुट, आंशिक आउटपुट या रिमोट कमांड के रूप में देख सकते हैं जो पूर्ण नहीं है। एक अनुत्तरदायी प्रोग्राम समाप्त करने के लिए, CTRL + C. टाइप करें त्रुटियों की सूचना देने के लिए, स्थानीय होस्ट और दूरस्थ सत्र में "$ त्रुटि" टाइप करें।

इस प्रकार यह गैर-जीयूआई कंसोल अनुप्रयोगों जैसे कि वीआईएम दुर्भाग्यवश काम नहीं करेगा। कोई भी इस पर मामला क्यों हो सकता है और/या यह पर काम किया जा सकता है, इस पर थोड़ा प्रकाश डालने की परवाह है? अगर मैं पावरहेल रिमोटिंग पर विम का उपयोग कर सकता हूं तो मैं वास्तव में इसे प्यार करता हूं।

+2

मैं कुछ प्रकाश डाल सकता हूं क्यों: विंडोज़ पर कंसोल आईओ नियंत्रण कोड स्ट्रीम करने की तुलना में डिवाइस (आउट-ऑफ-बैंड सिग्नलिंग) पर ioctls करने के करीब है। Http://msdn.microsoft.com/en-us/library/windows/desktop/ms682088%28v=vs.85%29.aspx पर API को कैसे संरचित किया गया है, इस पर एक नज़र डालें। VT100 इम्यूलेशन काम करता है (एम्बेडेड एस्केप अनुक्रम इन-बैंड) जैसी चीज़ों के साथ इसकी तुलना करें। PowerShell I/O के लिए स्ट्रीमिंग आधार पर काम करता है, न कि कंसोल पर। – user314104

1
PowerShell_ISE.exe \\REMOTE\File.txt 

लोड और सीधे फ़ाइल को संपादित और इसे वापस दूरस्थ कंप्यूटर से एक कदम में बचाने के लिए और, अपने कमांड लाइन के बाद से, आसान इसे प्रयोग कार्यों के निर्माण के लिए होगा। समस्याओं को साझा करने के आसपास नहीं मिलता है, लेकिन मुझे सबसे आसान तरीका मिला है।

14

यदि आप पावरहेल 5 का उपयोग कर रहे हैं, तो आप पीएसईडीआईटी नामक कमांड का उपयोग कर सकते हैं। यह केवल आईएसई से काम करता है।

  1. तो पहला, खुला PowerShell आईएसई
  2. दर्ज-PSSession
  3. का उपयोग कर फिर PsEdit 'फ़ाइल नाम'

का उपयोग कर रिमोट फाइल किया जाएगा फ़ाइल को संपादित दूरस्थ कंप्यूटर से फिर खुला दूरस्थ सत्र आपके (स्थानीय) आईएसई विंडो में एक नए टैब में खोला गया।

असल में मुझे यह जवाब this SO question के टिप्पणी अनुभाग से मिला, लेकिन मुझे लगता है कि अगर मैं इसे उत्तर के रूप में पोस्ट करता हूं तो यह दूसरों के लिए सहायक होगा।

-1

मुझे एसएसएच पर पावरशेल पर आसानी से काम करने के लिए नैनो मिला। यह Chocolatey में उपलब्ध है, इसलिए आप बस कर सकते हैं ...

choco install nano -y 

तो फिर तुम सिर्फ कर सकते हैं ...

nano filename 
0

पहले, स्थानीय मशीन (LOCALTEMPFOLDER) पर एक अस्थायी फ़ोल्डर बना। फिर, निम्न फ़ंक्शन का उपयोग करें:

function vimrem {param([parameter(position=0,mandatory=$true)][string]$Session, [parameter(position=1,mandatory=$true)][string]$Path) 

$TempFile = split-path -path $Path -leaf 

copy-item -fromsession $Session -path $Path -destination LOCALTEMPFOLDER\$TempFile 

vim $LOCALTEMPFOLDER\$TempFile 

copy-item -tosession $Session -path LOCALTEMPFOLDER\$TempFile -destination $Path 

remove-item -path LOCALTEMPFOLDER\$TempFile 

} 

यह काम करना चाहिए, लेकिन आप इस फ़ंक्शन का उपयोग करने से पहले एक इंटरैक्टिव सत्र छोड़ देंगे।

+1

आपको अपने उत्तर से पहले उदाहरण के प्रश्नों को बताने की आवश्यकता नहीं है। बस जवाब और किसी भी साथ स्पष्टीकरण। – AfroThundr