Computer >> Máy Tính >  >> Hệ thống >> máy chủ Windows

Làm thế nào để Quản lý Dịch vụ Windows với PowerShell?

Bạn có thể quản lý các dịch vụ Windows không chỉ từ công cụ dòng lệnh services.msc snap-in hoặc sc.exe mà còn bằng PowerShell. Trong bài viết này, chúng tôi sẽ xem xét các tình huống khác nhau của việc quản lý các dịch vụ Windows bằng PowerShell.

PowerShell Cmdlets được sử dụng để quản lý các dịch vụ Windows

Có tám lệnh ghép ngắn Dịch vụ cơ bản để xem trạng thái của các dịch vụ Windows và quản lý chúng. Để có danh sách đầy đủ các lệnh ghép ngắn quản lý dịch vụ, hãy chạy lệnh sau:

Get-Help \*-Service

Làm thế nào để Quản lý Dịch vụ Windows với PowerShell?

  • Nhận Dịch vụ - cho phép nhận các dịch vụ trên máy tính cục bộ hoặc máy tính từ xa cả ở trạng thái đang chạy hoặc đã dừng;
  • Dịch vụ mới - tạo ra một dịch vụ. Lệnh ghép ngắn tạo một mục nhập mới cho dịch vụ Windows trong sổ đăng ký và trong cơ sở dữ liệu dịch vụ;
  • Khởi động lại-Dịch vụ - khởi động lại một dịch vụ. Lệnh ghép ngắn gửi thông báo khởi động lại thông qua Bộ điều khiển dịch vụ Windows;
  • Tiếp tục-Dịch vụ - tiếp tục một dịch vụ. Lệnh ghép ngắn gửi thông báo tiếp tục đến Trình quản lý dịch vụ Windows;
  • Set-Service - thay đổi cài đặt của một dịch vụ cục bộ hoặc từ xa, bao gồm trạng thái, mô tả, tên hiển thị hoặc chế độ khởi động. Bạn cũng có thể sử dụng lệnh ghép ngắn này để bắt đầu, dừng hoặc tạm ngừng một dịch vụ;
  • Dịch vụ Bắt đầu - bắt đầu một dịch vụ;
  • Dừng Dịch vụ - dừng một dịch vụ (lệnh ghép ngắn gửi thông báo dừng đến Trình quản lý dịch vụ Windows);
  • Tạm ngưng dịch vụ - đình chỉ một dịch vụ. Dịch vụ bị tạm ngưng vẫn đang chạy nhưng nó không hoạt động gì cho đến khi được tiếp tục lại bằng cách sử dụng (ví dụ:với lệnh ghép ngắn Tiếp tục-Dịch vụ).

Bạn có thể nhận được mô tả chi tiết và ví dụ về cách sử dụng một lệnh ghép ngắn cụ thể với Get-Help:

Get-Help Start-Service

Làm thế nào để Quản lý Dịch vụ Windows với PowerShell?

Làm cách nào để Kiểm tra Trạng thái Dịch vụ của Windows bằng Get-Service?

Bạn có thể nhận danh sách các dịch vụ và trạng thái của chúng (Đang chạy / Đã dừng) trên máy tính cục bộ hoặc từ xa bằng cách sử dụng Nhận dịch vụ cmdlet. - Tên tham số cho phép chọn dịch vụ theo tên. Tên dịch vụ có thể được chỉ định bằng cách sử dụng ký tự đại diện * .

Làm thế nào để Quản lý Dịch vụ Windows với PowerShell?

Nếu bạn không biết chính xác tên dịch vụ, bạn có thể tìm nó theo tên hiển thị của nó bằng cách sử dụng - Tên hiển thị tham số. Bạn có thể sử dụng danh sách các giá trị và ký tự đại diện.

Làm thế nào để Quản lý Dịch vụ Windows với PowerShell?

Sử dụng Nhận dịch vụ lệnh ghép ngắn với -ComputerName tham số để nhận trạng thái dịch vụ trên máy tính từ xa. Bạn có thể truy vấn trạng thái dịch vụ trên nhiều máy tính từ xa cùng một lúc bằng cách chỉ định tên của chúng được phân tách bằng dấu phẩy. Ví dụ:lệnh hiển thị bên dưới nhận trạng thái dịch vụ Bộ đệm trên các máy tính từ xa ny-prnt1 và ny-prnt2.

Get-Service spooler –ComputerName ny-prnt1,ny-prnt2

Status Name DisplayName
------ ---- -----------
Running spooler Print Spooler
Stopped spooler Print Spooler

Để hiển thị tất cả các thuộc tính của một dịch vụ, hãy sử dụng Chọn đối tượng lệnh ghép ngắn:

Get-Service spooler | Select-Object *

Làm thế nào để Quản lý Dịch vụ Windows với PowerShell?

Lệnh ghép ngắn Select-Object cho phép lấy các thuộc tính cụ thể của một dịch vụ. Ví dụ:bạn muốn xem tên, trạng thái và các tùy chọn khả dụng của dịch vụ Bộ đệm:

Get-Service Spooler | Select DisplayName,Status,ServiceName,Can*

Làm thế nào để Quản lý Dịch vụ Windows với PowerShell?

Nhận dịch vụ cmdlet có hai tham số cho phép bạn xem các phụ thuộc dịch vụ:

  • -DependentServices cho phép hiển thị các dịch vụ phụ thuộc vào dịch vụ đã cho
  • -RequiredServices hiển thị các dịch vụ mà dịch vụ nhất định phụ thuộc vào

Lệnh sau hiển thị các dịch vụ cần thiết để khởi động dịch vụ Bộ đệm:

Get-Service –Name Spooler -RequiredServices

Làm thế nào để Quản lý Dịch vụ Windows với PowerShell?

Lệnh sau hiển thị các dịch vụ phụ thuộc vào Spooler:

Get-Service –Name Spooler -DependentServices

Làm thế nào để Quản lý Dịch vụ Windows với PowerShell?

Nếu bạn muốn tìm các dịch vụ có trạng thái hoặc thông số cụ thể, hãy sử dụng Đối tượng ở đâu cmdlet. Ví dụ:hãy lấy danh sách các dịch vụ đang chạy:

Get-Service | Where-Object {$_.status -eq 'running'}

Làm thế nào để Quản lý Dịch vụ Windows với PowerShell?

Để hiển thị các dịch vụ với kiểu khởi động thủ công, hãy chạy lệnh sau:

Get-Service | Where-Object {$_.starttype -eq 'Manual'}

Làm thế nào để Quản lý Dịch vụ Windows với PowerShell?

Sử dụng tập lệnh PowerShell sau để kiểm tra xem một dịch vụ Windows cụ thể có tồn tại trên máy tính hiện tại hay không:

if (Get-Service "ServiceTest" -ErrorAction SilentlyContinue)
{
Write-host "ServiceTest exists"
}

Cách Dừng, Bắt đầu hoặc Khởi động lại Dịch vụ với PowerShell?

Bạn có thể dừng một dịch vụ bằng cách sử dụng Dừng dịch vụ cmdlet. Để dừng Bộ đệm, hãy chạy lệnh:

Stop-Service -Name spooler

Lệnh ghép ngắn Stop-Service không hiển thị bất kỳ thứ gì sau khi thực thi. Để xem kết quả, hãy sử dụng -PassThru tham số.

Làm thế nào để Quản lý Dịch vụ Windows với PowerShell?

Xin lưu ý rằng không phải mọi dịch vụ đều có thể bị dừng. Nếu có bất kỳ dịch vụ phụ thuộc nào, bạn sẽ thấy lỗi:

Cannot stop service because it has dependent services. It can only be stopped if force flag set.

Làm thế nào để Quản lý Dịch vụ Windows với PowerShell?

Để buộc dừng một dịch vụ, hãy sử dụng –Force tham số. Bạn nên nhớ rằng tất cả các dịch vụ phụ thuộc cũng sẽ ngừng:

Stop-Service samss –Force -Passthru

Lệnh sau sẽ dừng các dịch vụ được chỉ định (bit, bộ đệm) nếu chúng ở trạng thái "Đang chạy":

get-service bits,spooler | where {$_.status -eq 'running'} | stop-service –passthru

Làm thế nào để Quản lý Dịch vụ Windows với PowerShell?

Đôi khi các dịch vụ bị treo ở trạng thái "Đang dừng" và buộc phải bị giết.

Dịch vụ bắt đầu cmdlet bắt đầu một dịch vụ đã dừng:

Start-Service -Name spooler -PassThru

Làm thế nào để Quản lý Dịch vụ Windows với PowerShell?

Một dịch vụ sẽ không bắt đầu, nếu bất kỳ dịch vụ phụ thuộc nào của nó bị dừng. Để tìm và khởi động chúng, hãy sử dụng một lớp lót PowerShell sau:

get-service samss | Foreach { start-service $_.name -passthru; start-service $_.DependentServices -passthru}

Làm thế nào để Quản lý Dịch vụ Windows với PowerShell?

Tạm ngưng dịch vụ lệnh ghép ngắn có thể tạm dừng các dịch vụ nếu chúng hỗ trợ trạng thái này. Để tìm hiểu xem một dịch vụ có thể bị tạm ngưng hay không, hãy sử dụng Nhận dịch vụ lệnh ghép ngắn với CanPauseAndContinue tài sản.

Get-Service samss | Format-List name, canpauseandcontinue

Làm thế nào để Quản lý Dịch vụ Windows với PowerShell?

Để hiển thị danh sách tất cả các dịch vụ có thể bị tạm dừng, hãy chạy lệnh sau:

Get-Service | Where-Object {$_.canpauseandcontinue -eq "True"}

Làm thế nào để Quản lý Dịch vụ Windows với PowerShell?

Hãy tạm ngừng dịch vụ SQLBrowser:

Suspend-Service -Name SQLBrowser

Làm thế nào để Quản lý Dịch vụ Windows với PowerShell?

Để tiếp tục dịch vụ bị tạm ngưng, hãy sử dụng Dịch vụ tiếp tục lệnh ghép ngắn:

Resume-Service -Name SQLBrowser

Làm thế nào để Quản lý Dịch vụ Windows với PowerShell?

Lệnh sau sẽ tiếp tục tất cả các dịch vụ bị tạm ngưng:

get-service | where-object {$_.Status -eq "Paused"} | resume-service

Dịch vụ khởi động lại lệnh ghép ngắn sẽ khởi động lại một dịch vụ:

Restart-Service -Name spooler

Làm thế nào để Quản lý Dịch vụ Windows với PowerShell?

Lệnh này khởi động tất cả các dịch vụ mạng đã dừng trên máy tính:

get-service net* | where-object {$_.Status -eq "Stopped"} | restart-service

Các lệnh này không có - Tên máy tính nhưng bạn có thể chạy chúng trên một máy tính từ xa bằng lệnh ghép ngắn Invoke-Command hoặc một đường dẫn.

Ví dụ:để khởi động lại bộ đệm in trên máy tính từ xa ny-prnt1, hãy chạy lệnh:
Get-Service Spooler -ComputerName ny-prnt1 | Start-Service

Theo mặc định, chỉ quản trị viên mới có thể khởi động / dừng các dịch vụ Windows nhưng bạn có thể cấp cho người dùng không phải quản trị viên quyền bắt đầu / dừng / khởi động lại trên một dịch vụ cụ thể.

Sử dụng Set-Service để Thay đổi Cài đặt Dịch vụ

Set-Service cmdlet cho phép bạn thay đổi bất kỳ thông số hoặc cài đặt nào của dịch vụ trên máy tính cục bộ hoặc máy tính từ xa. Vì trạng thái của một dịch vụ là một thuộc tính, bạn có thể sử dụng lệnh ghép ngắn này để bắt đầu, dừng hoặc tạm ngừng một dịch vụ. Set-Service -StartupType tham số cho phép thay đổi kiểu khởi động của dịch vụ.

Hãy thay đổi kiểu khởi động Bộ đệm thành tự động:

Set-Service spooler –startuptype automatic –passthru

Làm thế nào để Quản lý Dịch vụ Windows với PowerShell?

Bạn có thể đặt kiểu khởi động thủ công:

Set-Service spooler –startuptype manual –passthru

Làm thế nào để Quản lý Dịch vụ Windows với PowerShell?

Cách tạo hoặc xóa dịch vụ Windows qua PowerShell?

Dịch vụ mới - là một lệnh ghép ngắn để tạo một dịch vụ mới trong Windows. Chỉ định tên và tệp thực thi cho dịch vụ mới (thậm chí bạn có thể chạy tập lệnh PowerShell dưới dạng dịch vụ Windows).

Hãy tạo một dịch vụ mới với tên TestSvc:

new-service -name TestSvc -binaryPathName "C:\WINDOWS\System32\svchost.exe -k netsvcs"

Làm thế nào để Quản lý Dịch vụ Windows với PowerShell?

Nhận thông tin về kiểu khởi động và mô tả của dịch vụ bằng lệnh ghép ngắn Get-WmiObject.

get-wmiobject win32_service -filter "name='testservice'"

Làm thế nào để Quản lý Dịch vụ Windows với PowerShell?

Bạn có thể thay đổi cài đặt của dịch vụ mới bằng lệnh sau:

Set-Service -Name TestSvc -Description ‘My Service’ -StartupType Manual

Làm thế nào để Quản lý Dịch vụ Windows với PowerShell?

Để xóa một dịch vụ, hãy chạy lệnh sau:

(Get-WmiObject win32_service -Filter ″name=′TestSvc′″).delete()

Thay đổi Tài khoản Người dùng Chạy Dịch vụ Windows

Bạn có thể sử dụng PowerShell để thay đổi tài khoản người dùng được sử dụng để bắt đầu một dịch vụ. Lấy tên của tài khoản được sử dụng để bắt đầu TestSvc:

get-wmiobject win32_service -filter "name='TestSvc'" | Select name,startname

Làm thế nào để Quản lý Dịch vụ Windows với PowerShell?

Để thay đổi tên người dùng và mật khẩu cho Dịch vụ Windows, hãy chạy các lệnh sau:

$svc = get-wmiobject win32_service -filter "name='TestSvc'"
$svc.GetMethodParameters("change")

Danh sách các tham số của phương thức Change () được hiển thị. Đếm vị trí của các tham số StartName và StartPassword:chúng nằm ở thứ 20 và 21 st địa điểm tương ứng.

Làm thế nào để Quản lý Dịch vụ Windows với PowerShell?

$svc | Invoke-WmiMethod -Name Change –ArgumentList @ ($null,$null,$null,$null,$null,$null,$null, $null,$null,$null,$null,$null,$null,$null,$null,$null, $null,$null,$null,"Administrator","!123Pa$$w0rd")

Hoặc bạn có thể nhập tên của tài khoản gMSA (mật khẩu tài khoản không được chỉ định trong trường hợp này).

Như bạn có thể thấy, PowerShell giúp bạn dễ dàng quản lý các dịch vụ Windows. Bạn có thể tạo, dừng, bắt đầu hoặc tiếp tục các dịch vụ và thay đổi các thuộc tính của chúng. Hầu hết các lệnh ghép ngắn cho phép quản lý các dịch vụ trên máy tính từ xa.