使用 Start-Process 的 PowerShell Invoke-Command 未创建日志文件

PowerShell Invoke-Command using Start-Process is not creating log file

我在远程服务器上有一个命令行 exe,我需要远程执行它(在远程服务器上 运行ning)。此 exe 连接到数据库,并写入日志文件。

我通过执行这些 PowerShell 命令启用了 WinRM:

  1. netsh http add iplisten localip {add local ip here}
  2. netsh http add iplisten 127.0.0.1
  3. Set-Item WSMan:\localhost\Client\TrustedHosts -Value "*" -Force
  4. 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'
}