How to start remotely process in PowerShell

前端 未结 3 1029
广开言路
广开言路 2020-12-19 06:59

I have a problem, I have a script which:

  • Connect with PSSession (I use PSSession with admin account)
  • Stop 2 process
  • Do
相关标签:
3条回答
  • 2020-12-19 07:15

    $pathProg may be not be available within the script block which gets run eventually. You might want to pass it as an argument to the script block

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

    Not that the outer -argumentlist, passes the arguments to the scriptblock.

    0 讨论(0)
  • 2020-12-19 07:25

    You can try using WMI:

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

    If you need passing credentials:

    $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" )
    
    0 讨论(0)
  • 2020-12-19 07:26

    Have you tried building the command as a string locally, then passing it to the Invoke-Command script as a ScriptBlock?

    $remoteSession = New-PSSession -ComputerName 'MyServer'
    $processName = 'MyProcess'
    
    $command = 'Start-Service ' + $processName + ';'
    
    Invoke-Command -Session      $remoteSession `
                   -ScriptBlock  ([ScriptBlock]::create($command))
    
    Remove-PSSession $remoteSession
    

    If you want feedback from the remote server then you can get the output via Write-Output, like this:

    $command = 'Start-Service ' + $processName + ' | Write-Output ;'
    
    0 讨论(0)
提交回复
热议问题