Tải bản đầy đủ (.pdf) (46 trang)

Kiểm tra SQL Server bằng Windows PowerShell pdf

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1.86 MB, 46 trang )

Kiểm tra SQL Server bằng Windows PowerShell – Phần 1

Loạt bài này chúng tôi sẽ giới thiệu cho các bạn về các phương
pháp và các thủ tục để kiểm tra trạng thái hiện hành của hệ điều
hành, các trường hợp của SQL Server và cơ sở dữ liệu,… bằng
Windows PowerShell.

Thay vì sử dụng Vbscript, các file bat, hay các thực thi sql
client,… chúng tôi sẽ giới thiệu cho các bạn về sức mạnh bên
của Windows PowerShell trong vấn đề kiểm tra trạng thái của
SQL Servers.
Các điều kiện tiên quyết
• Cài đặt .Net 2.0
• Trên máy khách, bạn cần cài đặt Windows PowerShell 1.0.
• Đăng nhập của bạn cần có quyền tạo các thư mục và file trong máy khách.
Trước khi đi vào kiểm tra thực SQL Server, chúng tôi muốn giới thiệu một chút nền tảng và xây
dựng các thư mục, thư viện,…
Phần cuối của loạt bài này, sẽ có một thư viện Powershell với nhiều hàm được dùng làm nguồn
cho bất kỳ kịch bản PowerShell nào. Một , nhiều hoặc tất cả các hàm này đều có thể được gọi từ
bất kỳ kịch bản PowerShell nào khi thư viện được dùng làm nguồn.
Bước 1
Khởi chạy Windows PowerShell bằng cách thực thi lệnh bên dưới (Hình 1.0)
%SystemRoot%\system32\WindowsPowerShell\v1.0\powershell.exe

Hình 1.0: Khởi chạy PowerShell
Simpo PDF Merge and Split Unregistered Version -
Bước 2
Hãy tạo một thư mục bằng cách sử dụng lệnh PowerShell bên dưới. Thư mục này sẽ được dùng
chuyên dụng cho các kịch bản, các thư viện và các hàm của PowerShell có liên quan đến việc
kiểm tra SQL Server. Thực thi lệnh được cho bên dưới (xem hình 1.1)
New-Item -Path C:\ -Name CheckSQLServer -Type directory


Bạn có thể thấy kết quả của việc thực hiện lệnh bên dưới. Về cơ bản, thư mục CheckSQLServer
đã được tạo thành công.

Hình 1.1 Tạo thư mục mới
Bước 3
Hãy điều hướng đến thư mục CheckSQLServer và sau đó tạo các file khác bằng lệnh PowerShell
sau (xem trong hình 1.3)
set-location C:\CheckSQLServer
Notepad CheckSQL_Lib.ps1
Notepad CheckSQLServer.ps1
Notepad Pinghost.ps1
Bạn có thể thấy rằng vị trí được thay đổi thành C:\CheckSQLServer và cũng đã mở ba cửa sổ
notepad để có thể soạn thảo các file CheckSQL_Lib.sql, CheckSQLServer.Ps1 và PingHost.ps1.

Hình 1.2: Tạo kịch bản và thư vịện PowerShell
Lưu ý: Notepad là một trình soạn thảo mà chúng tôi sử dụng cho việc soạn thảo các kịch bản
PowerShell. Bạn hòan toàn có thể tùy chọn các trình soạn thảo khác ưa thích đối với cá nhân
bạn.
Simpo PDF Merge and Split Unregistered Version -
Bước 4
Đánh hoặc copy/paste đoạn mã sau vào trình soạn thảo notepad đã mở PingHost.ps1 như dưới
đây (xem hình 1.3)
Function Pinghost ([string] $Hostname )
{
$status=get-wmiobject win32_pingstatus -Filter "Address='$Hostname'" | Select-Object
statuscode
if($status.statuscode -eq 0)
{write-host $Hostname is REACHABLE -background "GREEN" -foreground "BLACk"}
else
{write-host $Hostname is NOT reachable -background "RED" -foreground "BLACk"}

}

Hình 1.3: File kịch bản PingHost.ps1
Lưu file Pinghost.ps1 và thoát khỏi notepad.
Bước 5
Đánh hoặc copy/paste đoạn mã sau vào trình soạn thảo notepad đã mở CheckSQL_Lib.ps1 như
dưới đây (xem hình 1.4)
#Source all the functions relate to CheckSQL
. ./PingHost.ps1

Hình 1.4: CheckSQL_Lib.ps1
Lưu file CheckSQL_Lib.ps1 và thoát khỏi notepad.
Simpo PDF Merge and Split Unregistered Version -
Lưu ý: CheckSQL_Lib.ps1 này sẽ được cập nhật với nguồn của các kịch bản mới như
PingHost.PS1
Về cơ bản nguồn sẽ load các hàm được liệt kê trong file kịch bản và làm cho nó hiện hữu trong
toàn bộ session của PowerShell.
Bước 6
Đánh hoặc copy/paste đoạn mã sau vào trình soạn thảo notepad đã mở CheckSQLServer.ps1 như
dưới đây (xem hình 1.5)
#Objective: To check various status of SQL Server
#Host, instances and databases.
#Author: MAK
#Date Written: June 5, 2008
param (
[string] $Hostname
)
. ./CheckSQL_Lib.ps1
PingHost $Hostname


Hình 1.5: CheckSQLServer.ps1
Lưu file CheckSQLServer.ps1 và thoát khỏi notepad
Lưu ý: File CheckSQLServer.ps1 này sẽ được cập nhật các điều kiện mới và các tham số trong
các phần sau của loạt bài này.
Nguồn sẽ load các chức năng được liệt kê trong file kịch bản và làm cho nó hiện hữu toàn bộ
session PowerShell. Trong trường hợp này, chúng tôi sẽ lấy nguồn một kịch bản có sử dụng
nhiều nguồn từ các kịch bản khác.
Bước 7
Thực thi CheckSQLServer.ps1 như dưới đây (xem hình 1.6)
Simpo PDF Merge and Split Unregistered Version -
./CheckSQLServer.ps1 PowerMachine
./CheckSQLServer.ps1 TestServer
Chúng ta sẽ thấy các kết quả, dựa vào đó bạn sẽ biết được máy tính đó có khả năng ping hay
không. Nếu máy đó có thể thăm dò bằng cách ping, thì thông báo sẽ được đánh dấu màu xanh
còn không sẽ được đánh dấu màu đỏ.

Hình 1.6: Ping máy chủ
Mặc định, các kịch bản PowerShell không thể được thực thi trên máy nếu bạn sử dụng nó lần đầu
tiên. Nếu bạn gặp phải thông báo lỗi dưới đây như thể hiện trong hình 1.7, hãy thực thi lệnh để
kích hoạt sự thực thi kịch bản không bị hạn chế của PowerShell.

Hình 1.7: Lỗi trong quá trình thực thi kịch bản PowerShell
set-executionpolicy unrestricted
Lưu ý: Bạn không phải thực thi lệnh trên nhiều lần mà chỉ thực thi một lần.
Bạn có thể kiểm tra chính sách thực thi của cấu hình PowerShell hiện hành bằng cách thực thi
lệnh dưới đây (xem thể hiện trong hình 1.8)
get-executionpolicy

Hình 1.8: Chính sách thực thi
Kết luận

Simpo PDF Merge and Split Unregistered Version -
Đây là phần đầu tiên của loạt bài này. Phần đầu tiên này đã giới thiệu được cho các bạn về cách
tạo một kịch bản PowerShell để ping đến một máy chủ. Trong đó nó cũng giới thiệu cách sử
dụng nguồn hàm PowerShell và cách gọi hàm. Trong các phần sau của loạt bài này, chúng tôi sẽ
tiếp tục đi sâu hơn nữa về các tính năng khác của Windows PowerShell trong việc kiểmt ra trạng
thái của SQL Server.

Simpo PDF Merge and Split Unregistered Version -
Kiểm tra SQL Server bằng Windows PowerShell – Phần 2

Phần 1 của loạt bài này chúng tôi đã giới thiệu cho các bạn cách
ping đến host, đó chính là kiểm tra đầu tiên trên SQL Server.
Kiểm tra quan trọng thứ hai ở mức hệ điều hành là xem xem tất
cả các dịch vụ Windows có liên quan đến SQL Server trên host
hiện có đang hoạt động hay không và báo cáo về trạng thái của
hệ thống.



Phần 2 này sẽ giới thiệu cho các bạn cách truy cập vào dịch vụ Windows trên máy từ xa bằng
cách sử dụng Windows PowerShell và WMI-Object.
Bước 1
Đánh hoặc copy và paste đoạn mã dưới đây vào file C:\CheckSQLServer\CheckServices.ps1.
# Function to check windows services related to SQL Server
Function checkservices ([string] $Hostname )
{
$Services=get-wmiobject -class win32_service
-computername $hostname|
where {$_.name -like '*SQL*'}| select-object
Name,state,status,Started,Startname,Description

foreach ( $service in $Services)
{
if($service.state -ne "Running" -or $service.status -ne "OK"
-or $service.started -ne "True" )
{
$message="Host="+$Hostname+" " +$Service.Name +"
"" +$Service.state +" +$Service.status +"
" +$Service.Started +" " +$Service.Startname
write-host $message -background "RED" -foreground "BLACk"
}
else
{
$message="Host="+$Hostname+" " +$Service.Name +"
" +$Service.state +" " +$Service.status +"
" +$Service.Started +" " +$Service.Startname
write-host $message -background "GREEN" -foreground "BLACk"
}
}
}
Bước 2
Simpo PDF Merge and Split Unregistered Version -
Bổ sung thêm vào file C:\CheckSQLServer\CheckSQL_Lib.ps1 đoạn mã dưới đây:
. ./checkservices.ps1
Lúc này C:\CheckSQLServer\CheckSQL_Lib.ps1 sẽ có cả pinghost và dịch vụ kiểm tra
(checkservices) như thể hiện bên dưới.
#Source all the functions relate to CheckSQL
. ./PingHost.ps1
. ./checkservices.ps1
Lưu ý: File CheckSQL_Lib.ps1 này sẽ được cập nhật nguồn của các kịch bản bản mới giống như
checkservices.PS1

Bước 3
Gắn vào file C:\CheckSQLServer\CheckSQLServer.ps1 bằng cách copy và paste đoạn mã dưới
đây.
checkservices $Hostname
Lúc này file C:\CheckSQLServer\CheckSQLServer.ps1 sẽ có cả pinghost và checkservices như
thể hiện bên dưới. Chúng ta đã thêm vào một số tuyên bố để hiện toàn bộ quá trình.
#Objective: To check various status of SQL Server
#Host, instances and databases.
#Author: MAK
#Date Written: June 5, 2008
param (
[string] $Hostname
)
. ./CheckSQL_Lib.ps1
Write-host "Checking SQL Server "
Write-host " "
Write-host " "
Write-host "Arguments accepted : $Hostname"
write-host " "
Write-host "Pinging the host machine"
write-host " "
PingHost $Hostname
Write-host "Checking windows services on the host related to SQL Server"
write-host " "
checkservices $Hostname
Lưu ý: CheckSQLServer.ps1 này sẽ được cập nhật các điều kiện mới và cũng như các tham số
trong các cài đặt sau của loạt bài này.
Simpo PDF Merge and Split Unregistered Version -
Nguồn dẫn cơ bản load các chức năng được liệt kê trong file kịch bản và làm cho nó hiện hữu
trong toàn bộ PowerShell session. Trong trường hợp này, chúng ta đang dẫn nguồn cho một kịch

bản.
Bước 4
Hãy thực thi kịch bản CheckSQLServer.ps1 bằng việc chuyển host “Powerpc” như một đối số,
xem thể hiện bên dưới.
./CheckSQLServer.ps1 PowerPC
Bạn sẽ có được các kết quả như thể hiện bên dưới (xem hình 1.0)
Checking SQL Server

Arguments accepted : PowerPC

Pinging the host machine

PowerPC is REACHABLE
Checking windows services on the host related to SQL Server

Host=PowerPC msftesql$SQL2008 Stopped OK False .\mak
Host=PowerPC MSSQL$NY0QD1 Running OK True .\mak
Host=PowerPC MSSQL$SQL2008 Stopped OK False .\mak
Host=PowerPC MSSQLServerADHelper100 Stopped OK False NT AUTHORITY\NETWORK
SERVICE
Host=PowerPC SQLAgent$NY0QD1 Stopped OK False .\mak
Host=PowerPC SQLAgent$SQL2008 Stopped OK False .\mak
Host=PowerPC SQLBrowser Stopped OK False NT AUTHORITY\LOCAL SERVICE
Host=PowerPC SQLWriter Running OK True LocalSystem
Simpo PDF Merge and Split Unregistered Version -

Hình 1.0
Từ kết quả bạn có thể thấy được rằng bất kỳ SQL Server nào có liên quan tới dịch vụ đều không
được khởi tạo hoặc được đánh dấu trạng thái “OK” màu đỏ và tất cả các dịch vụ liên quan đến
SQL Server đang hoạt động được đánh dấu màu xanh.

Bước 5
Chúng ta hãy thực thi kịch bản trên máy tính không tồn tại như thể hiện bên dưới.
./CheckSQLServer.ps1 TestMachine
Khi đó bạn sẽ nhận được kết quả như thể hiện dưới đây (xem hình 1.1)
Kết quả
Checking SQL Server

Arguments accepted : TestMachine

Pinging the host machine

TestMachine is NOT reachable
Checking windows services on the host related to SQL Server

Get-WmiObject : The RPC server is unavailable. (Exception from HRESULT: 0x800706BA)
At C:\checksqlserver\checkservices.ps1:5 char:24
+ $Services=get-wmiobject <<<< -class win32_service -computername $hostname| where
{$_.name -like '*SQL*'}| select-obj
ect Name,state,status,Started,Startname,Description
Host=TestMachine
Simpo PDF Merge and Split Unregistered Version -

Hình 1.1
Nếu bạn bắt gặp lỗi “Get-WmiObject : The RPC server is unavailable. (Exception from
HRESULT: 0x800706BA)” thì nguyên nhân có thể là một số lý do dưới đây:
• Host không hiện hữu (ví dụ: bước 5)
• Tường lửa khóa chặn tính năng quản trị từ xa
Nếu bạn muốn vô hiệu hóa tường lửa, hãy thực thi lệnh dưới đây tại nhắc lệnh:
netsh.exe firewall set service type=REMOTEADMIN mode=ENABLE scope=ALL
Nếu muốn giữ các thiết lập tường lửa và chỉ cho phép các cổng được yêu cầu đối với quản trị từ

xa, hãy thực thi đoạn mã dưới đây:
netsh firewall add portopening protocol=tcp port=135 name=DCOM_TCP135
• Dịch vụ Windows Management Instrumentation không hoạt động
Thiết lập dịch vụ WMI chạy tự động và sau đó khởi tạo dịch vụ
• Add người dùng hiện hành vào DCOM users.
Kết luận
Phần thứ hai này chúng ta đã được giới thiệu về cách truy cập dịch vụ Windows Service trên
máy từ xa bằng Windows PowerShell và WMI-Object. Trong phần tiếp theo của loạt bài, chúng
tôi sẽ bổ sung thêm các kiểm tra khác để chúng ta không phải thực hiện tất cả các kiểm tra nếu
ping bị thất bại. Thêm vào đó chúng tôi sẽ giới thiệu cách capture một số thông tin phần cứng và
hệ điều hành.

Simpo PDF Merge and Split Unregistered Version -
Kiểm tra SQL Server bằng Windows PowerShell – Phần 3

Phần trước của loạt bài này đã giới thiệu cho các bạn kiểm tra
đầu tiên về SQL Server—cách ping một host. Trong phần 2 là
giới thiệu về cách kiểm tra tất cả các dịch vụ của Windows có
liên quan với SQL Server. Trong phần 3 này chúng tôi sẽ giới
thiệu về cách tìm một số thông tin về phần cứng và hệ điều hành
từ máy host.


Bước 1
Đánh hoặc Copy và paste đoạn mã bên dưới vào file C:\CheckSQLServer\Checkhardware.ps1.
#Function to check Hardware information from a host
Function checkhardware([string] $Hostname )
{
$computer=get-wmiobject -class win32_computersystem -computername
$hostname -errorvariable errorvar

$errorvar.size
if (-not $errorvar)
{
$message="Host="+$Hostname
write-host $message -background "GREEN" -foreground "BLACk"
$message="Description=" +$computer.Description
write-host $message -background "GREEN" -foreground "BLACk"
$message="NumberOfLogicalProcessors="+
$computer.NumberOfLogicalProcessors
write-host $message -background "GREEN" -foreground "BLACk"
$message="NumberOfProcessors="+ $computer.NumberOfProcessors
write-host $message -background "GREEN" -foreground "BLACk"
$message="TotalPhysicalMemory=" +$computer.TotalPhysicalMemory
write-host $message -background "GREEN" -foreground "BLACk"
$message="Model=" +$computer.Model
write-host $message -background "GREEN" -foreground "BLACk"
$message="Manufacturer=" +$computer.Manufacturer
write-host $message -background "GREEN" -foreground "BLACk"
$message="PartOfDomain="+ $computer.PartOfDomain
write-host $message -background "GREEN" -foreground "BLACk"
$message="CurrentTimeZone=" +$computer.CurrentTimeZone
write-host $message -background "GREEN" -foreground "BLACk"
$message="DaylightInEffect="+$computer.DaylightInEffect
write-host $message -background "GREEN" -foreground "BLACk"
}
}
Simpo PDF Merge and Split Unregistered Version -
Bước 2
Đánh hoặc Copy và paste đoạn mã bên dưới vào file C:\CheckSQLServer\CheckOS.ps1.
#Function to check the OS information on the host machine

Function checkOS([string] $Hostname )
{
$os=get-wmiobject -class win32_operatingsystem -computername $hostname -errorvariable
errorvar
if (-not $errorvar)
{
$message= "OSArchitecture="+$os.OSArchitecture
write-host $message -background "GREEN" -foreground "BLACk"
$message= "OSLanguage="+$os.OSLanguage
write-host $message -background "GREEN" -foreground "BLACk"
$message= "OSProductSuite="+$os.OSProductSuite
write-host $message -background "GREEN" -foreground "BLACk"
$message= "OSType="+$os.OSType
write-host $message -background "GREEN" -foreground "BLACk"
$message= "BuildNumber="+$os.BuildNumber
write-host $message -background "GREEN" -foreground "BLACk"
$message= "BuildType="+$os.BuildType
write-host $message -background "GREEN" -foreground "BLACk"
$message= "Version="+$os.Version
write-host $message -background "GREEN" -foreground "BLACk"
$message= "WindowsDirectory="+$os.WindowsDirectory
write-host $message -background "GREEN" -foreground "BLACk"
$message= "PlusVersionNumber="+$os.PlusVersionNumber
write-host $message -background "GREEN" -foreground "BLACk"
$message= "FreePhysicalMemory="+$os.FreePhysicalMemory
write-host $message -background "GREEN" -foreground "BLACk"
$message= "FreeSpaceInPagingFiles="+$os.FreeSpaceInPagingFiles
write-host $message -background "GREEN" -foreground "BLACk"
$message= "FreeVirtualMemory="+$os.FreeVirtualMemory
write-host $message -background "GREEN" -foreground "BLACk"

$message= "PAEEnabled="+$os.PAEEnabled
write-host $message -background "GREEN" -foreground "BLACk"
}
}
Bước 3
Gắn thêm vào file C:\CheckSQLServer\CheckSQL_Lib.ps1 đoạn mã bên dưới.
. ./checkhardware.ps1
. ./checkOS.ps1
Simpo PDF Merge and Split Unregistered Version -
Lúc này file C:\CheckSQLServer\CheckSQL_Lib.ps1 sẽ có pinghost, checkservices,
checkhardware và checkOS như thể hiện bên dưới.
#Source all the functions relate to CheckSQL
. ./PingHost.ps1
. ./checkservices.ps1
. ./checkhardware.ps1
. ./checkOS.ps1
Lưu ý: File CheckSQL_Lib.ps1 này sẽ được cập nhật từ các kịch bản mới như
checkhardware.ps1 và checkOS.ps1
Bước 4
Gắn thêm vào file C:\CheckSQLServer\CheckSQLServer.ps1 đoạn mã dưới đây.
checkhardware $Hostname
checkOS $Hostname
Lúc này file C:\CheckSQLServer\CheckSQLServer.ps1 sẽ có cả checkhardware và checkOS như
bên dưới, Chúng tôi đã thêm môt tuyên bố write-host để hiện toàn bộ quá trình.
#Objective: To check various status of SQL Server
#Host, instances and databases.
#Author: MAK
#Date Written: June 5, 2008
param (
[string] $Hostname

)
. ./CheckSQL_Lib.ps1
Write-host "Checking SQL Server "
Write-host " "
Write-host " "
Write-host "Arguments accepted : $Hostname"
write-host " "
Write-host "Pinging the host machine"
write-host " "
PingHost $Hostname
Write-host "Checking windows services on the host related to SQL Server"
write-host " "
checkservices $Hostname
Write-host "Checking hardware Information "
Write-host " "
checkhardware $Hostname
Write-host "Checking OS Information "
Simpo PDF Merge and Split Unregistered Version -
Write-host " "
checkOS $Hostname
Lưu ý: File CheckSQLServer.ps1 này sẽ được cập nhật các điều kiện và các tham số mới trong
các phần sau của loạt bài.
Nguồn dẫn sẽ load các hàm được liệt kê trong file kịch bản và làm cho nó hiện hữu trong toàn bộ
PowerShell session. Trong trường hợp này, chúng tôi dẫn nguồn một kịch bản, kịch bản này sẽ
lại lấy nguồn từ nhiều kịch bản khác.
Bước 5
Lúc này chúng ta hãy thực thi kịch bản, CheckSQLServer.ps1 bằng cách passing “Powerpc” host
với tư cách một đối số như thể hiện bên dưới.
./CheckSQLServer.ps1 PowerServer2
Khi đó kết quả cho ra sẽ như sau (tham khảo hình 1.0)

Checking SQL Server

Arguments accepted : PowerServer2

Pinging the host machine

PowerServer2 is REACHABLE
Checking windows services on the host related to SQL Server

Host=PowerServer2 MSSQLSERVER Running OK True .\Administrator
Host=PowerServer2 MSSQLServerADHelper100 Stopped OK False NT
AUTHORITY\NETWORK SERVICE
Host=PowerServer2 MSSQLServerOLAPService Stopped OK False .\Administrator
Host=PowerServer2 SQLBrowser Stopped OK False NT AUTHORITY\LOCAL SERVICE
Host=PowerServer2 SQLSERVERAGENT Stopped OK False .\Administrator
Host=PowerServer2 SQLWriter Stopped OK False LocalSystem
Checking hardware Information

Host=PowerServer2
Description=AT/AT COMPATIBLE
NumberOfLogicalProcessors=2
NumberOfProcessors=1
TotalPhysicalMemory=2145738752
Model=OptiPlex GX270
Manufacturer=Dell Computer Corporation
PartOfDomain=True
CurrentTimeZone=-240
Simpo PDF Merge and Split Unregistered Version -
DaylightInEffect=True
Checking OS Information


OSArchitecture=32-bit
OSLanguage=1033
OSProductSuite=274
OSType=18
BuildNumber=6001
BuildType=Multiprocessor Free
Version=6.0.6001
WindowsDirectory=C:\Windows
PlusVersionNumber=
FreePhysicalMemory=1511144
FreeSpaceInPagingFiles=2402648
FreeVirtualMemory=3966452
PAEEnabled=False

Hình 1.0
Từ kết quả nhận được, bạn có thể thấy được các thông tin về phần cứng và hệ điều hành.
Bước 6
Hãy thực thi kịch bản trên máy không tồn tại như dưới đây.
Simpo PDF Merge and Split Unregistered Version -
./CheckSQLServer.ps1 TestMachine
Khi đó kết quả nhận được sẽ như sau (xem hình 1.1)
Kết quả
Checking SQL Server

Arguments accepted : TestMachine

Pinging the host machine

TestMachine is NOT reachable

Checking windows services on the host related to SQL Server

Get-WmiObject : The RPC server is unavailable. (Exception from HRESULT: 0x800706BA)
At C:\checksqlserver\checkservices.ps1:5 char:24
+ $Services=get-wmiobject <<<< -class win32_service -computername $hostname| where
{$_.name -like '*SQL*'}| select-obj
ect Name,state,status,Started,Startname,Description
Host=TestMachine
Checking hardware Information

Get-WmiObject : The RPC server is unavailable. (Exception from HRESULT: 0x800706BA)
At C:\checksqlserver\checkhardware.ps1:5 char:24
+ $computer=get-wmiobject <<<< -class win32_computersystem -computername $hostname -
errorvariable errorvar
Checking OS Information

Get-WmiObject : The RPC server is unavailable. (Exception from HRESULT: 0x800706BA)
At C:\checksqlserver\checkOS.ps1:5 char:18
+ $os=get-wmiobject <<<< -class win32_operatingsystem -computername $hostname -
errorvariable errorvar
Simpo PDF Merge and Split Unregistered Version -

Hình 1.1
Bước 7
Chúng ta không phải tiếp tục với checkservices, checkhardware và checkos nếu ping bị thất bại.
Chính vì vậy hãy cập nhật pinghost.ps1 như thể hiện bên dưới.
Function Pinghost ([string] $Hostname )
{
$status=get-wmiobject win32_pingstatus -Filter "Address='$Hostname'" | Select-Object
statuscode

if($status.statuscode -eq 0)
{
write-host $Hostname is REACHABLE -background "GREEN" -foreground "BLACk"
}
else
{
$global:errorvar="host not reachable"
write-host $Hostname is NOT reachable -background "RED" -foreground "BLACk"
}
}
Hãy cập nhật checksqlserver.ps1 như thể hiện bên dưới.
#Objective: To check various status of SQL Server
#Host, instances and databases.
#Author: MAK
#Date Written: June 5, 2008
param (
[string] $Hostname
)
$global:errorvar=0
. ./CheckSQL_Lib.ps1
Write-host "Checking SQL Server "
Write-host " "
Simpo PDF Merge and Split Unregistered Version -
Write-host " "
Write-host "Arguments accepted : $Hostname"
write-host " "
Write-host "Pinging the host machine"
write-host " "
pinghost $Hostname
if ($global:errorvar -ne "host not reachable")

{
Write-host "Checking windows services on the host related to SQL Server"
write-host " "
checkservices $Hostname
Write-host "Checking hardware Information "
Write-host " "
checkhardware $Hostname
Write-host "Checking OS Information "
Write-host " "
checkOS $Hostname
}
Lúc này hãy thực thi kịch bản bằng cách passing tên máy “testmachine”, tên thực sự không tồn
tại với tư cách một đối số.
./CheckSQLServer.ps1 TestMachine
Kết quả
Checking SQL Server

Arguments accepted : TestMachine

Pinging the host machine

TestMachine is NOT reachable
Lưu ý bạn có thể download các đọan mã mới nhất trong phần ba tại đây
.
Kết luận
Đây là phần thứ ba của loạt bài này. Trong phần thứ ba này chúng tôi đã giới thiệu được cho các
bạn cách truy cập các thông tin phần cứng và hệ điều hành bằng Windows PowerShell và WMI-
Object. Trong phần tiếp theo, chúng tôi sẽ bổ sung thêm một số kiểm tra khác và giới thiệu cách
capture một số thông tin phần cứng và hệ điều hành.


Simpo PDF Merge and Split Unregistered Version -
Kiểm tra SQL Server bằng Windows PowerShell – Phần 4

Trong phần tiếp theo này, chúng tôi sẽ giới thiệu cho các bạn các
thu thập các thông tin về card mạng và ổ đĩa cứng từ máy chủ.

Bước 1
Đánh hoặc copy và paste đoạn mã dưới đây vào
C:\CheckSQLServer\Checkhd.ps1.
#Function to check the HDD information on the host
machine
Function checkHD([string] $Hostname )
{
$drives=get-wmiobject -class Win32_LogicalDisk
-computername $hostname -errorvariable errorvar
if (-not $errorvar)
{
foreach ($drive in $drives)
{
if ($drive.drivetype -eq "3" )
{
$message= "DeviceID="+$drive.Deviceid+" Size="+
$drive.size/1048576+"MB Free Space="+
$drive.freespace/1048576 +"MB Percentage Used=" +
(($drive.Size/1048576)-($drive.freespace/1048576))/
($drive.Size/1048576) *100+"% "
write-host $message -background "GREEN" -foreground "BLACk"
}
}
}

}
Bước 2
Đánh hoặc copy và paste đoạn mã dưới đây vào C:\CheckSQLServer\Checknet.ps1.
#Function to check the Network netadapter information on the
host machine
Function checknet([string] $Hostname )
{
$netadapter=get-wmiobject -class win32_networkadapter
-computername $hostname -errorvariable errorvar
if (-not $errorvar)
{
foreach ($netadapter in $netadapter)
{
write-host " "
-background "Blue" -foreground "BLACk"
#$message= "netadapter Enabled="+$netadapter.Enable
#write-host $message -background "GREEN" -foreground "BLACk"
$message= "netadapterType="+$netadapter.netadapterType
write-host $message -background "GREEN" -foreground "BLACk"
Simpo PDF Merge and Split Unregistered Version -
$message= "Description="+$netadapter.Description
write-host $message -background "GREEN" -foreground "BLACk"
$message= "Manufacturer="+$netadapter.Manufacturer
write-host $message -background "GREEN" -foreground "BLACk"
$message= "NetworkAddresses="+$netadapter.NetworkAddresses
write-host $message -background "GREEN" -foreground "BLACk"
$message= "PermanentAddress="+$netadapter.PermanentAddress
write-host $message -background "GREEN" -foreground "BLACk"
$message= "Physicalnetadapter="+$netadapter.Physicalnetadapter
write-host $message -background "GREEN" -foreground "BLACk"

$message= "ProductName="+$netadapter.ProductName
write-host $message -background "GREEN" -foreground "BLACk"
$message= "ServiceName="+$netadapter.ServiceName
write-host $message -background "GREEN" -foreground "BLACk"
$message= "StatusInfo="+$netadapter.StatusInfo
write-host $message -background "GREEN" -foreground "BLACk"
$message= "Speed="+$netadapter.Speed
write-host $message -background "GREEN" -foreground "BLACk"
$message= "Status="+$netadapter.Status
write-host $message -background "GREEN" -foreground "BLACk"
}
}
}
Bước 3
Gán vào file C:\CheckSQLServer\CheckSQL_Lib.ps1 đoạn mã dưới đây.
. ./checkhd.ps1
. ./checknet.ps1
Lúc này C:\CheckSQLServer\CheckSQL_Lib.ps1 sẽ có pinghost, checkservices, checkhardware,
checkOS, checkHD và checknet như thể hiện bên dưới.
#Source all the functions relate to CheckSQL
. ./PingHost.ps1
. ./checkservices.ps1
. ./checkhardware.ps1
. ./checkOS.ps1
. ./checkHD.ps1
. ./checknet.ps1
Lưu ý: File CheckSQL_Lib.ps1 này sẽ được cập nhật với nguồn dẫn của các kịch bản mới như
checkhd.ps1 và checknet.ps1.
Bước 4
Gắn thêm vào file C:\CheckSQLServer\CheckSQLServer.ps1 đoạn mã dưới đây.

Write-host "Checking HDD Information "
Write-host " "
checkHD $Hostname
Write-host "Checking Network Adapter Information "
Simpo PDF Merge and Split Unregistered Version -
Write-host " "
checknet $Hostname
Lúc này C:\CheckSQLServer\CheckSQLServer.ps1 sẽ có cả checkhd và checknet như thể hiên
dưới. Chúng tôi đã thêm một số tuyên bố write-host để hiện toàn bộ quá trình.
#Objective: To check various status of SQL Server
#Host, instances and databases.
#Author: MAK
#Date Written: June 5, 2008
param (
[string] $Hostname
)
$global:errorvar=0
. ./CheckSQL_Lib.ps1
Write-host "Checking SQL Server "
Write-host " "
Write-host " "
Write-host "Arguments accepted : $Hostname"
write-host " "
Write-host "Pinging the host machine"
write-host " "
pinghost $Hostname
if ($global:errorvar -ne "host not reachable")
{
Write-host "Checking windows services on the host related to SQL Server"
write-host " "

checkservices $Hostname
Write-host "Checking hardware Information "
Write-host " "
checkhardware $Hostname
Write-host "Checking OS Information "
Write-host " "
checkOS $Hostname
Write-host "Checking HDD Information "
Write-host " "
checkHD $Hostname
Write-host "Checking Network Adapter Information "
Write-host " "
checknet $Hostname

}
Lưu ý: CheckSQLServer.ps1 sẽ được cập nhật các điều kiện mới và các tham số mới trong các
phần sau của loạt bài này.
Nguồn dẫn cơ bản load các hàng được liệt kê trong file kịch bản và làm cho nó trở lên hiện hữu
trong toàn bộ PowerShell session. Trong trường hợp này, chúng tôi dẫn nguồn một kịch bản,
kịch bản này lại lấy nguồn từ nhiều kịch bản khác.
Bước 5
Simpo PDF Merge and Split Unregistered Version -
Chúng ta hãy thực thi kịch bản CheckSQLServer.ps1 bằng cách passing “Powerpc” host như một
đối số, xem thể hiện dưới đây.
./CheckSQLServer.ps1 PowerServer2
Các kết quả bạn thu được như thể hiện bên dưới (tham khảo hình 1.0)
Checking SQL Server

Arguments accepted : PowerServer2


Pinging the host machine

PowerServer2 is REACHABLE
Checking windows services on the host related to SQL Server

Host=PowerServer2 MSSQLSERVER Running OK True .\Administrator
Host=PowerServer2 MSSQLServerADHelper100 Stopped OK False
NT AUTHORITY\NETWORK SERVICE
Host=PowerServer2 MSSQLServerOLAPService Stopped OK
False .\Administrator
Host=PowerServer2 SQLBrowser Stopped OK False
NT AUTHORITY\LOCAL SERVICE
Host=PowerServer2 SQLSERVERAGENT Stopped OK False .\Administrator
Host=PowerServer2 SQLWriter Stopped OK False LocalSystem
Checking hardware Information

Host=PowerServer2
Description=AT/AT COMPATIBLE
NumberOfLogicalProcessors=2
NumberOfProcessors=1
TotalPhysicalMemory=2145738752
Model=OptiPlex GX270
Manufacturer=Dell Computer Corporation
PartOfDomain=True
CurrentTimeZone=-240
DaylightInEffect=True
Checking OS Information

OSArchitecture=32-bit
OSLanguage=1033

OSProductSuite=274
OSType=18
BuildNumber=6001
BuildType=Multiprocessor Free
Version=6.0.6001
WindowsDirectory=C:\Windows
PlusVersionNumber=
FreePhysicalMemory=1492684
FreeSpaceInPagingFiles=2402648
FreeVirtualMemory=3948148
PAEEnabled=False
ServicePackMajorVersion=0
ServicePackMinorVersion=0
Checking HDD Information
Simpo PDF Merge and Split Unregistered Version -

DeviceID=C: Size=38143.99609375MB Free Space=23761.51953125MB
Percentage Used=37.7057414937619
Checking Network Adapter Information


netadapterType=
Description=WAN Miniport (SSTP)
Manufacturer=Microsoft
NetworkAddresses=
PermanentAddress=
Physicalnetadapter=
ProductName=WAN Miniport (SSTP)
ServiceName=RasSstp
StatusInfo=

Speed=
Status=

netadapterType=
Description=WAN Miniport (L2TP)
Manufacturer=Microsoft
NetworkAddresses=
PermanentAddress=
Physicalnetadapter=
ProductName=WAN Miniport (L2TP)
ServiceName=Rasl2tp
StatusInfo=
Speed=
Status=

netadapterType=
Description=WAN Miniport (PPTP)
Manufacturer=Microsoft
NetworkAddresses=
PermanentAddress=
Physicalnetadapter=
ProductName=WAN Miniport (PPTP)
ServiceName=PptpMiniport
StatusInfo=
Speed=
Status=

netadapterType=
Description=WAN Miniport (PPPOE)
Manufacturer=Microsoft

NetworkAddresses=
PermanentAddress=
Physicalnetadapter=
ProductName=WAN Miniport (PPPOE)
ServiceName=RasPppoe
StatusInfo=
Speed=

Status=

netadapterType=
Description=WAN Miniport (IPv6)
Manufacturer=Microsoft
Simpo PDF Merge and Split Unregistered Version -
NetworkAddresses=
PermanentAddress=
Physicalnetadapter=
ProductName=WAN Miniport (IPv6)
ServiceName=NdisWan
StatusInfo=
Speed=
Status=

netadapterType=
Description=WAN Miniport (Network Monitor)
Manufacturer=Microsoft
NetworkAddresses=
PermanentAddress=
Physicalnetadapter=
ProductName=WAN Miniport (Network Monitor)

ServiceName=NdisWan
StatusInfo=
Speed=
Status=

netadapterType=
Description=Intel(R) PRO/1000 MT Network Connection
Manufacturer=Intel
NetworkAddresses=
PermanentAddress=
Physicalnetadapter=
ProductName=Intel(R) PRO/1000 MT Network Connection
ServiceName=E1G60
StatusInfo=
Speed=100000000
Status=

netadapterType=
Description=Microsoft ISATAP Adapter
Manufacturer=Microsoft
NetworkAddresses=
PermanentAddress=
Physicalnetadapter=
ProductName=Microsoft ISATAP Adapter
ServiceName=tunnel
StatusInfo=
Speed=100000
Status=

netadapterType=

Description=WAN Miniport (IP)
Manufacturer=Microsoft
NetworkAddresses=
PermanentAddress=
Physicalnetadapter=

ProductName=WAN Miniport (IP)
ServiceName=NdisWan
StatusInfo=
Speed=
Status=

Simpo PDF Merge and Split Unregistered Version -

×