作为Team Build MSBuild脚本的一部分,我们需要在远程服务器上执行部署批处理文件:
<Exec Command="psexec -accepteula \\servername D:\Build_Drop\DeploySites.bat "/>
Run Code Online (Sandbox Code Playgroud)
我可以确认它不是权限或防火墙:例如,如果将bat命令更改为运行iisreset或calc.exe,则该命令将起作用.
我已经尝试了-s和> nul标志,并且还在调用cmd时包装批处理文件.我已尝试在bat cmd周围使用和不使用引号.
我尝试的所有选项都可以在构建服务器上的cmd行中正常工作,但是没有一个可以在构建脚本本身内工作.
有任何想法吗?
我正在尝试在多台远程计算机上运行批处理文件。它有一些注册表更改和其他我可以远程运行的命令。我有一个命令我无法找到替代方案:
net user USERNAME /PASSWORDREQ:yes
Run Code Online (Sandbox Code Playgroud)
有没有办法在不使用 psexec 的情况下远程运行此命令?我不想将我的批处理文件与依赖项一起分发。
我正在运行TeamCity版本7.1.4,其中包含使用PSEXEC的步骤,以便在远程计算机上运行批处理文件.批处理文件应提取文件并进行部署.从命令提示符运行PSEXEC完成任务.从团队城市运行我总是得到以下挂起:
PsExec v1.98 - 远程执行进程[12:19:34]版权所有(C)
2001-2010 Mark Russinovich [12:19:34] Sysinternals -
www.sysinternals.com
我需要在远程计算机上执行一些脚本,我尝试启动记事本.我用psexec这个命令
psexec -e -i 1 \\localhost -u domain\user -p password cmd /c notepad.exe
Run Code Online (Sandbox Code Playgroud)
在我的本地计算机上成功打开记事本,但不在远程上执行.我看不到任何错误,输出与我在本地机器上执行后看到的相同:
PsExec v2.0 - Execute processes remotely
Copyright (C) 2001-2013 Mark Russinovich
Sysinternals - www.sysinternals.com
Run Code Online (Sandbox Code Playgroud)
可能是因为我无法在远程计算机上成功执行记事本?
当我在参数中添加双引号时,为什么下面的psexec执行命令失败?

.bat文件的内容如下:
set FILEPATH=%~1
set BAT_ARCHIVE_IDENTIFIER=%~2
set DEPLOYMENT_ROOT=%~3
echo %FILEPATH% %BAT_ARCHIVE_IDENTIFIER% %DEPLOYMENT_ROOT%
Run Code Online (Sandbox Code Playgroud) command-line batch-file command-prompt psexec command-line-arguments
var p = Process.Start(@"c:\PsTools\PsExec.exe", @"C:\Windows\System32\notepad.exe");
var err = p.StandardError.ReadToEnd();
var msg = p.StandardOutput.ReadToEnd();
lblStatusResponse.Text = "Err: " + err + "Msg: " + msg;
Run Code Online (Sandbox Code Playgroud)
为什么我的代码不起作用?
我收到错误消息:
System.InvalidOperationException:StandardError尚未重定向。
但是当我添加以下内容时:
p.StartInfo.RedirectStandardError = true;
var p = Process.Start(@"c:\PsTools\PsExec.exe", @"C:\Windows\System32\notepad.exe");)
Run Code Online (Sandbox Code Playgroud)
它仍然会出现相同的错误。
主要问题是我想执行带有参数的exe,但无法正常工作。
请考虑以下情形:
我们有以下R脚本(DB.r):
lib.directory = "D:\\RTest"
install.packages("RODBC", repos = "http://cran.us.r-project.org", lib = lib.directory)
library(RODBC, lib.loc = lib.directory)
db.string <- "driver={ODBC Driver 13 for SQL Server};server=DBServer;database=Databse1;trusted_connection=Yes;"
db.channel <- odbcDriverConnect(db.string)
close(db.channel)
Run Code Online (Sandbox Code Playgroud)
Server1使用以下代码在R Server上远程执行R脚本:
PsExec.exe \\RServer "C:\Program Files\R\R-3.4.3\bin\Rscript.exe" "D:\RTest\DB.r"
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:
[RODBC] ERROR: state 28000, code 18456, message [Microsoft][ODBC Driver 13 for SQL Server][SQL Server]Login failed for user 'NT AUTHORITY\ANONYMOUS LOGON'.
Run Code Online (Sandbox Code Playgroud)
如何在不发送用户名和密码作为PsExec的一部分的情况下解决此错误?
我们愿意使用任何替代方法来取代PsExec.
我正在尝试使用 psexec.exe 在远程计算机上运行批处理文件
我的代码是;
psexec.exe \\192.168.13.187 -u Administrator -p default -d -i c:\temp\abc.bat
Run Code Online (Sandbox Code Playgroud)
但是当我在命令提示符下执行此操作时,它连接到远程服务器的 system32 文件夹然后启动批处理文件。问题是批处理文件中有一些 CALL 方法(如 CALL XXX.BAT)(XXX.BAT 文件在同一个文件夹。)由于psexec.exe 使用system32 文件夹作为根路径,因此在成功运行c:\temp\abc.bat 文件后,它无法调用其他批处理文件。抛出'找不到指定的文件'..
我的问题是;连接远程计算机后,如何使用远程 C:\temp\ 文件夹作为根路径?
提前感谢您的帮助!!
Psexec无法在远程会话上为我显示记事本GUI。因此,我正在尝试获取会话ID,如下所示:
c:\Users\Amitra\Downloads\PSTools>PsExec -u administrator -p force \\135.20.230.160 query session
PsExec v2.11 - Execute processes remotely
Copyright (C) 2001-2014 Mark Russinovich
Sysinternals - www.sysinternals.com
SESSIONNAME USERNAME ID STATE TYPE DEVICE
>services 0 Disc
rdp-tcp#0 Administrator 1 Active rdpwd
console 4 Conn
rdp-tcp 65536 Listen
query exited on 135.20.230.160 with error code 1.
Run Code Online (Sandbox Code Playgroud)
现在,使用上面的输出,在psexec中正确的命令在IP地址上运行记事本应该是什么?
我有一个将可执行文件和 .ps1 保存到远程计算机列表的脚本。然后在每台计算机上运行可执行文件。由于静默运行时的设置方式,我必须使用 .ps1 调用可执行文件。
我注意到我的一个命令从命令行快速运行,但似乎挂在我的脚本中。有什么理由会发生这种情况吗?
命令是:
psexec -s @C:\myscript\computers.txt cmd /c "Powershell Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy Bypass && PowerShell -noninteractive -file "C:\Install.ps1""
Run Code Online (Sandbox Code Playgroud)
这是我的整个脚本:
cls #clear screen
function CopyFiles {
# Get .exe from source and place at destination workstation
$source2="\\mainserver\program.exe"
$destination2="\\$line\c$\program.exe" # place .exe on C:\ directory of worstation
Copy-Item -Recurse -Filter *.* -path $source2 -destination $destination2 -Force
# Get .bat from source and place at destination workstation
$source3="\\fileserver\Install.ps1"
$destination3="\\$line\c$\Install.ps1" # place .bat on C:\ directory of worstation
Copy-Item …Run Code Online (Sandbox Code Playgroud) 我正在使用subprocess.check_output()通过Sysinternals PSExec在远程计算机上执行一些命令。我遇到的问题是,如果命令给出非零的返回码,则check_output()会引发CalledProcessError。
PSExec将创建的进程的PID作为其返回代码,因此很明显每次都会出现错误。有没有一种方法可以覆盖此错误并仍然检查psexec调用的输出?基本上,我只需要查看输出,即使其返回码为非零也是如此。
谢谢!
所以我一直在研究这个批处理脚本一段时间,这是我写过的第一个.我们的想法是连接到我们域中的远程计算机并收集一些信息.
我正在使用一个带有机器IP地址的.txt文件,每行一个,每个用逗号分隔.
192.168.1.1,
192.168.1.2,
192.168.1.3
出于某种原因,一旦脚本到达文件中的最后一个IP地址,它就会查询一个空格.此空白区域是尾随空格字符吗?以及如何防止这种情况发生?
我目前获得脚本设置的方式意味着当计算机无法访问时,它会将消息回显给日志文件.所以每次我运行脚本时都会添加一条额外的行说"(BLANK SPACE) 机器无法访问 "我知道这只是一个小问题,但它让我烦恼.
这是我的代码
@echo off
title Audit Script
for /F %%i in (C:\testlist.txt) DO call :test %%i
:test
ping %1 > out.txt
find "Reply" out.txt > nul
if %ERRORLEVEL%==0 GOTO sysinf
if %ERRORLEVEL%==1 GOTO pingerror
:pingerror
echo %1 Unreachable
echo. >> C:\Computer-Audit.log
echo ########################################################## >> C:\Computer-Audit.log
echo MACHINE %1 was unreachable on the %date% at %time% >> C:\Computer-Audit.log
echo ########################################################## >> C:\Computer-Audit.log
echo. >> C:\Computer-Audit.log
GOTO :eof
:sysinf
psexec \\%1 -u Administrator …Run Code Online (Sandbox Code Playgroud) psexec ×12
batch-file ×5
windows ×5
powershell ×3
cmd ×2
c# ×1
command-line ×1
database ×1
for-loop ×1
kerberos ×1
msbuild ×1
python ×1
r ×1
subprocess ×1
teamcity ×1
tfs2010 ×1
tfsbuild ×1