我一直在尝试这个脚本使用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
}
} ````
1条答案
按热度按时间shstlldc1#
将
Select
(Select-Object
)调用作为远程执行的PowerShell命令的一部分,这需要 * 引用 * 远程执行的命令:注意事项:
>>
重定向移到'...'
里面(你不需要在目标文件路径周围加上'
--省略它们就行了)。'...'
参数被隐式传递到powershell.exe
(Windows PowerShell CLI)的-Command
(c
)参数。pwsh.exe
,PowerShell (Core) 7+ CLI,在传递命令时必须指定-Command
(-c
)*,因为执行 * 脚本文件 * 的-File
参数是默认值。如果你想捕获 * 结构化数据 *,例如:CSV,通过
ConvertTo-Csv
使用以下内容:注意事项:
>>
重定向,并将ConvertTo-Csv
替换为Export-Csv
和目标文件路径:... | Export-Csv -NoTypeInformation D:\SCRIPTSM\ALV\PRUEBNOMB.csv
至于你尝试了:
Select -First 15 Name,ID,VM,PM
在远程执行的Get-Process
的 * 字符串输出 * 上 * 本地 * 运行。[string]
示例没有诸如Name
,ID
,.,Select-Object creates custom objects with such properties whose value is
$null`之类的属性,导致您看到的输出行为空。