2009-12-08 6 views
7

जो मैं चाहता हूं वह एक फ़ाइल है जिसे मैं डबल-क्लिक कर सकता हूं जो psake का उपयोग करके आवश्यक निर्माण प्रक्रिया चलाएगा।बैच फ़ाइल से psake का उपयोग कैसे करें?

मैं psake और PowerShell के लिए नया हूं इसलिए नम्र :-)।

फ़ाइल 1: Build.bat

PowerShell -ExecutionPolicy Unrestricted -File .\Build.ps1 %1 

फ़ाइल 2: Build.ps1

Import-Module .\psake.psm1 
Invoke-psake .\BuildTasks.ps1 $args 

फ़ाइल 3: BuildTasks.ps1

क्या मैं अब 3 फ़ाइलें हैं

task default -depends Verify, Joe 

task Verify { 
    write-host "hello from Verify!" 
} 

task Joe { 
    write-host "hello from Joe" 
} 

क्या विलय करने के लिए वैसे भी है Build.ps1 और BuildTasks.ps1 को एक फ़ाइल में?

उत्तर

8

आप

powershell -Command "& {Import-Module .\psake.psm1; Invoke-psake .\BuildTasks.ps1 %*}" 

जो build.ps1 फ़ाइल से छुटकारा मिलता है के साथ ऐसा करने में सक्षम होना चाहिए।

+0

जोहानिस तरह दिखता है। बहुत बहुत धन्यवाद। बस एक ठीक है। $ 1 के बजाय% 1 आवश्यक है। पावरशेल-निष्पादन पॉलिसी अप्रतिबंधित- कमांड "और {आयात-मॉड्यूल। \ Psake.psm1; Invoke-psake। \ BuildTasks.ps1% 1}" –

+0

ईप, ठीक है आप हैं। माफ़ कीजिये। – Joey

1

साके एक पावरहेल स्क्रिप्ट "psake.ps1" के साथ आता है जो आपके लिए कॉल लपेटता है। ऐसा लगता है कि:

import-module .\psake.psm1 
invoke-psake @args 
remove-module psake 

तो अपने बैच स्क्रिप्ट

powershell {path-to-module}\psake.ps1 .\buildTasks.ps1 
+0

आपने जो psake.ps1 फ़ाइल का उल्लेख किया है, वह इनवॉक-साइक कॉल में कार्यों को पारित करने के लिए ठीक काम करता है लेकिन जिस क्षण आप हैशटेबल्स (द-पैरामीटर और -प्रोपर्टीज तर्क) पास करने का प्रयास करते हैं, यह विफल हो जाता है। कम से कम मैं इसे काम करने में सक्षम नहीं हूं। – Jimit

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