পাওয়ারশেল স্ক্ল্যাসবারে আটকে আছে


14

আমি কিছুটা পাওয়ারশেল নবাগত।

সুতরাং আমি একটি স্ক্রিপ্ট তৈরি করেছি যা Restore-SqlDatabaseকমান্ডলেট ব্যবহার করে । যাইহোক, আমি এটি চালানোর পরে, এটি পাওয়ারশেলকে আলাদা অবস্থায় ছেড়ে যায়।

PS D:\theFolder\> .\myRestoreDatabaseScript.ps1
... snip does the work ...
PS SQLSERVER:\>

আমি কীভাবে পাওয়ারশেলটিকে "স্বাভাবিক" ইন্টারফেসে ফিরে যেতে পারি?

এছাড়াও, PS SQLSERVERউপসর্গ কি বলা হয়? আমি এর জন্য গুগলে চেষ্টা করেছি এবং খালি এসেছি।

উত্তর:


21

এমএস নিবন্ধ থেকে এসকিউএল সার্ভার পাওয়ারশেল

S একটি এসকিউএল সার্ভার সরবরাহকারী, যা ফাইল সিস্টেমের পাথের মতো একটি সাধারণ নেভিগেশন প্রক্রিয়া সক্ষম করে। আপনি ফাইল সিস্টেমের পাথের অনুরূপ পাথ তৈরি করতে পারেন, যেখানে ড্রাইভটি এসকিউএল সার্ভার পরিচালন অবজেক্ট মডেলের সাথে সম্পর্কিত এবং নোডগুলি বস্তু মডেল শ্রেণীর উপর ভিত্তি করে। এরপরে আপনি কমান্ড প্রম্পট উইন্ডোতে ফোল্ডারগুলিকে যেভাবে নেভিগেট করেন তার অনুরূপ পাথগুলিতে নেভিগেট করতে সিডি এবং ডির মতো পরিচিত আদেশগুলি ব্যবহার করতে পারেন । আপনি পথের নোডগুলিতে ক্রিয়া সম্পাদন করতে অন্য কমান্ডগুলি, যেমন রেন বা ডেল ব্যবহার করতে পারেন ।

এই বোঝার মতো সরবরাহকারী থাকা আপনাকে এসকিউএল সার্ভারের সাথে একইভাবে আচরণ করতে দেয় যেভাবে আপনি কোনও ড্রাইভ (চিঠি) ব্যবহার করেন।

সুতরাং সম্ভবত আপনার কোডের কোথাও আপনি CDএসকিউএল সার্ভার সরবরাহকারী ( cd sqlserver:) এ সরিয়ে নিয়েছেন ।

আপনি যদি d:\thefolderবিশেষভাবে আপনি ব্যবহার করতে চান তবে ফিরে পেতে চাইতেন cd d:\thefolder

আপনি যদি সম্পন্ন করার পরে যেখানে শুরু করেছিলেন সেখানে ফিরে যেতে চান, তবে আপনাকে সম্ভবত বর্তমান ডিরেক্টরি অবস্থানটি স্ক্রিপ্টের শুরুতে পরিবর্তনশীল হিসাবে সংরক্ষণ করতে হবে এবং তারপরে cdআবার পরিবর্তন করতে স্ক্রিপ্টের শেষে এটি ব্যবহার করতে হবে মূল ডিরেক্টরি

অথবা আপনি @ অ্যালারকের মন্তব্যে প্রস্তাবিত হিসাবে , বর্তমান অবস্থানটি সঞ্চয় এবং পুনরুদ্ধার করতে push-locationএবং সেমিডলেট ব্যবহার করতে পারেন pop-location


3
আপনার বর্তমান ডিরেক্টরিটি কোনও ভেরিয়েবলে সংরক্ষণ করতে হবে না; push-locationআমদানির আগে sqlpsএবং আমদানির pop-locationপরে ব্যবহার করুন এবং আপনি যেতে ভাল।
aloc

@ অ্যাল্রোক আমি বুঝতে পেরেছিলাম সম্ভবত এরকম কিছু ছিল তবে আমি সে সম্পর্কে অবগত ছিলাম না। :) হ্যান্ডি
ʜιᴇcʜιᴇ007

7

এটি আমার পক্ষে কাজ করে বলে মনে হচ্ছে:

Invoke-Sqlcmd -InputFile "C:\MyFolder\TestSqlCmd.sql" | out-null

1

C:সাধারণ (যেমন সি: \>) প্রম্পটে ফিরে যেতে কমান্ড প্রম্পটে টাইপ করুন।

কেবলমাত্র তথ্যের জন্য, সাধারণ সি: prom> প্রম্পট থেকে এসএমও প্রম্পটটি (যেমন পিএস এসকিউএলএসভার:> ) ট্রিগার করে থাকতে পারে , যখন আপনি আউট-নাল ছাড়াই এসএমও অ্যাসেম্বলিটি লোড করেন (আউট-নলটি সেমিডলেট দ্বারা ফিরে আসা আউটপুটকে দমন করে out )।

অন্য কথায়, এসএমও অ্যাসেম্বলিটি লোড করার সময় অযৌক্তিকভাবে এসএমও প্রম্পটে প্রবেশ করা এড়াতে কেবল নীচের মত আউট-নলটি পাইপ করুন :

[Reflection.Assembly]::LoadWithPartialName("Microsoft.SqlServer.Smo") | Out-Null

মাইক্রোসফ্ট যেমন লোডবিথ পার্টিশিয়ালনেম () পদ্ধতি অবমূল্যায়ন করেছে , পরিবর্তে অ্যাড- টাইপটি ব্যবহার করুন :

Add-Type -Path "your_path_to_assembly\Smo.dll"

দ্রষ্টব্য: আপনার সমাবেশ / dll এ যাওয়ার জন্য - নীচে হিসাবে গেটএ এসেম্বলিস () পদ্ধতিটি ব্যবহার করুন :

[System.AppDomain]::CurrentDomain.GetAssemblies() | ? {$_.Location -match 'Smo.dll'}

আছে HTH।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.