0

我有两台服务器作为 X 和 Y。我有一个 powershell 脚本,用于在 Y 上拥有 X 的远程桌面。我必须在 Y 上运行的 powershell 脚本是——

  $hostname = 'X'
  $User = 'u-name'
  $Password = 'password'

        $ProcessInfo = New-Object System.Diagnostics.ProcessStartInfo
        $Process = New-Object System.Diagnostics.Process

        $ProcessInfo.FileName = "$($env:SystemRoot)\system32\cmdkey.exe"
        $ProcessInfo.Arguments = "/generic:TERMSRV/$hostname /user:$User /pass:$Password"
        $Process.StartInfo = $ProcessInfo
        $Process.Start()

        $ProcessInfo.FileName = "$($env:SystemRoot)\system32\mstsc.exe"
        $ProcessInfo.Arguments = "$MstscArguments /v $hostname"
        $Process.StartInfo = $ProcessInfo
        $Process.Start()

当我在 Y 上本地运行此脚本时,它会运行并在 Y 中打开服务器 X。

但我想从 X 触发它只是为了在 Y 中打开 X。所以我从 X 调用这个 powershell 脚本为——

$pass = ConvertTo-SecureString -AsPlainText test-password -Force 
$cred = New-Object System.Management.Automation.PSCredential -ArgumentList test-uname,$pass
$hostn = hostname
$Use = 'u-name'
$Pass = 'password'
Write-Host "$hostname"
$ScriptBlockContent={
Param ($hostname,$User,$Password)
E:\Script\test.ps1 $hostname $User $Password}
Invoke-Command -ComputerName Y  -Credential $cred -Scriptblock $ScriptBlockContent -ArgumentList $hostn,$Use,$Pass 

当我调用这个时。它确实在 Y 上打开了 mstsc.exe,但只在几分之一秒内打开,并没有在 Y 上打开服务器 X。有人可以帮忙.. !!

谢谢。

4

1 回答 1

1

您正在尝试在没有桌面/显示器的远程 powershell 会话中使用 GUI 启动应用程序。即使您使用登录用户的凭据,登录Invoke-Command用户的会话也不会看到您启​​动的内容。

我认为这是可能的PsExec.exe,但我无法确认。

于 2014-11-27T06:01:26.540 回答