về cấu hình PowerShell
Mô tả ngắn
Tệp cấu hình cho PowerShell, thay thế cấu hình Đăng ký.
Mô tả dài
Tệp powershell.config.json chứa cài đặt cấu hình cho PowerShell. PowerShell tải cấu hình này khi khởi động. Các cài đặt cũng có thể được sửa đổi trong thời gian chạy. Trước đây, các cài đặt này được lưu trữ trong Windows Sổ đăng ký cho PowerShell nhưng hiện được chứa trong một tệp để kích hoạt cấu hình trên macOS và Linux.
Tóm tắt cài đặt
Tệp powershell.config.json có thể chứa các khóa sau:
DisableImplicitWinCompatWindowsPowerShellCompatibilityModuleDenyListWindowsPowerShellCompatibilityNoClobberModuleListExperimentalFeaturesLogChannelsLogIdentityLogKeywordsLogLevelMicrosoft.PowerShell:ExecutionPolicyPSModulePathChính sách PowerShell
ExecutionPolicyConsoleSessionConfigurationModuleLoggingProtectedEventLoggingScriptBlockLoggingScriptExecutionTranscriptionUpdatableHelpKhông phải tất cả các khóa đều áp dụng cho tất cả các nền tảng. Khóa PowerShellPolicies chứa các khóa con phản ánh các cài đặt do Chính sách nhóm cửa sổ quản lý. Các khóa con đó cũng áp dụng cho tất cả các nền tảng khi được xác định ở cấp gốc của tệp JSON.
Cảnh báo
Các khóa không được nhận dạng hoặc giá trị không hợp lệ trong tệp cấu hình sẽ bị bỏ qua. Nếu tệp powershell.config.json chứa JSON không hợp lệ thì PowerShell không thể bắt đầu phiên tương tác. Nếu điều này xảy ra, bạn phải sửa tệp cấu hình.
Phạm vi cấu hình
Cài đặt cấu hình có thể được xác định cho tất cả người dùng hoặc ở cấp độ người dùng cá nhân.
Cấu hình tất cả người dùng (được chia sẻ)
Tệp powershell.config.json trong thư mục $PSHOME xác định cấu hình cho tất cả các phiên PowerShell chạy từ bản cài đặt PowerShell đó.
Ghi chú
Vị trí $PSHOME được xác định là cùng thư mục với tập hợp System.Man Management.Automation.dll đang thực thi. Điều này cũng áp dụng cho các phiên bản SDK PowerShell được lưu trữ.
Cấu hình CurrentUser (mỗi người dùng)
Bạn cũng có thể định cấu hình PowerShell trên cơ sở từng người dùng bằng cách đặt tệp vào thư mục cấu hình phạm vi người dùng. Thư mục cấu hình người dùng có thể được tìm thấy trên các nền tảng bằng lệnh Split-Path $PROFILE.CurrentUserCurrentHost.
Ưu tiên phạm vi
Trên Windows, các cài đặt do Chính sách nhóm Windows quản lý sẽ được ưu tiên hơn các cài đặt trong tệp cấu hình. Chính sách nhóm không tồn tại trên nền tảng không phải Windows.
Sau Chính sách nhóm, các cài đặt được xác định ở cấp độ Tất cả người dùng sẽ được ưu tiên hơn các cài đặt được xác định cho cấp độ Người dùng hiện tại.
Cài đặt dành riêng cho Windows
Các cài đặt sau chỉ áp dụng cho nền tảng Windows.
DisableImplicitWinCompatWindowsPowerShellCompatibilityModuleDenyListWindowsPowerShellCompatibilityNoClobberModuleListExecutionPolicyPowerShellPoliciesTắtImplicitWinCompat
Khi được đặt thành true, cài đặt này sẽ tắt tính năng Tương thích với Windows PowerShell. Khả năng tương thích của Windows PowerShell cho phép PowerShell 7 tải các mô-đun Windows PowerShell 5.1 ở chế độ tương thích.
Để biết thêm thông tin, hãy xem about_Windows_PowerShell_Compatibility.
WindowsPowerShellCompatibilityModuleDenyList
Cài đặt này là một loạt các tên mô-đun mà bạn muốn loại trừ khỏi việc tham gia vào tính năng Tương thích Windows PowerShell.
Để biết thêm thông tin, hãy xem about_Windows_PowerShell_Compatibility.
WindowsPowerShellCompatibilityNoClobberModuleList
Cài đặt này là một dãy tên mô-đun không được ghi đè bằng cách tải phiên bản Windows PowerShell 5.1 của mô-đun.
Để biết thêm thông tin, hãy xem about_Windows_PowerShell_Compatibility.
ExecutionPolicy
Nó quan trọng
Cấu hình này chỉ áp dụng trên nền tảng Windows.
Định cấu hình chính sách thực thi cho các phiên PowerShell, xác định tập lệnh nào có thể chạy. Theo mặc định, PowerShell sử dụng chính sách thực thi hiện có.
Đối với cấu hình AllUsers, điều này sẽ đặt chính sách thực thi LocalMachine. Đối với cấu hình CurrentUser, điều này đặt chính sách thực thi CurrentUser.
Ví dụ sau đặt chính sách thực thi của PowerShell thành RemoteSigned.
{
"Microsoft.PowerShell:ExecutionPolicy": "RemoteSigned"
}
Để biết thêm thông tin, hãy xem about_Execution_Policies.
Chính sách PowerShell
Windows có một số cài đặt có thể được quản lý bởi Chính sách nhóm. Thông thường, những cài đặt đó được lưu trữ trong sổ đăng ký Windows. Những cài đặt đó cũng có thể được xác định trong tệp powershell.config.json.
PowerShellPolicies là một đối tượng JSON chứa các cặp khóa-giá trị cho các cài đặt chính sách khác nhau. Các cài đặt chính sách đó cũng có thể được liệt kê ở cấp gốc của tệp JSON, bên ngoài đối tượng PowerShellPolicies. Cài đặt này có thể chứa các khóa con sau:
ConsoleSessionConfigurationModuleLoggingProtectedEventLoggingScriptBlockLoggingScriptExecutionTranscriptionUpdatableHelpCài đặt ScriptExecution được sử dụng để đặt Chính sách thực thi PowerShell. Điều này được ưu tiên hơn cài đặt ExecutionPolicy được mô tả ở trên.
Ví dụ :
{
"PowerShellPolicies": {
"ScriptExecution": {
"ExecutionPolicy": "RemoteSigned"
}
}
}
Để biết mô tả về các cài đặt chính sách khác, hãy xem mô tả trong phần Cài đặt cấu hình chung.
Trên Windows, PowerShell tìm kiếm các cài đặt trong sổ đăng ký. Mọi cài đặt được tìm thấy trong sổ đăng ký đều được ưu tiên. PowerShell tiếp theo đọc cấu hình JSON. Mọi cài đặt được tìm thấy trong PowerShellPolicies và không được xác định trong sổ đăng ký, sẽ được ưu tiên hơn các cài đặt được tìm thấy ở cấp cơ sở của cấu hình JSON.
Để biết thêm thông tin, hãy xem about_Group_Policy_Settings.
Cài đặt cho nền tảng không phải Windows
Các cài đặt sau chỉ áp dụng cho nền tảng Linux và macOS.
Các khóa sau được sử dụng để định cấu hình tính năng ghi nhật ký của PowerShell cho Linux và macOS.
LogChannelsLogIdentityLogKeywordsLogLevelĐể biết mô tả đầy đủ về ghi nhật ký PowerShell cho các hệ thống không phải Windows, hãy xem about_Logging_Non-Windows.
Cài đặt cấu hình chung
Các cài đặt sau có sẵn trên tất cả các nền tảng được hỗ trợ.
ConsoleSessionConfigurationExperimentalFeaturesModuleLoggingProtectedEventLoggingPSModulePathScriptBlockLoggingScriptExecutionTranscriptionUpdatableHelpConsoleSessionCấu hình
Cài đặt này chỉ định cấu hình phiên sẽ được sử dụng cho tất cả các phiên PowerShell. Đây có thể là bất kỳ điểm cuối nào được đăng ký trên máy cục bộ, bao gồm các điểm cuối từ xa PowerShell mặc định hoặc điểm cuối tùy chỉnh có các khả năng vai trò người dùng cụ thể.
Khóa này chứa hai khóa con:
EnableConsoleSessionConfiguration- để bật cấu hình phiên, hãy đặt giá trị thànhtrue. Theo mặc định, giá trị này làfalse.ConsoleSessionConfigurationName- Chỉ định tên của điểm cuối cấu hình nơi PowerShell được chạy. Theo mặc định, không có phiên nào được xác định.
{
"ConsoleSessionConfiguration": {
"EnableConsoleSessionConfiguration": false,
"ConsoleSessionConfigurationName" : []
}
}
Để biết thêm thông tin, hãy xem about_Session_Configurations.
ExperimentalFeatures
Tên của các tính năng thử nghiệm sẽ kích hoạt trong PowerShell. Giá trị mặc định là một mảng trống.
Ví dụ sau đây kích hoạt các tính năng thử nghiệm PSCommandNotFoundSuggestion và PSSubsystemPluginModel khi PowerShell khởi động.
Ví dụ :
{
"ExperimentalFeatures": [
"PSCommandNotFoundSuggestion",
"PSSubsystemPluginModel"
]
}
Để biết thêm thông tin về các tính năng thử nghiệm, hãy xem Sử dụng các tính năng thử nghiệm.
ModuleLogging
Cài đặt này kiểm soát hành vi ghi nhật ký cho mô-đun PowerShell. Cài đặt chứa hai khóa con:
EnableModuleLogging- để bật cấu hình phiên, đặt giá trị thànhtrue. Khi được bật, các sự kiện thực thi quy trình cho các thành viên của mô-đun đã chỉ định sẽ được ghi lại trong tệp nhật ký PowerShell.ModuleNames- Chỉ định tên của các mô-đun cần được ghi lại.
Ví dụ :
{
"ModuleLogging": {
"EnableModuleLogging": true,
"ModuleNames" : [
"PSReadLine",
"PowerShellGet"
]
}
}
Ghi nhật ký sự kiện được bảo vệ
Cài đặt này cho phép bạn định cấu hình Ghi nhật ký sự kiện được bảo vệ. Cài đặt chứa hai khóa con:
EnableProtectedEventLogging- Nếu bạn bật cài đặt chính sách này, các thành phần hỗ trợ cài đặt này sẽ sử dụng chứng chỉ mà bạn cung cấp để mã hóa dữ liệu nhật ký trước khi ghi vào nhật ký. Dữ liệu được mã hóa bằng tiêu chuẩn Cú pháp tin nhắn mật mã (CMS). Bạn có thể sử dụngUnprotect-CmsMessageđể giải mã những tin nhắn được mã hóa này nếu bạn có quyền truy cập vào khóa riêng của chứng chỉ.Chứng chỉ mã hóa- Cung cấp danh sách tên chứng chỉ sẽ được sử dụng để mã hóa.
Ví dụ :
{
"ProtectedEventLogging": {
"EnableProtectedEventLogging": false,
"EncryptionCertificate": [
"Joe"
]
}
}
PSModulePath
Ghi đè cài đặt PSModulePath cho phiên PowerShell này. Nếu cấu hình dành cho người dùng hiện tại, hãy đặt đường dẫn mô-đun CurrentUser. Nếu cấu hình dành cho tất cả người dùng, hãy đặt đường dẫn mô-đun AllUsers.
Cảnh báo
Việc định cấu hình đường dẫn mô-đun AllUsers hoặc CurrentUser ở đây không thay đổi vị trí cài đặt trong phạm vi cho các lệnh ghép ngắn PowerShellGet như Install-Module. Các lệnh ghép ngắn này luôn sử dụng đường dẫn mô-đun mặc định.
Nếu không có giá trị nào được đặt, PowerShell sẽ sử dụng giá trị mặc định cho cài đặt đường dẫn mô-đun tương ứng. Để biết thêm thông tin về các giá trị mặc định này, hãy xem about_PSModulePath.
Cài đặt này cho phép sử dụng các biến môi trường bằng cách nhúng chúng vào giữa các ký tự %, như "%HOME%\Documents\PowerShell\Modules", giống như cách mà Lệnh Windows Shell cho phép. Cú pháp này cũng áp dụng trên Linux và macOS. Xem bên dưới để biết ví dụ.
Ví dụ này hiển thị cấu hình PSModulePath cho môi trường Windows:
{
"PSModulePath": "C:\\Program Files\\PowerShell\\6\\Modules"
}
Ví dụ này hiển thị cấu hình PSModulePath cho môi trường macOS hoặc Linux:
{
"PSModulePath": "/opt/powershell/6/Modules"
}
Ví dụ này cho thấy việc nhúng biến môi trường trong cấu hình PSModulePath. Lưu ý rằng bằng cách sử dụng biến môi trường HOME và dấu phân cách thư mục /, cú pháp này hoạt động trên Windows, macOS và Linux.
{
"PSModulePath": "%HOME%/Documents/PowerShell/Modules"
}
Ví dụ này sử dụng biến môi trường chỉ hoạt động trên macOS và Linux:
{
"PSModulePath": "%XDG_CONFIG_HOME%/powershell/Modules"
}
Ghi chú
Không thể nhúng các biến PowerShell trong cấu hình PSModulePath. Cấu hình PSModulePath trên Linux và macOS phân biệt chữ hoa chữ thường. Cấu hình PSModulePath phải sử dụng các dấu phân cách thư mục hợp lệ cho nền tảng. Trên macOS và Linux, điều này có nghĩa là /. Trên Windows, cả / và \ đều hoạt động.
ScriptKhốighi nhật ký
Cài đặt này kiểm soát việc ghi nhật ký tất cả đầu vào tập lệnh PowerShell. Cài đặt này chứa hai khóa con:
EnableScriptBlockLogging- Nếu bạn bật cài đặt chính sách này, PowerShell sẽ ghi lại quá trình xử lý lệnh, khối tập lệnh, hàm và tập lệnh cho dù được gọi theo cách tương tác hay thông qua tự động hóa.EnableScriptBlockInvocationLogging- cho phép ghi nhật ký các sự kiện bắt đầu và dừng khối tập lệnh.
Ví dụ :
"ScriptBlockLogging": {
"EnableScriptBlockInvocationLogging": true,
"EnableScriptBlockLogging": false
}
Phiên âm
Cài đặt chính sách này cho phép bạn nắm bắt đầu vào và đầu ra của lệnh PowerShell trong bản ghi dựa trên văn bản. Nếu bạn bật cài đặt chính sách này, PowerShell sẽ bật phiên âm cho tất cả các phiên PowerShell.
Cài đặt này kiểm soát cách hoạt động của phiên âm trong PowerShell. Cài đặt này chứa ba khóa con:
EnableTranscripting- Khi cài đặt này được bật, PowerShell sẽ tạo tệp nhật ký phiên âm ở vị trí đã định cấu hình.EnableInvocationHeader- Theo mặc định, PowerShell bao gồm tiêu đề ở đầu tệp nhật ký phiên âm. Bạn có thể tắt tiêu đề bằng cài đặt này.OutputDirectory- Cài đặt này cho phép bạn thu thập các tệp nhật ký phiên âm ở vị trí trung tâm thay vì vị trí mặc định.
Ví dụ :
{
"Transcription": {
"EnableTranscripting": true,
"EnableInvocationHeader": true,
"OutputDirectory": "c:\\tmp"
}
}
Để biết thêm thông tin, hãy xem Bản ghi bắt đầu.
UpdatableHelp
Cài đặt chính sách này cho phép bạn đặt giá trị mặc định của tham số SourcePath trên lệnh ghép ngắn Update-Help. Giá trị mặc định này có thể được ghi đè bằng cách chỉ định một giá trị khác bằng tham số SourcePath.
Ví dụ :
{
"UpdatableHelp": {
"DefaultSourcePath": "f:\\temp"
}
}