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



我在远程服务器上有一个命令行EXE,我需要远程执行(在远程服务器上运行(。此EXE连接到DB,并写入日志文件。

我通过执行这些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:localhostClientTrustedHosts -Value "*" -Force
  4. Enable-PSRemoting -Force

这起作用,我能够通过执行

来测试
Test-WSMan {computername}

我现在正在尝试通过Invoke-Command执行命令行EXE,并期望使用此脚本创建一个日志文件。

Invoke-Command –ComputerName MyServer –ScriptBlock {
  Start-Process "C:TheRemotePathToTheExe.exe"
}

PowerShell不会显示任何错误。但是,没有生成日志文件。我拥有EXE目录以及日志文件目录的全部权利。我能够通过Windows Explorer成功运行EXE(导航到远程EXE并双击以运行(。

知道为什么这似乎不起作用,或者我可以使用哪些工具来尝试诊断?

我会尝试测试路径并切换到呼叫运算符,即Ansgar,即:

Invoke-Command –ComputerName MyServer –ScriptBlock {
    $path = "C:TheRemotePathToTheExe.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'
}

最新更新