我正在尝试学习 Powershell。我有以下脚本:
$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包含 session 的进程 ID。你不能设置它。
参见:
Get-Help about_Automatic_Variables
有关自动变量的完整列表和说明。
编辑:
输出所有记事本进程的进程ID:
Get-Process -Name notepad |
Select -ExpandProperty ID
关于windows - 无法覆盖变量,因为它是只读的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29307941/