加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Windows > 正文

windows – 无法覆盖变量,因为它是只读的

发布时间:2020-12-14 02:06:05 所属栏目:Windows 来源:网络整理
导读:我正在努力学习Power shell.我有以下脚本: $cmd = { param($pid) Write-Host $pid}$processes = Get-Process -Name notepadforeach ($process in $processes) { $pid = $process.ID Start-Job -ScriptBlock $cmd -ArgumentList $pid} 我收到以下错误: Cann
我正在努力学习Power shell.我有以下脚本:

$cmd = {
  param($pid)
  Write-Host $pid
}

$processes = Get-Process -Name notepad
foreach ($process in $processes) 
{ 
    $pid = $process.ID
    Start-Job -ScriptBlock $cmd -ArgumentList $pid
}

我收到以下错误:

Cannot overwrite variable PID because it is read-only or constant. At
line:7 char:1
+ $pid = 1
+ ~~~~~~~~
+ CategoryInfo : WriteError: (PID:String) [],SessionStateUnauthorizedAccessException
+ FullyQualifiedErrorId : VariableNotWritable Cannot overwrite variable PID because it is read-only or constant. At line:11 char:1
+ $pid = $process.ID
+ ~~~~~~~~~~~~~~~~~~
+ CategoryInfo : WriteError: (PID:String) [],SessionStateUnauthorizedAccessException
+ FullyQualifiedErrorId : VariableNotWritable Start-Job : Cannot overwrite variable pid because it is read-only or constant. At line:12
char:5
+ Start-Job -ScriptBlock $cmd -ArgumentList $pid

我在这做错了什么?

解决方法

$PID是一个 reserved,automatic variable,包含会话的进程ID.你不能设置它.

看到:

Get-Help about_Automatic_Variables

有关自动变量的完整列表和说明.

编辑:

要输出所有记事本进程的进程ID:

Get-Process -Name notepad |
   Select -ExpandProperty ID

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读