簡體   English   中英

如何在PowerShell中啟動遠程處理

[英]How to start remotely process in PowerShell

我有一個問題,我有一個腳本

  • 與PSSession連接(我使用PSSession與管理員帳戶)
  • 停止2進程
  • 改變他們的文件
  • 啟動2流程(此處出現問題)

我想在服務器上啟動進程,所以我用PSSession連接(沒問題)

我做Invoke-Command:

# $pathProg path to my program
Invoke-Command -session $mySession -command {Start-Process $($args[0])} -ArgumentList $pathProg

但它什么都不做(我用VNC驗證)

我也做Invoke-Command:

# $pathProg path to my program
Invoke-Command -session $mySession -command {&$($args[0])} -ArgumentList $pathProg

這個程序很好(好)但我的腳本等待結束程序(不好)

有人有想法嗎?

謝謝

您可以嘗試使用WMI:

$command = "notepad.exe"
$process = [WMICLASS]"\\$CompName\ROOT\CIMV2:win32_process"
$result = $process.Create($command) 

如果您需要傳遞憑據:

$cred = get-credential
$process = get-wmiobject -query "SELECT * FROM Meta_Class WHERE __Class = 'Win32_Process'" -namespace "root\cimv2" -computername $CompName -credential $cred
$results = $process.Create( "notepad.exe" )

$pathProg可能在最終運行的腳本塊中不可用。 您可能希望將其作為參數傳遞給腳本塊

Invoke-Command -session $mySession -command { param($progPath) ... } -argumentlist $progPath

不是外部-argumentlist ,將參數傳遞給scriptblock。

您是否嘗試在本地將該命令構建為字符串,然后將其作為ScriptBlock傳遞給Invoke-Command腳本?

$remoteSession = New-PSSession -ComputerName 'MyServer'
$processName = 'MyProcess'

$command = 'Start-Service ' + $processName + ';'

Invoke-Command -Session      $remoteSession `
               -ScriptBlock  ([ScriptBlock]::create($command))

Remove-PSSession $remoteSession

如果您需要遠程服務器的反饋,那么您可以通過Write-Output獲取輸出,如下所示:

$command = 'Start-Service ' + $processName + ' | Write-Output ;'

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM