首页 > 解决方案 > 客户端返回值,读入服务器

问题描述

我正在尝试从远程系统获取主机名、日期和时间,其中在执行服务器端批处理文件时我没有得到想要的结果

参考:远程端批处理文件

@echo off
hostname.exe > __t.tmp
set /p host=<__t.tmp
del __t.tmp
set hst=%host%
set dt=%Date%
Set tm = %Time%
set RETURNVALUE= %host%, %Date%, %Time% 
ENDLOCAL&SET %~1=%RETURNVALUE%

如果我回显“ReturnValue”,这一切都很好

和服务器端批处理文件(iplist.txt 是包含远程机器 IP 的文件)

@echo off
for /f "tokens=*" %%a in ('type iplist.txt') do (
set line=%%a
echo %line%
wmic /node:%line% process call create "cmd.exe D:\\Scripts\\RCMD_TS.bat RtVal"
echo %RtVal%
)
set %%a=
set %a=
set line=
set rt=

这将返回以下内容:

D:\Scripts>ServerSideExecuteRemoteCommand.bat
ECHO is off.
call - Alias not found.
ECHO is off.
ECHO is off.
call - Alias not found.
ECHO is off.
ECHO is off.
call - Alias not found.
ECHO is off.
ECHO is off.
call - Alias not found.
ECHO is off.

我在这里做错了什么?我也可以得到 3 个值(单独的主机名、日期和时间)而不是 1 个(返回值)我试过但它没有发生。

标签: windowsbatch-filecmdreturn-valueremote-access

解决方案


这似乎很容易使用 PowerShell 完成。这不是一个完整的解决方案,但这些可能会有所帮助。当然,需要将网络配置为支持 PowerShell 远程处理。

$HostName = [Net.DNS]::GetHostByAddress('10.24.12.35').HostName
Invoke-Command -ComputerName $HostName -ScriptBlock {Get-Date}

推荐阅读