Czy próbujesz przekazać argumenty wiersza poleceń do programu po uruchomieniu? Pracuję teraz nad czymś, co robi dokładnie to i było to o wiele prostsze, niż myślałem. Jeśli pójdę do wiersza poleceń i wpisz
C:\folder\app.exe/xC:\folder\file.txt
wtedy moje starty aplikacji i tworzy plik w określonym katalogu o określonej nazwie.
chciałem zrobić to za pomocą skryptu PowerShell na komputerze zdalnym, i zorientowali się, że wszystko, co potrzebne do zrobienia oddano
$s = New-PSSession -computername NAME -credential LOGIN
Invoke-Command -session $s -scriptblock {C:\folder\app.exe /xC:\folder\file.txt}
Remove-PSSession $s
(mam kilka więcej podobnych poleceń wewnątrz sesji, to jest tylko minimum, które musi uruchomić). Zwróć uwagę na spację między plikiem wykonywalnym i argumentami wiersza poleceń. To działa dla mnie, ale nie jestem pewien, jak działa twoja aplikacja, ani czy to w jaki sposób przekazujesz do niej argumenty.
* Mogę też mieć mój wniosek przesunąć plik z powrotem do mojego lokalnego komputera poprzez zmianę skryptu blok
C:\folder\app.exe /x"\\LocalPC\DATA (C)\localfolder\localfile.txt"
Trzeba cytaty jeśli plik-ścieżka ma miejsca w nim.
EDYCJA: w rzeczywistości wywołało to pewne głupie problemy z uruchomieniem aplikacji PowerShell jako usługi lub czegoś takiego, więc przeszukałem je i zorientowałem się, że możesz wywołać CMD, aby wykonać polecenia dla ciebie na komputerze zdalnym. W ten sposób polecenie jest DOKŁADNIE wykonane tak, jakbyś właśnie wpisał je w oknie CMD na zdalnej maszynie. Umieść komendę w bloku skryptu w podwójnych cudzysłowach, a następnie umieść przed nią plik cmd.exe/C. tak:
cmd.exe /C "C:\folder\app.exe/xC:\folder\file.txt"
rozwiązało to wszystkie problemy, które ostatnio miałem.
EDYTUJ EDIT: Miał więcej problemów i znalazł o wiele lepszy sposób na zrobienie tego.
start-process -filepath C:\folder\app.exe -argumentlist "/xC:\folder\file.txt"
i to nie powoduje zawieszenia się okna terminala, które czeka na zakończenie procesu zdalnego. Tylko upewnij się, że masz sposób, aby zakończyć proces, jeśli nie robi to na własną rękę. (moje nie wymaga kodowania innego argumentu)
Dzięki za szybką odpowiedź. Z jakiegoś powodu, kiedy próbuję tego w ten sposób, mogę wydrukować rozwinięte polecenie, które zadziała, jeśli uruchomię to ręcznie, ale tak naprawdę nie działa. Musiałem usunąć "&", ponieważ napisano, że jest to zarezerwowana postać do przyszłego użytku. – gregs
@gregs Musiałem włączyć funkcję zdalnego sterowania na moim komputerze do przetestowania. Zmieniłem polecenie na prosty test ping wysyłający argument localhost. Powyższe odnosi się do mnie. –
Możliwe, że wymyśliłem blokadę, ale nie rozwiązanie. Ta linia działa, jeśli używam polecenia ping.exe i "localhost" jako argumentu, ale muszę umieścić wycinki wokół mojej ścieżki wykonywalnej, ponieważ ścieżka zawiera spacje. Kiedy to robię, po prostu powtarza mój ciąg w cudzysłowie, ale nie sądzę, że działa. – gregs