কম্পিউটার

PowerShell দিয়ে এক্সেল ফাইলে ডেটা পড়ুন এবং লিখুন

এই নিবন্ধে আমরা দেখাব কিভাবে এক্সেল ওয়ার্কশীট থেকে সরাসরি পাওয়ারশেল স্ক্রিপ্ট থেকে ডেটা পড়তে এবং লিখতে হয়। কম্পিউটার, সার্ভার, অবকাঠামো, অ্যাক্টিভ ডিরেক্টরি ইত্যাদিতে ইনভেন্টরি এবং বিভিন্ন রিপোর্ট তৈরি করতে আপনি PowerShell-এর সাথে Excel ব্যবহার করতে পারেন।

আপনি একটি পৃথক COM অবজেক্ট (কম্পোনেন্ট অবজেক্ট মডেল) এর মাধ্যমে PowerShell থেকে এক্সেল শীট অ্যাক্সেস করতে পারেন। এর জন্য কম্পিউটারে এক্সেল ইনস্টল করতে হবে।

এক্সেল সেলে কীভাবে ডেটা অ্যাক্সেস করা যায় তা দেখানোর আগে, এক্সেল ফাইলে উপস্থাপনা স্তরগুলির আর্কিটেকচার বোঝার মূল্য। নিচের চিত্রটি এক্সেল অবজেক্ট মডেলে 4টি নেস্টেড প্রেজেন্টেশন লেয়ার দেখায়:

  • অ্যাপ্লিকেশন লেয়ার - চলমান এক্সেল অ্যাপ নিয়ে কাজ করে;
  • ওয়ার্কবুক লেয়ার – একাধিক ওয়ার্কবুক (এক্সেল ফাইল) একই সময়ে খোলা হতে পারে;
  • ওয়ার্কশীট স্তর – প্রতিটি XLSX ফাইলে একাধিক শীট থাকতে পারে;
  • রেঞ্জ লেয়ার – এখানে আপনি নির্দিষ্ট সেল বা সেল পরিসরে ডেটা অ্যাক্সেস করতে পারবেন।

PowerShell দিয়ে এক্সেল ফাইলে ডেটা পড়ুন এবং লিখুন

পাওয়ারশেল ব্যবহার করে এক্সেল স্প্রেডশীট থেকে ডেটা কীভাবে পড়তে হয়?

কর্মচারীদের একটি তালিকা সম্বলিত এক্সেল ফাইলে ডেটা অ্যাক্সেস করতে পাওয়ারশেল কীভাবে ব্যবহার করবেন তার একটি সহজ উদাহরণ দেখে নেওয়া যাক।

PowerShell দিয়ে এক্সেল ফাইলে ডেটা পড়ুন এবং লিখুন

প্রথমে, COM অবজেক্ট ব্যবহার করে আপনার কম্পিউটারে Excel অ্যাপ (অ্যাপ্লিকেশন লেয়ার) চালান:
$ExcelObj = New-Object -comobject Excel.Application

কমান্ডটি চালানোর পরে, পটভূমিতে আপনার কম্পিউটারে এক্সেল চালু হবে। এক্সেল উইন্ডো দেখাতে, দৃশ্যমান পরিবর্তন করুন COM অবজেক্টের বৈশিষ্ট্য:

$ExcelObj.visible=$true

আপনি নিম্নরূপ সমস্ত এক্সেল অবজেক্ট বৈশিষ্ট্য প্রদর্শন করতে পারেন:

$ExcelObj| fl

তারপর আপনি একটি এক্সেল ফাইল খুলতে পারেন (একটি ওয়ার্কবুক):

$ExcelWorkBook = $ExcelObj.Workbooks.Open("C:\PS\corp_ad_users.xlsx")

প্রতিটি এক্সেল ফাইলে বিভিন্ন ওয়ার্কশীট থাকতে পারে। চলুন বর্তমান এক্সেল ওয়ার্কবুকে ওয়ার্কশীটের তালিকা প্রদর্শন করি:

$ExcelWorkBook.Sheets| fl Name, index

PowerShell দিয়ে এক্সেল ফাইলে ডেটা পড়ুন এবং লিখুন

তারপর আপনি আপনার পছন্দসই একটি শীট খুলতে পারেন (এর নাম বা সূচক দ্বারা):

$ExcelWorkSheet = $ExcelWorkBook.Sheets.Item("CORP_users")

আপনি এই কমান্ডটি ব্যবহার করে বর্তমান (সক্রিয়) এক্সেল ওয়ার্কশীটের নাম পেতে পারেন:

$ExcelWorkBook.ActiveSheet | fl Name, Index

PowerShell দিয়ে এক্সেল ফাইলে ডেটা পড়ুন এবং লিখুন

তারপর আপনি এক্সেল ওয়ার্কশীটের সেল থেকে মান পেতে পারেন। বর্তমান এক্সেল ওয়ার্কশীটে সেলের মান পেতে আপনি বিভিন্ন পদ্ধতি ব্যবহার করতে পারেন:একটি পরিসর, একটি ঘর, একটি কলাম বা একটি সারি ব্যবহার করে। নীচে একই ঘর থেকে ডেটা কীভাবে পেতে হয় তার উদাহরণগুলি দেখুন:

$ExcelWorkSheet.Range("B4").Text
$ExcelWorkSheet.Range("B4:B4").Text
$ExcelWorkSheet.Range("B4","B4").Text
$ExcelWorkSheet.cells.Item(4, 2).text
$ExcelWorkSheet.cells.Item(4, 2).value2
$ExcelWorkSheet.Columns.Item(2).Rows.Item(4).Text
$ExcelWorkSheet.Rows.Item(4).Columns.Item(2).Text

PowerShell দিয়ে এক্সেল ফাইলে ডেটা পড়ুন এবং লিখুন

PowerShell ব্যবহার করে এক্সেল স্প্রেডশীটে সক্রিয় ডিরেক্টরি ব্যবহারকারীর তথ্য রপ্তানি করা হচ্ছে

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

AD ব্যবহারকারীর বৈশিষ্ট্য সম্পর্কে তথ্য পেতে, আমরা PowerShell অ্যাক্টিভ ডিরেক্টরি মডিউল থেকে Get-ADUser cmdlet ব্যবহার করব।

# Importing Active Directory module into PowerShell session
import-module activedirectory
# Open an Excel workbook first:
$ExcelObj = New-Object -comobject Excel.Application
$ExcelWorkBook = $ExcelObj.Workbooks.Open("C:\PS\corp_ad_users.xlsx")
$ExcelWorkSheet = $ExcelWorkBook.Sheets.Item("CORP_Users")
# Get the number of filled in rows in the XLSX worksheet
$rowcount=$ExcelWorkSheet.UsedRange.Rows.Count
# Loop through all rows in Column 1 starting from Row 2 (these cells contain the domain usernames)
for($i=2;$i -le $rowcount;$i++){
$ADusername=$ExcelWorkSheet.Columns.Item(1).Rows.Item($i).Text
# Get the values of user attributes in AD
$ADuserProp = Get-ADUser $ADusername -properties telephoneNumber,department,mail|select-object name,telephoneNumber,department,mail
# Fill in the cells with the data received from AD
$ExcelWorkSheet.Columns.Item(4).Rows.Item($i) = $ADuserProp.telephoneNumber
$ExcelWorkSheet.Columns.Item(5).Rows.Item($i) = $ADuserProp.department
$ExcelWorkSheet.Columns.Item(6).Rows.Item($i) = $ADuserProp.mail
}
# Save the XLS file and close Excel
$ExcelWorkBook.Save()
$ExcelWorkBook.close($true)

ফলস্বরূপ, এক্সেল ফাইলে প্রতিটি ব্যবহারকারীর জন্য AD তথ্য সম্বলিত কলাম যোগ করা হয়েছে।

PowerShell দিয়ে এক্সেল ফাইলে ডেটা পড়ুন এবং লিখুন

পাওয়ারশেল এবং এক্সেল ব্যবহার করে একটি প্রতিবেদন তৈরির আরেকটি উদাহরণ বিবেচনা করা যাক। ধরুন, আপনি সমস্ত ডোমেন সার্ভারে প্রিন্ট স্পুলার পরিষেবার অবস্থা সম্পর্কে একটি এক্সেল রিপোর্ট করতে চান৷

অ্যাক্টিভ ডিরেক্টরিতে সার্ভারের একটি তালিকা পেতে আপনি Get-ADComputer cmdlet ব্যবহার করতে পারেন এবং সার্ভারে একটি পরিষেবার অবস্থা দূরবর্তীভাবে চেক করতে WinRM Invoke-Command cmdlet ব্যবহার করতে পারেন।

# Create an Excel object
$ExcelObj = New-Object -comobject Excel.Application
$ExcelObj.Visible = $true
# Add a workbook
$ExcelWorkBook = $ExcelObj.Workbooks.Add()
$ExcelWorkSheet = $ExcelWorkBook.Worksheets.Item(1)
# Rename a worksheet
$ExcelWorkSheet.Name = 'Spooler Service Status'
# Fill in the head of the table
$ExcelWorkSheet.Cells.Item(1,1) = 'Server Name'
$ExcelWorkSheet.Cells.Item(1,2) = 'Service Name'
$ExcelWorkSheet.Cells.Item(1,3) = 'Service Status'
# Make the table head bold, set the font size and the column width
$ExcelWorkSheet.Rows.Item(1).Font.Bold = $true
$ExcelWorkSheet.Rows.Item(1).Font.size=15
$ExcelWorkSheet.Columns.Item(1).ColumnWidth=28
$ExcelWorkSheet.Columns.Item(2).ColumnWidth=28
$ExcelWorkSheet.Columns.Item(3).ColumnWidth=28
# Get the list of all Windows Servers in the domain
$computers = (Get-ADComputer -Filter 'operatingsystem -like "*Windows server*" -and enabled -eq "true"').Name
$counter=2
# Connect to each computer and get the service status
foreach ($computer in $computers) {
$result = Invoke-Command -Computername $computer –ScriptBlock { Get-Service spooler | select Name, status }
# Fill in Excel cells with the data obtained from the server
$ExcelWorkSheet.Columns.Item(1).Rows.Item($counter) = $result.PSComputerName
$ExcelWorkSheet.Columns.Item(2).Rows.Item($counter) = $result.Name
$ExcelWorkSheet.Columns.Item(3).Rows.Item($counter) = $result.Status
$counter++
}
# Save the report and close Excel:
$ExcelWorkBook.SaveAs('C:\ps\Server_report.xlsx')
$ExcelWorkBook.close($true)

আপনি বিভিন্ন পরিস্থিতিতে এক্সেল অ্যাক্সেস করতে PowerShell ব্যবহার করতে পারেন। উদাহরণস্বরূপ, আপনি এক্সেল থেকে AD ডেটা আপডেট করার জন্য সহজ সক্রিয় ডিরেক্টরি প্রতিবেদন তৈরি করতে বা পাওয়ারশেল স্ক্রিপ্ট তৈরি করতে পারেন৷

উদাহরণস্বরূপ, আপনি আপনার এইচআর বিভাগের একজন কর্মচারীকে এক্সেলে ব্যবহারকারী রেজিস্টার রাখতে বলতে পারেন। তারপর একটি PowerShell স্ক্রিপ্ট এবং Set-ADUser ব্যবহার করে cmdlet, কর্মচারী স্বয়ংক্রিয়ভাবে AD তে ব্যবহারকারীর তথ্য আপডেট করতে পারে (শুধুমাত্র কর্মচারীকে AD ব্যবহারকারীর বৈশিষ্ট্যগুলি পরিবর্তন করার অনুমতি দিন এবং পাওয়ারশেল স্ক্রিপ্ট কীভাবে চালাতে হয় তা দেখান)। এইভাবে আপনি প্রাসঙ্গিক ফোন নম্বর, চাকরির শিরোনাম এবং বিভাগ সহ একটি আপ-টু-ডেট ঠিকানা বই রাখতে পারেন।


  1. কিভাবে এক্সেলে ডেটা রপ্তানি করবেন (2টি সহজ উপায়)

  2. এক্সেল এ CSV ফাইল কিভাবে পড়তে হয় (4টি দ্রুততম উপায়)

  3. কিভাবে এক্সএমএল ডেটা ম্যাপিং হিসাবে এক্সেল ফাইল সংরক্ষণ করবেন (সহজ পদক্ষেপ সহ)

  4. এক্সেলে CSV ফাইল ফরম্যাটিং (2টি উদাহরণ সহ)