PHP Powershell komut

2 Cevap php

Powershell komutu çalıştırmak için php aşağıdaki komutu çalıştırmak için çalışıyor ...

Aşağıdaki işler:

$output = shell_exec(escapeshellcmd('powershell get-service | group-object'));

Ben bu gibi koşamam:

$output = shell_exec('powershell get-service | group-object');

| karakteri o boru yummayacağız

ama ben çalıştırmayı deneyin eğer:

$output = shell_exec(escapeshellcmd('powershell get-service | where-object {$_.status -eq "Running"}'));

Ben hiçbir çıkış olsun.

Aşağıdaki:

$cmd = escapeshellcmd('powershell get-service | where-object {$_.status -eq "Running"}');

döner:

powershell get-service ^| where-object ^{^$_.status -eq ^"Running^"^}

Bu oluyor ve nasıl bu sorunu çözmek için neden herhangi bir öneriniz?

Edit:. Ayrıca ben ps1 komut dosyası olarak çalıştırmak olabilir ama ben ona $ var geçmek mümkün olmak istiyorum.

2 Cevap

Ben hiçbir PHP deneyimi olmasına rağmen ben bir deneyeceğim.

Ben ne oluyor, boru karakter yerine PowerShell komut kabuk tarafından yorumlanır ediliyor olduğuna dair bir his var. Eğer cmd.exe komut isteminde aşağıdaki koştu Örneğin:

dir /s | more

PowerShell beklediğiniz gibi ilk komutun çıktısı ikinci girişine taşınıyor alır.

Eğer PowerShell bunu Unescape nasıl hiçbir fikri yok böyle bir şekilde dize dönüştürme çünkü dize kaçan tek sorunu daha kötü hale getirecektir.

Aşağıdaki gibi bir alıntı orijinal PowerShell ifade çevreleyen deneyin:

$output = shell_exec('powershell.exe -c "get-service | group-object"');

Komut kabuğu ile gitmez bir exec () işlevi var gibi ya da tercihen görünüyor. Bu daha iyi çalışabilir.

$output = exec('powershell.exe -c get-service | group-object');

'Get-service PowerShell | grup nesnesi'

olarak yorumlanacaktır

  1. powershell çalıştırmak ve bir argüman olarak olsun-hizmet geçmek
  2. sonra boru powershell group_object kadar çıktı (yani olsun-hizmet çıkış)

Powershell görmek için ne istediğiniz get-service | group-object bu argüman, yani böyle tırnak, bu içine var gibi.

 $output = shell_exec('powershell "get-service | group-object"');