ฉันจะติดตั้งหรือถอนการติดตั้งบริการจากระยะไกลบน Windows Server 2008 R2 ได้อย่างไร


2

ใครจะรู้วิธีแก้ปัญหาง่ายๆวิธีติดตั้งหรือถอนการติดตั้งบริการ Windows จากระยะไกลบนเซิร์ฟเวอร์ Win2k8R2

เซิร์ฟเวอร์นี้โฮสต์อยู่ที่อินเทอร์เน็ตดังนั้นจึงไม่ได้อยู่ในโดเมนหรือเป็นเช่นนั้น ดังนั้นฉันต้องการหลีกเลี่ยงการใช้ windows file sharing หรือบริการการจัดการ

ฉันต้องการความเป็นไปได้ที่ฉันสามารถเรียกใช้การทำงานของสคริปต์ฝั่งเซิร์ฟเวอร์ซึ่งติดตั้งบริการไบนารีที่อัปโหลดแล้ว

คุณสามารถตั้งชื่อเครื่องมือหรือโซลูชันรหัส. NET หากคุณรู้วิธีการทำเช่นนั้น

แก้ไข:ขออภัยฉันต้องชี้แจงเล็กน้อยมันไม่ง่ายเหมือนกับการใช้ powershell หรือการเขียนสคริปต์กับ InstallUtil ในกรณีของฉัน ฉันจะลองด้วยหัวข้อย่อย:

  • ฉันต้องการติดตั้งบริการแบบไม่ตั้งใจโดยเรียกใช้การติดตั้งบริการบนเซิร์ฟเวอร์ทำงานบนอินเทอร์เน็ตจากไคลเอนต์
  • ฉันไม่มี GUI จากเซิร์ฟเวอร์ในขณะที่เรียกใช้บริการติดตั้ง ตัวอย่างเช่นฉันเรียกใช้ setup.exe ซึ่งติดตั้งบริการเองผ่าน SSH (บริการติดตั้งด้วยตนเองเพื่อใช้ชื่อบริการที่กำหนดเอง) การไม่มี GUI ดูเหมือนจะเป็นปัญหา (?)

ฉันพยายามอย่างยิ่งยวดที่จะเรียกใช้โปรแกรมการตั้งค่าบริการผ่านบริการเว็บ php (shell_exec) แต่ผลลัพธ์จะเหมือนกันทุกครั้ง: ทำการติดตั้ง แต่ไม่ได้ติดตั้งบริการใด ๆ

สำหรับลูกค้ามันควรจะง่ายที่สุดที่จะเรียกใช้การติดตั้งบริการบนเซิร์ฟเวอร์โดยไม่เห็นอะไรเลย สำหรับการปรับใช้แอปพลิเคชั่นที่อิงกับบริการที่เราสร้างขึ้นเป็นระยะและอัตโนมัติ


ดูเหมือนว่าคำถามการเขียนโปรแกรมบางทีมันควรจะอยู่ใน stackoverflow แทนที่จะเป็น superuser?
Harry Johnston

ตัวติดตั้ง (setup.exe) เป็นรหัสของคุณหรือไม่
Harry Johnston

มันเป็นโปรแกรมติดตั้งของเราเองและที่ superuser ที่นี่ฉันกำลังมองหาคำตอบที่ไม่ใช่การเขียนโปรแกรม (แม้ว่าฉันจะสามารถจัดการได้เช่นกัน;) ฉันค่อนข้างแน่ใจว่าเป็นไปได้ที่จะติดตั้งบริการ windows บนโฮสต์อินเทอร์เน็ตแบบอัตโนมัติ หรือพิสูจน์ฉันผิด;)
derFunk

อย่างไรก็ตามจากสิ่งที่คุณพูดถึงปัญหาดูเหมือนว่า setup.exe ของคุณจะทำงานไม่ถูกต้องเมื่อถูกเรียกจากระยะไกล การแก้ไขปัญหานี้จะเป็นคำถามการเขียนโปรแกรม หากคุณกำลังมองหาโซลูชันที่มีอยู่ฉันไม่เข้าใจว่าคุณต้องการให้โซลูชันนั้นทำอะไรนอกจากรัน setup.exe ซึ่งคุณได้ลองแล้ว
Harry Johnston

โปรแกรมติดตั้งไม่ได้ทำอะไรอย่างอื่นนอกจากสิ่งที่สามารถทำได้ผ่านทางบรรทัดคำสั่ง ดังนั้นลืม setup.exe ไปก่อน คำถามที่เร่งด่วนที่สุดของฉันคือ: มีใด ๆวิธีการระยะไกลติดตั้งบริการของ Windows บนเครื่อง Win2k8 เซิร์ฟเวอร์ที่ทำงานบนอินเทอร์เน็ตหรือไม่
derFunk

คำตอบ:


2

ฉันทำสิ่งนี้เมื่อเร็ว ๆ นี้โดยใช้ PowerShell และ WMI รายละเอียดทั้งหมดที่นี่แต่สรุปสิ่งที่ชอบด้านล่างทำงานเช่นเดียวกับ PowerShell remoting หรือSC.exe

function Install-Service(
[string]$serviceName = $(throw "serviceName is required"),
[string]$targetServer = $(throw "targetServer is required"),
[string]$displayName = $(throw "displayName is required"),
[string]$physicalPath = $(throw "physicalPath is required"),
[string]$userName = $(throw "userName is required"),
[string]$password = "",
[string]$startMode = "Automatic",
[string]$description = "",
[bool]$interactWithDesktop = $false
)
{        
# todo: cleanup this section
$serviceType = 16          # OwnProcess
$serviceErrorControl = 1   # UserNotified
$loadOrderGroup = $null
$loadOrderGroupDepend = $null
$dependencies = $null

# description?
$params = `
    $serviceName, `
    $displayName, `
    $physicalPath, `
    $serviceType, `
    $serviceErrorControl, `
    $startMode, `
    $interactWithDesktop, `
    $userName, `
    $password, `
    $loadOrderGroup, `
    $loadOrderGroupDepend, `
    $dependencies `

$scope = new-object System.Management.ManagementScope("\\$targetServer\root\cimv2", `
    (new-object System.Management.ConnectionOptions))
"Connecting to $targetServer"
$scope.Connect()
$mgt = new-object System.Management.ManagementClass($scope, `
    (new-object System.Management.ManagementPath("Win32_Service")), `
    (new-object System.Management.ObjectGetOptions))

$op = "service $serviceName ($physicalPath) on $targetServer"   
"Installing $op"
$result = $mgt.InvokeMethod("Create", $params)   
Test-ServiceResult -operation "Install $op" -result $result
"Installed $op"

"Setting $serviceName description to '$description'"
Set-Service -ComputerName $targetServer -Name $serviceName -Description $description
"Service install complete"
}

2

Powershell ดูเหมือนเป็นตัวเลือกที่น่าจะเป็น ลองดูที่การอ้างอิง cmdletและAdd-WindowsFeature cmdlet


Powershell เป็นหนทางแห่งอนาคต แม้แต่ Microsoft ก็เริ่มสร้างเครื่องมือวินิจฉัยทั้งหมดของพวกเขาที่ด้านบนของ Powershell
surfasb

เป็นเครื่องเซิร์ฟเวอร์ที่ทำงานบนอินเทอร์เน็ตฉันจะไม่เปิดบริการแชร์ไฟล์ windows กับสาธารณะที่นี่ PowerShell ยังคงเป็นตัวเลือกอยู่หรือไม่? ทุกคนพยายามแล้วจริงๆจากระยะไกลติดตั้งบริการบนเซิร์ฟเวอร์อินเทอร์เน็ต? (ทุกอุโมงค์เป็นไปได้ที่คิดได้)
derFunk

บริการการ remoting ของ Powershell v2 ทำงานผ่านการเชื่อมต่อแบบ ssh
uSlackr
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.