我一直在尝试使用 psexec 这个脚本来获取一系列电脑的进程,我让它工作,但我没有在表格上得到它应该出现的结果,我一直在 psexec 帖子上搜索,但我不知道为什么它让我结果一半,我无法使用 Invoke-command 或 Get-Pssession,因为我组织的防火墙/防病毒和 GPOS 我可以做出个别例外,但每次电脑更新时它们都会重置。
$pathscript = "D:\SCRIPTSM\ALV"
$fpassword = "D:\SCRIPTSM\pswd.json"
$rutaLog = "D:\SCRIPTSM\ALV\fallos.log"
$fecha = Date
Set-Location -Path $pathscript
$JsonObject = Get-Content $fpassword | ConvertFrom-Json
$usuario = 'Administrador'
$password = $JsonObject.password
$equipos = "D:\SCRIPTSM\despFi\equinom.txt"
$listaEquipos = Get-Content $equipos
foreach ($equipo in $listaEquipos){
if (test-connection -ComputerName $equipo -Count 1 -Quiet){
Set-Location -Path "D:\SCRIPTSM\PSTools"
.\psexec.exe \\$equipo -u $usuario -p $password -h powershell.exe Get-Process | Select -First 15 Name,ID,VM,PM >> 'D:\SCRIPTSM\ALV\PRUEBNOMB.txt'
Set-Location -Path $pathscript
}else{
Write-Output "No se puede conectar al equipo --> $equipo" >> $rutaLog
}
} ````
将
Select
(Select-Object
) 调用作为远程执行 PowerShell 命令的一部分,这需要引用远程执行命令:
.\psexec.exe \\$equipo -u $usuario -p $password -h powershell.exe 'Get-Process | Select -First 15 Name,ID,VM,PM' >> 'D:\SCRIPTSM\ALV\PRUEBNOMB.txt'
请注意,您将捕获进程的 for-display 表示,正如您在控制台中看到的那样。
如果您想捕获结构化数据,例如CSV,使用以下内容:
.\psexec.exe \\$equipo -u $usuario -p $password -h powershell.exe 'Get-Process | Select -First 15 Name,ID,VM,PM | ConvertTo-Csv -NoTypeInformation' >> 'D:\SCRIPTSM\ALV\PRUEBNOMB.csv'