powershell Psexec没有给我完整的结果,给予我

xqkwcwgp  于 2023-10-18  发布在  Shell
关注(0)|答案(1)|浏览(129)

我一直在尝试这个脚本使用psexec获得一系列的个人电脑的进程,我让它工作,但我没有得到它应该出现在表上的结果,我一直在搜索psexec的帖子,但我不知道为什么它让我的结果在一半,我不能使用phrase命令或获取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

    }
} ````
shstlldc

shstlldc1#

SelectSelect-Object)调用作为远程执行的PowerShell命令的一部分,这需要 * 引用 * 远程执行的命令:

# Note the '...' around the `Get-Process | Select-Object ...` pipeline
.\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 * 表示,就像您在控制台中看到的那样-请参阅下面的替代方法。
  • 输出被附加到(caller-)local 文件;如果你想保存到 remote 机器上的一个文件,也可以把>>重定向移到'...'里面(你不需要在目标文件路径周围加上'--省略它们就行了)。
  • 包含远程执行命令的'...'参数被隐式传递到powershell.exeWindows PowerShell CLI)的-Commandc)参数。
  • 顺便说一句:对于pwsh.exePowerShell (Core) 7+ CLI,在传递命令时必须指定-Command-c)*,因为执行 * 脚本文件 * 的-File参数是默认值。

如果你想捕获 * 结构化数据 *,例如:CSV,通过ConvertTo-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'

注意事项:

  • 同样,如果您想保存输出文件 * 远程 *,请完全忽略>>重定向,并将ConvertTo-Csv替换为Export-Csv和目标文件路径:

... | Export-Csv -NoTypeInformation D:\SCRIPTSM\ALV\PRUEBNOMB.csv
至于你尝试了

  • 在您的尝试中,Select -First 15 Name,ID,VM,PM在远程执行的Get-Process的 * 字符串输出 * 上 * 本地 * 运行。
  • 由于[string]示例没有诸如NameID,.,Select-Object creates custom objects with such properties whose value is $null`之类的属性,导致您看到的输出行为空。

相关问题