about_Telemetry

简短说明

介绍在 PowerShell 中收集的遥测以及如何选择退出。

详细说明

PowerShell 使用 Application Insights 向 Microsoft 发送基本遥测数据。 此数据帮助我们更好地了解使用 PowerShell 的环境,并能确定新功能和修复的优先级。 PowerShell 在发送遥测信息之前会先将其匿名化。

PowerShell 在启动时发送以下信息:

  • 操作系统的制造商、名称和版本
  • PowerShell 的版本
  • POWERSHELL_DISTRIBUTION_CHANNEL 环境变量的值
  • PowerShell 使用的 Application Insights SDK 的版本
  • 基于 IP 地址的主机地理位置
  • 传递给 pwsh 的参数,没有参数值
  • 当前会话的执行策略设置
  • 一个随机生成的 GUID,代表运行实例的用户
  • 一个随机生成的 GUID,代表会话实例

仅在启动 pwsh 可执行文件时收集启动遥测数据。 如果 PowerShell 引擎嵌入到某个其他的主机应用程序中,则不会发送此信息。

注意

Application Insights 使用主机 IP 地址来确定地理位置。 IP 地址永远不会包含在遥测数据中或存储在数据库中。 有关详细信息,请参阅地理位置和 IP 地址处理

PowerShell 在会话期间发送以下信息:

  • PowerShell.Create() API 的调用的计数
  • 导入的 Microsoft 自有模块的名称和版本
  • 具有 CrescendoBuilt 标记的导入模块计数
  • 启用的试验性功能的名称
  • 禁用的试验性功能的名称
  • $PSNativeCommandUseErrorActionPreference 首选项变量的值,truefalseunset
  • 远程会话打开操作计数

$Env:POWERSHELL_DISTRIBUTION_CHANNEL 环境变量由安装程序包设置,用于记录 PowerShell 的安装方法和源。 由于此信息包含在发送给 Microsoft 的遥测数据中,因此用户不应更改此值。

PowerShell 在所有平台上的所有主机应用程序的会话生存期内定期发送此信息。

禁用遥测

有两种方法可以禁用遥测数据的发送。

  • 在所有平台上,将环境变量$Env:POWERSHELL_TELEMETRY_OPTOUT设置为trueyes1。 要使此环境变量生效,必须在启动 PowerShell 进程之前设置它。 有关详细信息,请参阅 about_Environment_Variables

  • 从 Windows 上的 PowerShell 7.4.16 开始,PowerShell 遵循 Windows 中的 Diagnostics 和 feedback 设置。 使用以下步骤在Windows中禁用遥测。

    1. 打开 “设置” 应用并导航到 隐私和安全>诊断和反馈
    2. 展开 “诊断数据 ”部分。
    3. “发送可选诊断数据”下,将开关设置为 “关闭”。

延伸阅读