मेरे पास दो PowerShell फाइलें हैं। a.ps1 और b.ps1।
A.ps1 में केंद्र बिंदु पर मैं b.ps1 में कोड निष्पादित करना शुरू करता हूं और a.ps1 स्क्रिप्ट को समाप्त करता हूं।
यह कैसे विचार करें कि दोनों फाइलें एक ही फ़ोल्डर में स्थित हैं?
मेरे पास दो PowerShell फाइलें हैं। a.ps1 और b.ps1।
A.ps1 में केंद्र बिंदु पर मैं b.ps1 में कोड निष्पादित करना शुरू करता हूं और a.ps1 स्क्रिप्ट को समाप्त करता हूं।
यह कैसे विचार करें कि दोनों फाइलें एक ही फ़ोल्डर में स्थित हैं?
जवाबों:
क्या यह ठीक है अगर b.ps1 को एक नई पावर शेल प्रक्रिया में निष्पादित किया जाता है? यदि ऐसा है तो आपको जो वर्णन करना चाहिए, वह निम्नलिखित है।
Invoke-Item (start powershell ((Split-Path $MyInvocation.InvocationName) + "\b.ps1"))
"इनवोक-एक्सप्रेशन" एक ही प्रक्रिया में निष्पादित होता है लेकिन b.ps1 की समाप्ति की प्रतीक्षा करता है।
A.ps1 में,
& .\b.ps1
जिस तरह से आप अन्य कार्यक्रमों को आमंत्रित करते हैं
मुझे यह एक अलग लेख से मिला है, लेकिन यह यहां लागू हो सकता है: धन्यवाद ( /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)
(वह मेरा है)
अपनी वर्तमान निर्देशिका को संदर्भित करने के लिए जादू चर $ PSScriptRoot का उपयोग करें। फिर एम्परसेंड के साथ स्क्रिप्ट बी को कॉल करें ("कॉल ऑपरेटर"):
$script = $PSScriptRoot+"\b.ps1"
& $script
यदि आप A के दायरे में B से चर रखना चाहते हैं, तो आप Dot सोर्सिंग ऑपरेटर का उपयोग करके स्क्रिप्ट चला सकते हैं:
$script = $PSScriptRoot+"\b.ps1"
. $script