Tìm kiếm trang web

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:

    DisableImplicitWinCompat
    WindowsPowerShellCompatibilityModuleDenyList
    WindowsPowerShellCompatibilityNoClobberModuleList
    ExperimentalFeatures
    LogChannels
    LogIdentity
    LogKeywords
    LogLevel
    Microsoft.PowerShell:ExecutionPolicy
    PSModulePath
  • Chính sách PowerShell

      ExecutionPolicy
      ConsoleSessionConfiguration
      ModuleLogging
      ProtectedEventLogging
      ScriptBlockLogging
      ScriptExecution
      Transcription
      UpdatableHelp

Khô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.

    DisableImplicitWinCompat
    WindowsPowerShellCompatibilityModuleDenyList
    WindowsPowerShellCompatibilityNoClobberModuleList
    ExecutionPolicy
    PowerShellPolicies

Tắ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:

    ConsoleSessionConfiguration
    ModuleLogging
    ProtectedEventLogging
    ScriptBlockLogging
    ScriptExecution
    Transcription
    UpdatableHelp

Cà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.

    LogChannels
    LogIdentity
    LogKeywords
    LogLevel

Để 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ợ.

    ConsoleSessionConfiguration
    ExperimentalFeatures
    ModuleLogging
    ProtectedEventLogging
    PSModulePath
    ScriptBlockLogging
    ScriptExecution
    Transcription
    UpdatableHelp

ConsoleSessionCấ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ành true. 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ành true. 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ụng Unprotect-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"
    }
}

Bài viết liên quan