Ir ao conteúdo
  • Cadastre-se

Shell Script Status do Computador via Power Shell


Posts recomendados

Boa tarde,

Preciso de Ajuda para buscar uma resposta via powershell.

 

Estou fazendo uma aplicação, para buscar os Status do Computador ( Cpu, memoria )

no caso, as %.

 

Não consegui via powershell, nem via cmd.

 

alguém sabe como obter essa resposta?

Link para o comentário
Compartilhar em outros sites

Powershell:
 

Processador:
Get-WmiObject Win32_Processor | Select LoadPercentage | Format-List

Memória
Get-WmiObject Win32_Processor | Measure-Object -Property LoadPercentage -Average | Select Average

 

Prompt de comando:

Processador:

wmic cpu get loadpercentage /value

 

Memoria Livre:

wmic os get freephysicalmemory /value

 

Memória total:

wmic ComputerSystem get TotalPhysicalMemory

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

@Felipe Bizoli , mas esses comandos retornam isso.

 

O primeiro comando, wmic cpu get loadpercentage /value, já te dá o número em porcentagem mesmo, e com os outros 2 você calcula o percentual da memória usada naquele momento (usada = (1 - freephysicalmemory/TotalPhysicalMemory) * 100).

Link para o comentário
Compartilhar em outros sites

Depois de pesquisar bastante eu descobri que a formula para calcular a porcentagem de memória usada como ela aparece no Gerenciador de Tarefas é:

 

100 - ((Memória Livre / Memória Visível) * 100)

 

Já para pegar a porcentagem de uso do processador seria só pegar o loadpercentage do cpu no wmic porém eu sempre recebo valores diferentes do processador comparando com o que aparece no Gerenciador de tarefas.

 

P2i3Xyw.gif

 

Esse é o arquivo batch que eu usei para fazer os testes:

 

basta copiar para bloco de notas e salvar com extensão *.bat e codificação ANSI:

 

@echo off
chcp 1252 > nul

:Repetir

:: Pega porcentagem de uso Processador:
for /f "skip=1" %%a in ('wmic cpu get loadpercentage') do for /f %%b in ("%%a") do set "PorcentagemUsadaProcessador=%%b"
IF /i "%PorcentagemUsadaProcessador%"=="loadpercentage" set "PorcentagemUsadaProcessador=0"

:: Pega Memovia Visivel
for /f %%a in ('wmic os get totalvisiblememorysize') do for /f %%b in ("%%a") do set MemoriaVisivel=%%b

:: Pega Memoria Live
for /f %%a in ('wmic os get freephysicalmemory') do for /f %%b in ("%%a") do set MemoriaLivre=%%b

:: Foruma para calcular memoria usada:
for /f %%a in ('Powershell 100 - ^(%MemoriaLivre% / %MemoriaVisivel%^) *100') do set PorcentagemMemoriaUsada=%%a

:: Fazendo o arredondamento:
for /f "tokens=1-2 delims=," %%a in ("%PorcentagemMemoriaUsada%") do (
                                                                      set "PorcentagemExata=%PorcentagemMemoriaUsada%"
                                                                      set PorcentagemMemoriaUsada=%%a
                                                                      set Quebrados=%%b
                                                                     )
:: Parece que o Windows não arredonda o valor da memoria para o valor após a virgula
:: IF %Quebrados:~0,1% GEQ 5 set /a PorcentagemMemoriaUsada+=1

cls
chcp 1252 > nul
echo  Processador: %PorcentagemUsadaProcessador%  Memória: %PorcentagemMemoriaUsada% 
timeout /t 1 > nul
goto :Repetir

 

Link para o comentário
Compartilhar em outros sites

Bom dia Ricardo,
tudo bem?
 

Realmente, efetuei alguns testes, e o valor nunca irá bater com o do gerenciador, acredito que, a consulta contem intervalos, por isso, fica diferente.

Editei um PowerShell com esse comando:

Get-WmiObject Win32_OperatingSystem | %{"{0}" -f $_.FreePhysicalMemory/1MB}
Get-WmiObject Win32_OperatingSystem | %{"{0}" -f $_.totalvisiblememorysize/1MB}
Get-WmiObject Win32_Processor | Select-Object -expand LoadPercentage

Irei testar as 2 aplicações, o Bat e o PowerShell, vamos analisar qual dará o retorno perfeito.

Finalizando a aplicação, irei postar para o senhor Analisar.

Obrigado pela ajuda.

Link para o comentário
Compartilhar em outros sites

Sendo que o valor do processador que aparece no Gerenciador de Tarefas é sempre maior (no meu caso) eu desconfio que isso tem alguma coisa a ver com processadores de vários núcleos, pode ser que loadpercentage só pega de um núcleo e o Gerenciador de Tarefas soma o de todos....

Link para o comentário
Compartilhar em outros sites

Boa tarde Ricardo,

Exato, fui rodar no meu servidor, e os valores não bateram, devido a eu estar com multi processadores/núcleos no caso.
essa parte que estou tentando debugar para descobrir.

Mas, o processo está assim, conforme print, mas ainda não está com a regra de 3 para o percentual exato, estou tratando isso agora. 

 

image.png

Link para o comentário
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

Curso de Hacker Ético

LANÇAMENTO!

CLIQUE AQUI E CONFIRA!

* Este curso não é ministrado pela equipe do Clube do Hardware.