Jak uruchomić usługę z określonymi parametrami? W innym pytaniu znalazłem
nazwa uruchomienia netto nazwa usługi bla
ale jeśli spróbuję, net
rzuca we mnie błąd składniowy.
Co ja robię źle?
Edycja: wyjaśnienienet start servicename
działa dobrze, ale muszę przekazać parametry do usługi. Mogę to zrobić ręcznieservices.msc
, wypełniając parametr start przed uruchomieniem usługi. Ale jak mogę to zrobić ze skryptu?
Kolejna edycja: Przepraszam, ale moje pytanie było mylące . W moich testach miałem znacznie więcej parametrów i na to nie/blah
net start
narzekam. W rzeczywistości wszystko , co zaczyna się od ukośnika, jest w porządku . Więcnet start servicename /blah
działa,net start servicename blah
nie działa. Ponieważ potrzebujęnet start servicename /foo bar
, tobar
jest problem.
/
. Wielkie dzięki!NET START
nie zezwalam na przekazywanie dowolnych parametrów, o ile mi wiadomo (wydaje się, że muszą one być poprzedzone znakiem /), uważam, że poprawnym sposobem jest zmodyfikowanie odpowiedniego klucza rejestru i zatrzymanie / uruchomienie usługi. Zakładając, że Twoja usługa niestandardowa nazywa się MyService:Naprawdę jednak lepszym sposobem jest przechowywanie konfiguracji w miejscu znanym przez usługę, na przykład w rejestrze lub systemie plików, i odczytywanie potrzebnych wartości. Jak widać, dostosowanie wiersza poleceń jest nieco bardziej bolesne niż powinno.
Jeśli jest to przypadkiem usługa opracowana w technologii .NET, możesz utworzyć n kopii pliku wykonywalnego w systemie plików i każda z nich automatycznie pobierze parametry z odpowiedniego pliku app.config.
Wygląda na to, że przekroczyłeś granicę Win32. Ponieważ brzmi to jak tworzenie niestandardowe, każde inne oferowane rozwiązanie, choć być może nie jest idealne, będzie działać poprawnie i jest bezpieczniejszą drogą.
źródło
net start
nie akceptować parametry, ale tylko te, zaczynając z/
.sc.exe
. Zobacz odpowiedź grawitacji (której wtedy jakoś udało mi się przeoczyć).Przed użyciem każdego parametru potrzebujesz ukośnika
net start
. Należy również podać parametry, które mają spacje.źródło
net start servicename /foo
za jeden argumentnet start servicename /"foo bar"
dla ciągu lub listy argumentówUwaga : to pytanie ma 8 lat, ale nie mam reputacji, aby komentować zaakceptowaną odpowiedź, a to nadal jest najlepszy wynik Google w 2018 roku, więc chciałem wyjaśnić, co teraz działa w odniesieniu do ostatecznej edycji pytań.
źródło
:-)
Musisz użyć rzeczywistej nazwy usługi wyświetlanej w panelu sterowania, usługi. Jeśli zawiera spacje, musisz umieścić cudzysłowy wokół nazwy usługi.
Aby uzyskać rzeczywistą nazwę usługi, wystarczy wpisać
net start
bez parametrów w wierszu polecenia. Powinien dać ci listę wszystkich uruchomionych usług, abyś mógł uzyskać rzeczywistą nazwę usługi. Więc po prostu użyjnet start <servicename>
źródło
net start "my-service-name"
dobrze. Tonet start "my-service-name" /blah
daje mi komunikat o błędzie. Próbowałem równieżnet start "my-service-name" -blah
i to też jest błąd składniowy.Czy InstSrv i SrvAny mogą w tym pomóc? Przewodnik i linki
źródło