Col*_*337 4 powershell start-process powershell-3.0
我在远程计算机上创建了一个pssession并输入了这个属性.在该会话中,我使用start-process启动记事本.我可以确认记事本是使用get-process命令运行的,还是使用远程计算机中的taskmgr运行.但是,该过程的GUI端未显示.这是我一直在使用的序列:
$server = New-PSSession -ComputerName myserver -Credential mycreds
Enter-PSSession $server
[$server]: PS C:\>Start-Process notepad -Wait -WindowStyle Maximized
Run Code Online (Sandbox Code Playgroud)
该过程正在运行,但是当RDP到框时,记事本无法打开.如果我从服务器打开记事本,则会开始一个新的记事本过程.我也试过使用这样的动词参数:
[$server]: PS C:\>Start-Process notepad -Wait -WindowStyle Maximized -Verb Open
Run Code Online (Sandbox Code Playgroud)
同样的结果......过程开始,但没有记事本显示.我已经尝试了这个远程进入盒子(但是从我的本地主机发出)以及远程进入服务器之前.
我知道这是旧的,但我遇到了它自己寻找解决方案,所以我想更新它为未来可怜的灵魂.
此问题的本机解决方法是使用计划任务.那将使用活动会话
function Start-Process-Active
{
param
(
[System.Management.Automation.Runspaces.PSSession]$Session,
[string]$Executable,
[string]$Argument,
[string]$WorkingDirectory,
[string]$UserID
)
if (($Session -eq $null) -or ($Session.Availability -ne [System.Management.Automation.Runspaces.RunspaceAvailability]::Available))
{
$Session.Availability
throw [System.Exception] "Session is not availabile"
}
Invoke-Command -Session $Session -ArgumentList $Executable,$Argument,$WorkingDirectory,$UserID -ScriptBlock {
param($Executable, $Argument, $WorkingDirectory, $UserID)
$action = New-ScheduledTaskAction -Execute $Executable -Argument $Argument -WorkingDirectory $WorkingDirectory
$principal = New-ScheduledTaskPrincipal -userid $UserID
$task = New-ScheduledTask -Action $action -Principal $principal
$taskname = "_StartProcessActiveTask"
try
{
$registeredTask = Get-ScheduledTask $taskname -ErrorAction SilentlyContinue
}
catch
{
$registeredTask = $null
}
if ($registeredTask)
{
Unregister-ScheduledTask -InputObject $registeredTask -Confirm:$false
}
$registeredTask = Register-ScheduledTask $taskname -InputObject $task
Start-ScheduledTask -InputObject $registeredTask
Unregister-ScheduledTask -InputObject $registeredTask -Confirm:$false
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
20633 次 |
| 最近记录: |