আপনি যদি এমন কিছু চান যা ভবিষ্যতের জন্য কার্যকর হবে তবে আমি সম্ভবত রেজিস্ট্রি সন্ধানের চেষ্টা থেকে পরিষ্কার হয়ে উঠব। এসকিউএল সার্ভারের জন্য আমবাতগুলি বছরের পর বছরগুলিতে কিছুটা পরিবর্তিত হয়েছে এবং এটি চালিয়ে যাওয়া কষ্টকর হতে পারে।
এর সাথে সম্পর্কিত পদ্ধতিটি SqlDataSourceEnumerator
মাঝে মাঝে স্বচ্ছ হয় এবং যদিও আমি এটি ব্যবহার করবো তবে নেটওয়ার্কে উদাহরণ রয়েছে তার কোনও দৃ concrete় প্রমাণ নয়। আমি বিশ্বাস করি এটি এসকিউএল ব্রাউজার পরিষেবায়ও নির্ভর করে যা বেশিরভাগ সময় আমি অক্ষম দেখি।
আমি ডাব্লুএমআই ক্লাসটি ব্যবহার করব win32_Service
। আমি এটি ব্যবহার করি কারণ এটি Get-Service
সেমিডলেট এর চেয়ে পরিষেবা সম্পর্কে আরও তথ্য সরবরাহ করে।
আমি সাধারণত সমস্ত কিছু ফাংশন হিসাবে লিখি কারণ আপনি এটি সমস্যা সমাধানের জন্য কেবল দৈনিক চেক বা পরিষেবার যাচাই করতে করতে ব্যবহার করতে পারেন।
function Get-ServiceStatus ([string[]]$server)
{
foreach ($s in $server)
{
if(Test-Connection $s -Count 2 -Quiet)
{
Get-WmiObject win32_Service -Computer $s |
where {$_.DisplayName -match "SQL Server"} |
select SystemName, DisplayName, Name, State, Status, StartMode, StartName
}
}
}
আমি সাধারণত যা ব্যবহার করি তার চেয়ে এটি কিছুটা বেশি তবে যদি অন্য কেউ আসে এবং এটি ব্যবহার করতে চায় তবে। Test-Connection
সমান ping myserver
একটি ডস প্রম্পট এবং -Quiet
পতাকা কেবল শুধু এটা হয়েছে আসতে true
বা false
। এটি 4 টি পিংসে ডিফল্ট হবে সুতরাং সেটিংস -Count 2
কেবল এটির পরিবর্তে দু'বার করে।
ভেরিয়েবল [string[]]$server
হ'ল এমন একটি পদ্ধতি যা জানাতে ব্যবহৃত হয় যা $server
সার্ভার নামের একটি অ্যারে গ্রহণ করবে। সুতরাং এই ফাংশনটির একটি উদাহরণ কল এর মতো দেখতে পারে:
Get-ServiceStatus -server (Get-Content C:\temp\MyServerList.txt)
অথবা
$servers = 'MyServer1','MyServer2','MyServer3'
Get-ServiceStatus -server $servers
সম্পাদনা
একটি উল্লিখিত মন্তব্য উপরোক্ত সার্ভার সরবরাহ করা হচ্ছে তালিকার উপর নির্ভর করে। আমাকে সেই তালিকাটি সরবরাহ করা হয়নি এমন ক্ষেত্রে আপনার কাছে কয়েকটি অন্যান্য বিকল্প রয়েছে।
যদি আমি একটি অ্যাক্টিভ ডিরেক্টরি পরিবেশে থাকি তবে আমি সেমিডলেট সহ ডোমেনের সমস্ত সার্ভারের একটি তালিকা টানতে পাওয়ারশেলের অ্যাক্টিভ ডিরেক্টরী মডিউলটি ব্যবহার করতে Get-ADComputer
পারি। সতর্কতার একটি শব্দ যদিও নিশ্চিত করুন যে আপনি -Filter
বড় ডোমেনগুলিতে ভাল ব্যবহার করছেন ।
আমি সহজেই এমন কোনও নেটওয়ার্কের একটি আইপি স্ক্যানও করেছি (অনুমোদনের সাথে) যা আমাকে আইপি ঠিকানাগুলি দেয় যেখানে পোর্ট 1433 খোলা পাওয়া গেছে। আমি সেই আইপি তালিকাটি নেব এবং Get-ADComputer
ডোমেন কম্পিউটারের নামগুলি সন্ধান করতে ব্যবহার করব , তারপরে উপরের ফাংশনে এটি পাস করব
উদাহরণ:
Import-Module ActiveDirectory
$sList = $ipList | Select -ExpandProperty IP
$results = foreach ($i in $sList) {
Get-ADComputer -Filter 'IPv4Address -eq $i' -Properties * | Select Name}
Get-ServiceStatus -server $results
সম্পাদনা
প্রস্তাবিত সম্পাদনাটি Write-Verbose
চেষ্টা / ক্যাচ ব্লকটি ব্যবহারের জন্য এবং যুক্ত করার জন্য প্রস্তাবিত সম্পাদনাটি কার্যকর হতে পারে এবং বেশিরভাগ ক্ষেত্রে একটি কোড অনুশীলন হয়, আমি এই অতিরিক্ত কোড বা কার্যকারিতা যুক্ত করার জন্য এই ফাংশনটি ব্যবহার করতে চায় এমন ব্যক্তির উপর ছেড়ে দেব। কেবল এগিয়ে যাওয়ার জন্য একটি প্রাথমিক উদাহরণ দেওয়ার চেষ্টা করছি trying SystemName
প্রকৃত সার্ভারের নাম ফিরিয়ে দেওয়ার তথ্য অন্তর্ভুক্ত করার জন্য আমি আউটপুটটিতে সম্পত্তি যুক্ত করেছি , অন্যান্য ফাংশনে এটি করুন সাধারণত এটি একবারে একাধিক সার্ভারের জন্য ব্যবহার করবেন না যাতে এটি আমার মন কেড়ে যায়।