एक .ps1 फ़ाइल से .ps1 को कैसे निष्पादित करें?


14

मेरे पास दो PowerShell फाइलें हैं। a.ps1 और b.ps1।

A.ps1 में केंद्र बिंदु पर मैं b.ps1 में कोड निष्पादित करना शुरू करता हूं और a.ps1 स्क्रिप्ट को समाप्त करता हूं।

यह कैसे विचार करें कि दोनों फाइलें एक ही फ़ोल्डर में स्थित हैं?


फिलहाल मैं बिना किसी सफलता के पीएस 'पाथ फाइल' का उपयोग कर रहा हूं
जिब्बो

जवाबों:


4

क्या यह ठीक है अगर b.ps1 को एक नई पावर शेल प्रक्रिया में निष्पादित किया जाता है? यदि ऐसा है तो आपको जो वर्णन करना चाहिए, वह निम्नलिखित है।

Invoke-Item (start powershell ((Split-Path $MyInvocation.InvocationName) + "\b.ps1"))

"इनवोक-एक्सप्रेशन" एक ही प्रक्रिया में निष्पादित होता है लेकिन b.ps1 की समाप्ति की प्रतीक्षा करता है।


26

A.ps1 में,

& .\b.ps1

जिस तरह से आप अन्य कार्यक्रमों को आमंत्रित करते हैं


2

मुझे यह एक अलग लेख से मिला है, लेकिन यह यहां लागू हो सकता है: धन्यवाद ( /programming//users/3905079/bantantist )

सबसे पहले, यदि आप एक ही मशीन में एक सत्र में कई कॉल करना चाहते हैं, तो पहले एक PSSession बनाएँ:

$session = New-PSSession -ComputerName $ComputerName

उसके बाद सभी सत्रों में उस सत्र का उपयोग करें:

Invoke-Command -Session $session -File $filename
Invoke-Command -Session $session -ScriptBlock {
# Some code

} फिर सत्र पूरा होने पर बंद करें:

Remove-PSSession -Session $session

यह भी अगर आपको नहीं पता है कि स्क्रिप्ट सही होगी, लेकिन पता है कि आपकी स्क्रिप्ट शुरू होती है तो आप ऐसा कर सकते हैं:

$strInst = Get-ChildItem -Path $PSScriptRoot -Filter Import-Carbon.ps1 -recurse -ErrorAction SilentlyContinue -Force | Select Directory
Invoke-Experssion (start Powershell ($strinst\Import-Carbon.ps1)

(वह मेरा है)


0

अपनी वर्तमान निर्देशिका को संदर्भित करने के लिए जादू चर $ PSScriptRoot का उपयोग करें। फिर एम्परसेंड के साथ स्क्रिप्ट बी को कॉल करें ("कॉल ऑपरेटर"):

$script = $PSScriptRoot+"\b.ps1"
& $script

यदि आप A के दायरे में B से चर रखना चाहते हैं, तो आप Dot सोर्सिंग ऑपरेटर का उपयोग करके स्क्रिप्ट चला सकते हैं:

$script = $PSScriptRoot+"\b.ps1"
. $script
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.