使用 Start-Process 的 PowerShell Invoke-Command 未创建日志文件
PowerShell Invoke-Command using Start-Process is not creating log file
我在远程服务器上有一个命令行 exe,我需要远程执行它(在远程服务器上 运行ning)。此 exe 连接到数据库,并写入日志文件。
我通过执行这些 PowerShell 命令启用了 WinRM:
netsh http add iplisten localip {add local ip here}
netsh http add iplisten 127.0.0.1
Set-Item WSMan:\localhost\Client\TrustedHosts -Value "*" -Force
Enable-PSRemoting -Force
这行得通,我能够通过执行
进行测试
Test-WSMan {computername}
我现在正尝试通过 Invoke-Command
执行命令行 exe,并希望使用此脚本创建一个日志文件条目。
Invoke-Command –ComputerName MyServer –ScriptBlock {
Start-Process "C:\TheRemotePath\ToTheExe.exe"
}
PowerShell 不显示任何错误。但是,不会生成任何日志文件。我对 exe 的目录以及日志文件目录拥有完全的权限。我能够通过 Windows 资源管理器成功 运行 exe(导航到远程 exe 并双击 运行)。
知道为什么这似乎不起作用或者我可以使用哪些工具来尝试和诊断?
我会尝试测试路径并切换到 Ansgar 提到的呼叫操作员,即:
Invoke-Command –ComputerName MyServer –ScriptBlock {
$path = "C:\TheRemotePath\ToTheExe.exe"
if (Test-Path $path) {
Write-Host -ForegroundColor Green "Confirmed access to $path!"
& $path
}
else {
Write-Host -ForegroundColor Yellow "Unable to reach $path!"
}
}
这样做将帮助您诊断它在哪里被绊倒。根据 EXE,我不得不使用不同的方法从 Powershell 启动进程。
将工作目录更改为 运行 之前可执行文件的位置。我还建议使用调用运算符 (&
) 而不是 Start-Process
,除非你有理由使用后者。
Invoke-Command –ComputerName MyServer –ScriptBlock {
Set-Location 'C:\MyDirectory'
& 'MyApp.Console.exe'
}
我在远程服务器上有一个命令行 exe,我需要远程执行它(在远程服务器上 运行ning)。此 exe 连接到数据库,并写入日志文件。
我通过执行这些 PowerShell 命令启用了 WinRM:
netsh http add iplisten localip {add local ip here}
netsh http add iplisten 127.0.0.1
Set-Item WSMan:\localhost\Client\TrustedHosts -Value "*" -Force
Enable-PSRemoting -Force
这行得通,我能够通过执行
进行测试Test-WSMan {computername}
我现在正尝试通过 Invoke-Command
执行命令行 exe,并希望使用此脚本创建一个日志文件条目。
Invoke-Command –ComputerName MyServer –ScriptBlock {
Start-Process "C:\TheRemotePath\ToTheExe.exe"
}
PowerShell 不显示任何错误。但是,不会生成任何日志文件。我对 exe 的目录以及日志文件目录拥有完全的权限。我能够通过 Windows 资源管理器成功 运行 exe(导航到远程 exe 并双击 运行)。
知道为什么这似乎不起作用或者我可以使用哪些工具来尝试和诊断?
我会尝试测试路径并切换到 Ansgar 提到的呼叫操作员,即:
Invoke-Command –ComputerName MyServer –ScriptBlock {
$path = "C:\TheRemotePath\ToTheExe.exe"
if (Test-Path $path) {
Write-Host -ForegroundColor Green "Confirmed access to $path!"
& $path
}
else {
Write-Host -ForegroundColor Yellow "Unable to reach $path!"
}
}
这样做将帮助您诊断它在哪里被绊倒。根据 EXE,我不得不使用不同的方法从 Powershell 启动进程。
将工作目录更改为 运行 之前可执行文件的位置。我还建议使用调用运算符 (&
) 而不是 Start-Process
,除非你有理由使用后者。
Invoke-Command –ComputerName MyServer –ScriptBlock {
Set-Location 'C:\MyDirectory'
& 'MyApp.Console.exe'
}