我继承了一个系统,它使用一个简单的 psexec 脚本和一个服务器列表,当温度达到阈值或 UPS 电池只剩几分钟时,会自动关闭列表中的服务器。这是由 AVTech 设备管理器执行的。它不再工作(而且可能自从我来到这里以来就没有工作过)。如果我从管理命令提示符(Windows Server 2012 r2)手动执行脚本,我会收到此错误
The filename, directory name, or volume label syntax is incorrect.
有问题的脚本如下所示
c:\avtech\psexec @c:\avtech\scripts\serverlist.txt c:\windows\system32\shutdown.exe -s -f -t 0 >"c:\avtech\log\shutdownlog.txt 2>&1
并且 serverlist.txt 文件当前只有一个条目
server.domain.local
如果我用实际的服务器名称替换 serverlist.txt 文件,它可以正常工作
C:\Windows\system32>C:\AVTECH\psexec \\server.domain.local c:\windows\system32\shutdown.exe -s -f -t 0 >c:\shutdownLog.txt 2>&1
所以一切都很好,如果我不让 psexec 从该服务器列表中抓取。是的,服务器列表的路径是正确的。
毫无疑问,这里的某个地方存在一个简单而明显的错误,但是我对这种事情的经验很少,有什么想法吗?
答案1
答案2
答案3
我倾向于像这样使用它:
psexec.exe \\LAB-PC1 -u LAB-Pc01\admin -p S3cret! -i -d cmd /c shutdown /r /f /t 1
命令行分解:
(psexec 部分)
- -i 交互式会话
- -d 不等待进程终止
(cmd部分)
- 远程主机上的 cmd Windows shell
- /c 运行命令然后终止这里
- 关闭windows关机命令
- /r 重启 (如果要关机则输入 /h)
- /f 强制关机,不等待进程
- /t 1 1 秒超时
你可以用你的@server-list.txt 替换我的 \LAB-PC1,并将其应用于主机列表
编辑
C:\Users\LabAdmin\Desktop\push_software_installer>SO-psexec-server-list.cmd
C:\Users\LabAdmin\Desktop\push_software_installer>\\lab.local\central-store\Software\psTools\psexec
@server-list.txt -u LABDOMAIN\administrador -p S3cret!! -i -d cmd /c w32tm /monitor > output.txt
PsExec v1.98 - Execute processes remotely
Copyright (C) 2001-2010 Mark Russinovich
Sysinternals - www.sysinternals.com
Starting cmd on LAB-PC1...e on LAB-PC1...
cmd started on LAB-PC1 with process ID 30820. <====
Couldn't access LAB-PC2-disabled:
O identificador Ú invßlido.
Couldn't access LAB-PC3-disabled:
O identificador Ú invßlido.
Couldn't access LAB-PC4-disabled:
O identificador Ú invßlido.
Couldn't access LAB-PC5-disabled:
O identificador Ú invßlido.
Connecting to LAB-PC5-disabled...
C:\Users\LabAdmin\Desktop\push_software_installer>`
我的服务器列表.txt
LAB-PC1
LAB-PC2-disabled
LAB-PC3-disabled
LAB-PC4-disabled
LAB-PC5-disabled
注意:我的实验室电脑语言是 PT-PT
它对我有用:)
希望能帮助到你