আমার দুটি পাওয়ারশেল ফাইল রয়েছে। a.ps1 এবং b.ps1।
A.ps1 এর একটি কেন্দ্র পয়েন্টে আমি b.ps1 এ কোড এক্সিকিউট করা শুরু করতে এবং a.ps1 স্ক্রিপ্টটি শেষ করতে চাই।
উভয় ফাইল একই ফোল্ডারে অবস্থিত তা বিবেচনা করে কীভাবে করবেন?
আমার দুটি পাওয়ারশেল ফাইল রয়েছে। 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
যেভাবে আপনি অন্যান্য প্রোগ্রামগুলিকে ডাকছেন
আমি এটি অন্য একটি নিবন্ধ থেকে পেয়েছি তবে এটি এখানে প্রয়োগ করতে পারে: ধন্যবাদ ( https://stackoverflow.com/users/3905079/briantist )
প্রথমত, আপনি যদি কোনও একক সেশনে রিমোট মেশিনে একাধিক কল করতে চান তবে প্রথমে একটি পিএসএসেশন তৈরি করুন:
$session = New-PSSession -ComputerName $ComputerName
তারপরে পরবর্তী সমস্ত কলগুলিতে সেই সেশনটি ব্যবহার করুন:
Invoke-Command -Session $session -File $filename
Invoke-Command -Session $session -ScriptBlock {
# Some code
Done তারপরে আপনার কাজ শেষ হয়ে গেলে সেশনটি বন্ধ করুন:
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)
(আমার এটি)