pau*_*ter 5 windows powershell
我正在努力学习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
}
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:
无法覆盖变量PID,因为它是只读或常量.在行:7 char:1 + $ pid = 1 + ~~~~~~~~ + CategoryInfo:WriteError:(PID:String)[],SessionStateUnauthorizedAccessException + FullyQualifiedErrorId:VariableNotWritable无法覆盖变量PID,因为它是只读的或不变.在行:11 char:1 + $ pid = $ process.ID + ~~~~~~~~~~~~~~~~~~ + CategoryInfo:WriteError:(PID:String)[],SessionStateUnauthorizedAccessException + FullyQualifiedErrorId :VariableNotWritable Start-Job:无法覆盖变量pid,因为它是只读或常量.在行:12 char:5 + Start-Job -ScriptBlock $ cmd -ArgumentList $ pid
我在这做错了什么?
$PID是一个保留的自动变量,包含会话的进程ID.你不能设置它.
看到:
Get-Help about_Automatic_Variables
Run Code Online (Sandbox Code Playgroud)
有关自动变量的完整列表和说明.
编辑:
要输出所有记事本进程的进程ID:
Get-Process -Name notepad |
Select -ExpandProperty ID
Run Code Online (Sandbox Code Playgroud)