2009-12-30 11 views
6

में बिल्ड इवेंट के रूप में PowerShell स्क्रिप्ट चलाने के लिए सबसे आसान/सबसे छोटा आदेश PowerPhell से प्रारंभ करना। मैं वीएस में अपनी पोस्ट बिल्ड इवेंट्स में डॉस .bat फ़ाइलों को चला रहा था और PowerShell में स्नातक करना चाहता था। बैट फाइलें आसान थीं ... CALL something.bat। मैं ऐसा करने के लिए एक PowerShell PS1 फ़ाइल और मेरे परीक्षण और erroring के साथ की कोशिश की मेरा पीछा करने के लिए मिल गया है (पहली बात यह है कि काम किया ... पहले सभी साधारण चीजें करने की कोशिश की, स्पष्ट रूप से):विजुअल स्टूडियो

powershell -command "& {(powershell '$(ProjectDir)test.ps1')}" 

वहाँ एक है इसका शॉर्टेंड संस्करण? मुझे लगता है कि वास्तव में मुझे परेशान करने वाली एकमात्र चीज शक्तियों को निष्पादन योग्य करने के लिए अनावश्यक कॉल है, लेकिन शायद यह केवल इसलिए आवश्यक है क्योंकि .ps1 फाइलें मेरी मशीन पर डिफ़ॉल्ट रूप से नोटपैड में खुलती हैं (और मुझे अन्य प्रणालियों पर तैनाती के लिए अनावश्यकता रखना चाहिए ताकि मैं ' मैं फ़ाइल प्रकार के लिए डिफ़ॉल्ट प्रोग्राम पर निर्भर नहीं हूं)। वैसे भी, अगर यहां अनावश्यक अनावश्यकता है, तो मुझे जानना अच्छा लगेगा।

मैं पावरशेल के लिए बहुत नया हूं, इसलिए किसी भी संबंधित अंतर्दृष्टि की हमेशा सराहना की जाती है।

उत्तर

3

MSN के अनुसार, यह अच्छा काम करना चाहिए:

powershell.exe "$(ProjectDir)test.ps1" 

संपादित करें: मिले this

powershell.exe "& ""$(ProjectDir)test.ps1""" 
+0

मुझे पता है ... और यह सही मायने रखता है। लेकिन, जब भी मैं इसे फिर से कोशिश करता हूं, यह काम नहीं करता है। – Rich

+0

@Rich: मुझे एक और लेख मिला, कृपया इसे आजमाएं। – Bobby

+0

हां। मैंने उस दूसरे को देखा और कोशिश की, लेकिन मुझे कुछ गलत टाइप करना होगा क्योंकि यह अभी ठीक काम करता है। धन्यवाद। – Rich

4

मैं अतीत में एक के बाद निर्माण घटना के रूप में PowerShell का उपयोग किया है; अब मैं psake (सुपर सरल बिल्ड सिस्टम) या सिर्फ कच्चे पावरशेल स्क्रिप्ट का उपयोग करने की ओर झुकता हूं। पोस्ट-बिल्ड इवेंट गन्दा हो जाते हैं, अनावश्यक होते हैं, और बिल्ड स्क्रिप्ट में एक ही चीज़ करने पर कुछ फायदे हैं।

संपादित करें: आप अभी भी एक के बाद निर्माण स्क्रिप्ट का उपयोग कर में रुचि रखते हैं, मैं पहले here

1

सवाल मैं किसी भी MSDN जांच नहीं की उत्तर दिया है, यह केवल काम करता है:

powershell $(ProjectDir)test.ps1 

btw। PowerShell के दोनों संस्करणों के लिए रन विशेषाधिकार सेट करना न भूलें - 32-बिट और 64-बिट।

0

मैं इन सबसे सुरुचिपूर्ण powershell $(ProjectDir) यहाँ समाधान विस्तृत के साथ की खुश था, लेकिन मैं/जब शुरू करने WebAdministration के प्रारंभ-WebAppPool और स्टॉप-WebAppPool

के माध्यम से आईआईएस अनुप्रयोग ताल रोक समस्याओं में भाग गया मैं के साथ बेहतर सफलता मिली:

%WINDIR%\SysNative\WindowsPowerShell\v1.0\powershell.exe 

यानी

%WINDIR%\SysNative\WindowsPowerShell\v1.0\powershell.exe -Command "$(ProjectDir)Powershell\Stop-AppPool.ps1" 

कारण निकला आर्किटेक्चर के मिश्रण करने के लिए, विस्तृतके रूप में(अनुभाग में "दृश्य स्टूडियो में कार्यों को स्वचालित करने के लिए Windows PowerShell स्क्रिप्ट का उपयोग"):

यह महत्वपूर्ण है कि आप% WINDIR की आभासी पथ का उपयोग% \ SysNative और नहीं सी की वास्तविक पथ: \ Windows \ System32। इसका कारण है कि विजुअल स्टूडियो 2010 एक 32-बिट एप्लिकेशन है जिसे Powerhell.exe के 64-बिट संस्करण को सफलतापूर्वक लोड करने के लिए Microsoft.SharePoint.Powershell स्नैप-इन लोड करने की आवश्यकता है।

संबंधित मुद्दे