Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
无法从PowerShell使用PsExec运行sqlplus_Powershell_Cmd_Sqlplus_Psexec - Fatal编程技术网

无法从PowerShell使用PsExec运行sqlplus

无法从PowerShell使用PsExec运行sqlplus,powershell,cmd,sqlplus,psexec,Powershell,Cmd,Sqlplus,Psexec,我无法使用PowerShell和PsExec在远程计算机上运行sqlplus查询 这是我的代码: $psexec = "PsExec64.exe" $computername = "server1" $usr = "user" $pwd = "password" $command = "cmd /c" $sqltool = "sqlplus.exe" $parameters = "@echo select * from TEST.T1 where C1 = 1; | $sqltool -s /

我无法使用PowerShell和PsExec在远程计算机上运行sqlplus查询

这是我的代码:

$psexec = "PsExec64.exe"
$computername = "server1"
$usr = "user"
$pwd = "password"
$command = "cmd /c"
$sqltool = "sqlplus.exe"
$parameters = "@echo select * from TEST.T1 where C1 = 1; | $sqltool -s / as sysdba"
& $psexec -accepteula \\$computername -n 15 -u $usr -p $pwd $command $parameters | Out-Null
我收到错误消息:

PS C:\> & $psexec -accepteula \\$computername -n 15 -u $usr -p $pwd $command $parameters | Out-Null
PsExec64.exe : The system cannot find the path specified.
At line:1 char:1
+ & $psexec -accepteula \\$computername -n 15 -u $usr -p $pwd $command  ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo          : NotSpecified: (The system cann...path specified.:String) [], RemoteException
+ FullyQualifiedErrorId : NativeCommandError
当我运行不带变量的命令时,它工作正常:

PsExec64.exe -accepteula \\server1 -n 15 -u user -p password cmd /c ("@echo select * from TEST.T1 where C1 = 1; | $sqltool -s / as sysdba")

有人能帮我澄清一下这个问题吗?

下面是我需要做的引述,以获得简单的运行

$psexec = 'PsExec64.exe'
$computername = 'HOST001'
$usr = "DOMAIN\username"
$pwd = "password"
$sqltool = "sqlplus.exe"
$parameters = "@echo select 'now' from DUAL; `| $sqltool -S dbuser/dbpass@DBHOST"

& "$psexec" -accepteula -nobanner \\$computername -n 15 -u $usr -p $pwd cmd /c "$parameters"

这里是我需要做的引述,以获得一些简单的运行

$psexec = 'PsExec64.exe'
$computername = 'HOST001'
$usr = "DOMAIN\username"
$pwd = "password"
$sqltool = "sqlplus.exe"
$parameters = "@echo select 'now' from DUAL; `| $sqltool -S dbuser/dbpass@DBHOST"

& "$psexec" -accepteula -nobanner \\$computername -n 15 -u $usr -p $pwd cmd /c "$parameters"

如果您已经在PowerShell中,是否有任何理由不使用
调用命令
?WinRM在远程计算机上未处于活动状态(TCP/5985用于HTTP,TCP/5986用于HTTPS),并且由于网络设置无法调整。如果我错了,请纠正我,但我认为
Invoke命令
依赖于这些端口。是的,
Invoke命令
使用WinRM。如果他们不允许这样做,那么为什么他们会允许psexec呢?我猜您需要处理一些引用/转义问题,因为
$parameters
变量有一个竖条,并且在使用它的PowerShell行中有一个竖条。我也这么认为,这是
的问题。遗憾的是,我想不出如何解决这个问题。将`字符放在前面没有帮助。如果您已经在PowerShell中,是否有任何理由不使用
调用命令
?WinRM在远程计算机上未处于活动状态(TCP/5985用于HTTP,TCP/5986用于HTTPS),并且由于网络设置无法调整。如果我错了,请纠正我,但我认为
Invoke命令
依赖于这些端口。是的,
Invoke命令
使用WinRM。如果他们不允许这样做,那么为什么他们会允许psexec呢?我猜您需要处理一些引用/转义问题,因为
$parameters
变量有一个竖条,并且在使用它的PowerShell行中有一个竖条。我也这么认为,这是
的问题。遗憾的是,我想不出如何解决这个问题。将`字符放在前面没有帮助。这很有效!唯一的开放点是解决方案显式写入
cmd/c
,而不使用
$command
变量。你知道这是为什么吗?是的,因为使用$command会使psexec查找名为
“cmd/c”
的命令。没有名为
“cmd/c.exe”
“cmd/c.bat”
的命令。感谢您的解释和帮助。然后我将显式地使用
cmd/c
。这很有效!唯一的开放点是解决方案显式写入
cmd/c
,而不使用
$command
变量。你知道这是为什么吗?是的,因为使用$command会使psexec查找名为
“cmd/c”
的命令。没有名为
“cmd/c.exe”
“cmd/c.bat”
的命令。感谢您的解释和帮助。然后我将显式地使用
cmd/c