Powershell kullanarak bir topshelf servisi yüklemeye çalışıyorum ama yükleyiciyi çalıştırmak için powershell almak için gerçekten çok çabayorum.powershell kullanarak bir topshelf servisi yükleme
Function EnsureTopshelfService([string]$serviceName, [string]$servicePath){
$service = get-service $serviceName -ErrorAction SilentlyContinue
if ($service –ne $null){
"$serviceName is already installed on this server";
}
else{
Write-Host "Installing $serviceName...";
#the problem is here
& "`"$servicepath`" install --sudo"
}
}
ben bu komutu çalıştırdığınızda i olsun aşağıdaki
takma testi ... &: terimi "c: \ A Testi \ Test.exe" --sudo install 'olduğunu cmdlet, işlev, komut dosyası veya çalıştırılabilir programın adı olarak tanınmaz. Adın yazımını denetleyin veya bir yol içeriyorsa, yolun doğru olduğunu doğrulayın ve tekrar deneyin. C: \ Users \ luke.mcgregor \ Documents \ Test.ps1: 11 char: 11 + & "
"$servicepath
" install --sudo " + ~~~~~~~~~~~~~~~~ ~~~~~ + CategoryInfo: ObjectNotFound: ("c: \ A Test \ Test.exe" install --sudo: String) [], CommandNotFoundException + FullyQualifiedErrorId: yanlış burada nereye gidiyorum komut istemine"c:\A Test\Test.exe" install --sudo
Running CommandNotFoundException
böylece im varolan bir programa durduruyorum nasıl. onun bir sorun bilen var mı çalışıyor? Ben bu yüzden' PowerShell için oldukça yeni Bunun oldukça basit bir şey olduğunu tahmin ediyorum:
DÜZENLEME: Aşağıdaki yukarıdaki
Bir boşluk ile sınırlayan tarafından tokenize gerekirFunction EnsureTopshelfService([string]$serviceName, [string]$servicePath){
$service = get-service $serviceName -ErrorAction SilentlyContinue
if ($service –ne $null){
"$serviceName is already installed on this server";
}
else{
Write-Host "Installing $serviceName...";
& "$servicepath" install --sudo
}
}
Teşekkür, ama neden çok emin değilim:
Öyleyse powershell aşağıdaki çalıştırabilirsiniz EğerC:\Services\ItJustWorks\ItJustWorks.exe
de topshelf ile inşa EXE var varsayarak. Bunun sadece arama operatöründe bir komut içeren bir dizeyi karıştırmasıyla çalıştığını düşündüm. Bu durum böyle değil mi? Çağrı operatörü bir dizi argüman alır mı ve önce komut yolu ve daha sonra belirli argümanlar olmak için çıkarım yapar mı? Bu neden sadece bir ip geçirmekten farklı? –@Luke aldınız, çağrı operatörü sözdizimi '&" [yol] \ program.exe "[argümanlar]' dır, burada argümanlar boşlukla ayrılmış dizeler veya diziler dizisi olabilir. Ve itme için teşekkürler: D –