Biến tự động trong PowerShell là gì

Bien Tu Dong Trong Powershell La Gi



PowerShell của “ Biến tự động ” rất cần thiết cho các hoạt động quản lý hệ thống, tự động hóa và viết kịch bản. Các biến này được thời gian chạy PowerShell tích hợp sẵn và đóng vai trò là trình giữ chỗ để lưu trữ và tham chiếu thông tin cụ thể trong quá trình thực thi tập lệnh hoặc lệnh. Hiểu và sử dụng các biến tự động này một cách hiệu quả có thể nâng cao đáng kể hiệu quả và chức năng của các tập lệnh PowerShell.

Bài viết này nhằm mục đích khám phá khái niệm “Biến tự động” trong PowerShell, tầm quan trọng của chúng và cách chúng có thể được tận dụng trong các tình huống khác nhau.







Biến tự động trong PowerShell là gì?

Để bắt đầu, hãy đi sâu vào định nghĩa của “ Biến tự động ”. Các biến này được xác định trước và được PowerShell tạo tự động trong quá trình thực thi tập lệnh. Chúng phục vụ các mục đích khác nhau, bao gồm cung cấp thông tin về hệ thống, đối số dòng lệnh, chi tiết liên quan đến tập lệnh, v.v.



PowerShell cung cấp một số “Biến tự động” và mỗi biến phục vụ một mục đích riêng biệt trong việc thực thi tập lệnh. Các biến này như sau:



1. Bảng $PSVersion

Một trong những biến tự động cơ bản trong PowerShell là “ $PSVersionTable ”. Biến này cho phép các nhà phát triển tập lệnh xác định phiên bản PowerShell đang được sử dụng, điều này có thể rất quan trọng khi xem xét tính tương thích và tính khả dụng của một số tính năng và chức năng nhất định.





Các thuộc tính sau được liên kết với biến này:

Phiên bản PS: Trả về số phiên bản PowerShell.



PSEPhiên bản: Đối với PowerShell 4 trở về trước, cũng như PowerShell 5.1 trên các phiên bản Windows đầy đủ tính năng, thuộc tính này có giá trị “Máy tính để bàn”. Đặc điểm này có giá trị là Core cho PowerShell 6 trở lên, cũng như Windows PowerShell 5.1 cho các phiên bản ít dấu chân như Windows Nano Server hoặc Windows IoT.

GitCommitId: Tìm nạp ID cam kết GitHub của tệp nguồn.

BẠN: Ghi thông tin về hệ thống máy tính mà PowerShell đang sử dụng.

Nền tảng: Trả về nền tảng hỗ trợ của hệ điều hành. Unix có giá trị trên Linux và macOS. Hãy xem $IsMacOs và $IsLinux.

Phiên bản tương thích PS: Các phiên bản PowerShell tương thích với phiên bản hiện tại được trả về.

Phiên bản PSRemotingProtocol: Trả về số phiên bản cho giao thức quản lý từ xa PowerShell.

Tuần tự hóaPhiên bản: Trả về phiên bản của phương thức tuần tự hóa.

WSManStackPhiên bản: Trả về số phiên bản của ngăn xếp WS-Management.

$ PSPhiên bảnBảng

2. $Args

Một biến tự động cần thiết khác trong PowerShell là “ $Args ”, chứa một mảng các đối số dòng lệnh được truyền cho tập lệnh hoặc hàm. Biến này trao quyền cho các nhà phát triển xử lý và thao tác các đối số được cung cấp một cách linh hoạt trong các tập lệnh của họ.

Khi xác định một hàm, bạn có thể sử dụng từ khóa “param” để khai báo các tham số hoặc bạn có thể thêm danh sách các tham số được phân tách bằng dấu phẩy trong dấu ngoặc đơn sau tên hàm. Biến “$Args” của một hành động sự kiện lưu trữ các đối tượng đóng vai trò là trình giữ chỗ cho các tham số sự kiện của sự kiện đang được xử lý:

cho mỗi ( $arg TRONG $Args ) {
Máy chủ ghi $arg
}

3. $MyInvocation

Các ' $MyInvocation ” biến cung cấp dữ liệu cơ bản quan trọng về tập lệnh hoặc quy trình hiện đang chạy. Nó cung cấp các thuộc tính như tên tập lệnh, số dòng tập lệnh và liệu tập lệnh đang được chạy tương tác hay không tương tác. Các thuộc tính này giúp các nhà phát triển tập lệnh triển khai logic phân nhánh, xác định cơ chế xử lý lỗi hoặc tạo báo cáo và ghi nhật ký có ý nghĩa:

$ Yêu cầu của tôi

4. Lỗi $

Một biến tự động ít được biết đến “ $Lỗi ”, nắm bắt hiệu quả bất kỳ thông báo lỗi hoặc ngoại lệ nào xảy ra trong quá trình thực thi tập lệnh. Có thể truy cập “$Error” để truy xuất các chi tiết lỗi cụ thể như thông báo ngoại lệ, dấu vết ngăn xếp hoặc mã lỗi, cho phép phân tích và gỡ lỗi chi tiết.

Lỗi gần đây nhất được biểu thị bằng đối tượng lỗi đầu tiên trong mảng “ $Lỗi[0] “. Bạn có thể sử dụng tùy chọn chung ErrorAction với giá trị “Ignore” để ngăn các lỗi được thêm vào mảng “$Error”.

Giả sử chúng ta đã gõ một lệnh chính xác:

ip [ onfig

Bây giờ, nếu chúng ta nhập lệnh ghép ngắn “$Error”:

$ Lỗi

5. Lệnh $PSC

Khi làm việc với các mô-đun PowerShell, biến tự động “ $PSCmdlet ” có hiệu lực. Biến này cung cấp quyền truy cập vào phiên bản hiện tại của lệnh ghép ngắn hoặc hàm đang được gọi, tạo điều kiện tương tác trực tiếp với các thuộc tính và phương thức của nó.

Sử dụng “$PSCmdlet”, các nhà phát triển tập lệnh nâng cao có thể tinh chỉnh và nâng cao hành vi của các mô-đun bằng cách mở rộng hoặc sửa đổi các chức năng tích hợp sẵn. Bạn có thể sử dụng các thuộc tính và phương thức của đối tượng trong lệnh ghép ngắn hoặc mã chức năng của mình để đáp ứng các tiêu chí sử dụng:

chức năng typeof-psCmdlet {
[ cmdletBinding ( ) ] thông số ( )
tiếng vang 'loại ` $psCmdlet $($psCmdlet.GetType() .Họ và tên)'
}

typeof-psCmdlet

Ngoài các biến nói trên, PowerShell bao gồm các biến tự động như $HOME, $PROFILE, $PWD, v.v., phục vụ các mục đích khác nhau, chẳng hạn như truy cập đầu vào, theo dõi lỗi, truy xuất thông tin môi trường, quản lý tham số, v.v. Các biến này được liệt kê dưới đây:

Biến tự động Sự miêu tả
$$ Giữ mã thông báo cuối cùng trong dòng trước mà phiên PowerShell nhận được.
$? Lưu trữ trạng thái thực thi của lệnh cuối cùng.
$^ Chứa mã thông báo đầu tiên của dòng cuối cùng mà phiên nhận được.
$_ Đại diện cho đối tượng hiện tại trong đường ống.
$ConsoleFileName Chứa đường dẫn của tệp bảng điều khiển (.psc1) được sử dụng gần đây nhất trong phiên.
$EnabledExperimentalFeatures Chứa danh sách các tính năng thử nghiệm đã bật.
sự kiện $ Chứa một đối tượng “PSEventArgs” đại diện cho sự kiện đang được xử lý.
$EventArgs Chứa đối số sự kiện đầu tiên của sự kiện đang được xử lý.
$EventSubscriber Đại diện cho người đăng ký sự kiện của sự kiện đang được xử lý.
$ExecutionContext Đại diện cho bối cảnh thực thi của máy chủ PowerShell.
$false Đại diện cho giá trị Boolean “Sai”.
$foreach Chứa điều tra viên của vòng lặp “for-Each”.
$HOME Chứa đường dẫn đầy đủ của thư mục chính của người dùng.
$host Đại diện cho ứng dụng máy chủ hiện tại cho PowerShell.
đầu vào $ Phục vụ như một điều tra viên cho tất cả đầu vào được chuyển đến một chức năng hoặc tập lệnh.
$IsCoreCLR Cho biết nếu phiên đang chạy trên .NET Core Runtime (CoreCLR).
$IsLinux Cho biết nếu phiên đang chạy trên hệ điều hành Linux.
$IsMacOS Cho biết nếu phiên đang chạy trên hệ điều hành MacOS.
$IsWindows Xác định xem phiên có đang chạy trên hệ điều hành Windows hay không.
$LASTEXITCODE Lưu trữ mã thoát của chương trình gốc hoặc tập lệnh PowerShell cuối cùng.
$Match Chứa các chuỗi khớp từ toán tử “-match” và “-notmatch”.
$NestedPromptLevel Theo dõi mức lời nhắc hiện tại trong các lệnh lồng nhau hoặc tình huống gỡ lỗi.
$null Đại diện cho một giá trị null hoặc rỗng.
$PID Chứa mã định danh quy trình (PID) của phiên PowerShell.
$PROFILE Chứa đường dẫn đầy đủ của cấu hình PowerShell cho ứng dụng máy chủ và người dùng hiện tại.
Tham số $PSBound Giữ một từ điển các tham số được truyền cho một tập lệnh hoặc hàm và các giá trị của chúng.
$PSCommandPath Chứa đường dẫn đầy đủ và tên tệp của tập lệnh đang được thực thi.
$PSCulture Phản ánh văn hóa của không gian chạy PowerShell hiện tại.
$PSEdition Chứa thông tin phiên bản PowerShell.
$PSHOME Chứa đường dẫn đầy đủ của thư mục cài đặt PowerShell.
$PSItem Tương tự như $_, đại diện cho đối tượng hiện tại trong đường dẫn.
$PSScriptRoot Chứa đường dẫn đầy đủ của thư mục mẹ của tập lệnh đang thực thi.
$PSSenderInfo Chứa thông tin về người dùng đã bắt đầu PSSession.
$PSUICulture Phản ánh văn hóa giao diện người dùng (UI) được định cấu hình trong hệ điều hành.
$NKT Đại diện cho thư mục làm việc hiện tại của phiên PowerShell.
$Người gửi Chứa đối tượng đã tạo ra một sự kiện.
$ShellId Chứa định danh của shell hiện tại.
$StackTrace Lưu trữ dấu vết ngăn xếp cho lỗi gần đây nhất.
$switch Chứa phần liệt kê của câu lệnh “Switch”.
$này Đề cập đến thể hiện của một lớp trong các khối tập lệnh mở rộng các lớp.
$true Đại diện cho giá trị Boolean “True”.

Có thể tìm thấy tất cả các 'biến tự động' trong PowerShell bằng cách chạy lệnh bên dưới:

Nhận biến

Phần kết luận

Biến tự động ” tạo thành xương sống của tập lệnh PowerShell, cho phép nhà phát triển lấy thông tin về hệ thống, đối số dòng lệnh, ngữ cảnh thực thi tập lệnh, v.v. Bằng cách khai thác các biến tự động chẳng hạn như “$PSVersionTable”, “$Args”, “$MyInvocation”, “$Error” và các biến khác, các nhà phát triển tập lệnh PowerShell có thể tạo ra các phương pháp quản trị hệ thống hợp lý.