Ejercicios de PowerShell: ejercicios sobre hilos

# Mostrar threads
(Get-Process | select name,Threads).Threads.id

# Nombre del proceso que tiene un identificador
Get-Process -id 5708

# No funciona porque no se puede enlazar el parámetro Id con processhandle
Get-WmiObject -Class Win32_Thread | select handle,processhandle,(Get-Process -id processhandle)

# Listar hilos de cada proceso
# Relación entre procesos e hilos
# Mostrar los hilos de cada proceso utilizando WMI y el cmdlet Get-Process
Get-WmiObject Win32_Thread | %{
    $_.Handle,$_.ProcessHandle,(Get-Process -Id $_.ProcessHandle).ProcessName
}

# Mostrar información sobre los hilos de todos los procesos que se están ejecutando (qué proceso ejecuta el hilo)
# Relación entre procesos e hilos (otro método) (HILOS -> PROCESOS)
Get-WmiObject -Class Win32_Thread | select handle,processhandle, @{Name="Name Process"; Expression = {((Get-Process -Id $_.processhandle).name)}}

# Mostrar los hilos del proceso Notepad (PROCESOS -> HILOS)
Get-Process -name notepad | select Name,Threads

(Get-WmiObject -Class Win32_Thread -Filter "ProcessHandle = $((gps -name notepad).id)") | %{
    $_.Handle, $_.ProcessHandle, (Get-Process -Id $_.ProcessHandle).ProcessName
}

# Mostrar todos los hilos que ejecutan los procesos (PROCESOS -> HILOS)
Get-Process | select Name,Threads | %{
    $_.Name,($_.Threads).id
}

# Almacenar en un fichero los nombres de los procesos y el número de hilos que tienen
Get-Process | select Name,Threads | %{
    $_.Name + "->" + ($_.Threads).id.count | Out-File monitorizar.txt -Append
}

# Almacenar en un fichero los nombres de los procesos y el número de hilos que tienen (de forma continuada)
for(1)
{
    Get-Process | select Name,Threads | %{
        $_.Name + "->" + ($_.Threads).id.count | Out-File monitorizar.txt -Append
    }
    Start-Sleep -Seconds 10
}

# Almacenar en un fichero los nombres de los procesos y el número de hilos que tienen (de forma continuada junto con la fecha)
for(1)
{
    "----------------------------------------------" | Out-File monitorizar.txt -Append
    Get-Date | Out-File monitorizar.txt -Append
    Get-Process | select Name,Threads | %{
        $_.Name + "->" + ($_.Threads).id.count | Out-File monitorizar.txt -Append
    }
    Start-Sleep -Seconds 10
}

# Almacenar en un fichero los nombres de los procesos y el número de hilos que tienen mediante una función (de forma continuada junto con la fecha)
function contarhilos($Threads)
{
    $Threads.count
}

for(1)
{
    "----------------------------------------------" | Out-File monitorizar.txt -Append
    Get-Date | Out-File monitorizar.txt -Append
    Get-Process | select Name,Threads | %{
        $_.Name + "->" + (contarhilos($_.Threads)) | Out-File monitorizar.txt -Append
    }
    Start-Sleep -Seconds 10
}