2011-09-07 6 views
5

के साथ फ़ाइलों को दूरस्थ रूप से ज़िपित करना मैं एक सिस्टम में रिमोट करने और ज़िप फ़ाइलों को अनजिप करने में सक्षम होना चाहता हूं और प्रक्रिया पूर्ण होने पर प्रक्रिया सिग्नल कर सकता हूं। स्टार्ट-प्रोसेस PowerShell से सिंक्रनाइज़ 7z.exe चलाने के लिए -wait पैरामीटर के साथ काम करता है। जब मैं इसे उसी आदेश को दूरस्थ रूप से चलाने के लिए invoke-command के साथ गठबंधन करने का प्रयास करता हूं, तो यह प्रतीक्षा पैरामीटर का सम्मान नहीं करता है और मेरा मानना ​​है कि यह प्रक्रिया को मार रहा है क्योंकि यह जल्दी से लौटता है और कभी भी ज़िप फ़ाइल नहीं बनाता है।PowerShell स्टार्ट-प्रोसेस और invoke-command

[string]$sevenZip = "C:\Program Files\7-zip\7z.exe" 
[Array]$arguments = "a", $zipFilename, $dirToZip; 

"Starting $sevenZip with $arguments" 
Start-Process $sevenZip "$arguments" -Wait 
#blocks and waits for zip file to complete 

मैं मूल रूप से PSCX लिखने ज़िप & विस्तार-संग्रह की कोशिश की, लेकिन बाद 64-बिट .NET 4.0 विन्यास के साथ संगत नहीं है। तो अब मैं कमांड लाइन के माध्यम से 64-बिट 7z.exe को कॉल करने का प्रयास कर रहा हूं। मुझे कोई त्रुटि नहीं मिल रही है। पावरशेल नौकरी को चलने वाले राज्य के रूप में रिपोर्ट करता है और फिर पूरा करता है, और कोई ज़िप फ़ाइल नहीं बनाई जाती है।

Invoke-Command -ComputerName localhost -FilePath 'C:\Scripts\ZipIt.ps1' -ArgumentList 'd:\TestFolder','d:\promote\TestFile.7z' -AsJob 

किसी भी मदद या पॉइंटर्स की सराहना करें।

धन्यवाद, ग्रेगरी

उत्तर

5

प्रारंभ प्रक्रिया तुल्यकालिक यहां इस्तेमाल किया जाएगा के बाद से, मैं इसे से बचने की सलाह देते हैं और सिर्फ 7z.exe निष्पादन का उपयोग करें:

$sevenZip = "C:\Program Files\7-zip\7z.exe" 
&$sevenZip a $zipFileName $dirToZip 

स्वाभाविक रूप से 7zip जब तक अपनी स्क्रिप्ट को अवरुद्ध कर देगा ऐसा करने से अपना काम पूरा करता है।

+0

धन्यवाद Efran। वह काम किया! मैंने एक स्मृति समस्या में भाग लिया लेकिन 150 एमबी डिफ़ॉल्ट से बढ़कर इसे ठीक कर दिया। winrm सेट winrm/config/winrs '@ {{MaxMemoryPerShellMB =' "255'" '} –

+0

आपका स्वागत है, @ क्या! –

0

7z.exe का उपयोग सीधे चाल करेगा। यदि आप पाते हैं क्या आप इस्तेमाल कर सकते हैं unzip एक पासवर्ड से सुरक्षित फ़ाइल की जरूरत है:

$sevenZip = "C:\Program Files\7-zip\7z.exe" 
&$sevenZip e -y "-o$dirToUnZip" -psomepassword $dirToUnZip\$zipFileName