เริ่มและหยุดบริการ Windows โดยใช้ PowerShell


0

ฉันใช้ทั้ง Apache (เป็นบริการ Windows) และ IIS 10 และต้องการให้สามารถเปิดหรือปิดบริการเหล่านี้แต่ละรายการเนื่องจากพวกเขาทั้งสองคว้าพอร์ต 80 และฉันไม่ต้องการกำหนดค่าให้ใช้ พอร์ตอื่น

ดังนั้นฉันต้องการสร้างสคริปต์ PowerShell ที่หยุด IIS และเริ่ม Apache หรือในทางกลับกัน ฉันจะบรรลุสิ่งนี้ได้อย่างไร


1
ใช้ get-service, start-service และ stop-service. ถ้า Apache Service รันหยุดทำงานจากนั้นเริ่ม IIS และในทางกลับกัน นี่เป็นเพียงสิ่งที่ถ้า / อย่างอื่น
SimonS

@SimonS ขอบคุณสำหรับเคล็ดลับใน get-service et al, แต่ฉันอยากจะมีสองสคริปต์หนึ่งเพื่อสลับไปยัง Apache และอีกหนึ่งสำหรับ IIS, vs. if/else เพื่อให้ฉันสามารถควบคุมได้มากขึ้น
ProfK

2
คุณสามารถทำแบบนั้นได้ แต่มันก็ไม่สมเหตุสมผลนัก get-service IISAdmin | stop-service -force ; start-service "ApacheServiceName" จะเป็นคำสั่งสำหรับการหยุด IIS และเริ่ม Apache คุณสามารถทำเช่นเดียวกันสำหรับ Apache เพียงวิธีอื่น ๆ รอบ นอกจากนี้ฉันไม่ได้งอชื่อบริการของ apache ดังนั้นคุณจะต้องเปลี่ยนที่
SimonS

คำตอบ:


2
function Switch-Webserver {

    Param(
        [Parameter( ParameterSetName = "IIS")]
        [switch]$IIS,
        [Parameter( ParameterSetName = "Apache")]
        [switch]$Apache
    )

    switch ($PSCmdlet.ParameterSetName)
    {
        'IIS'    { get-service "Apache" | stop-service -force ; start-service IISAdmin }
        'Apache' { get-service IISAdmin | stop-service -force ; start-service "Apache" }
    }

}

คุณสามารถใช้ฟังก์ชันนี้ในคอนโซล PowerShell ดังนี้:

Switch-Webserver -IIS # This will stop Apache and start IIS
Switch-Webserver -Apache # This will stop IIS and start Apache

คุณสามารถใส่ฟังก์ชั่นนี้ไว้ในของคุณ โปรไฟล์ PowerShell หรือโหลดจากหน้าต่างคอนโซลดังนี้:

. C:\Path\To\Function\Switch-Webserver.ps1

ขอบคุณสำหรับความพยายามในการเขียนสคริปต์นี้ให้ฉัน อย่างไรก็ตามไม่ใช่ชื่อบริการ IIS W3SVC เมื่อเทียบกับ IISAdmin?
ProfK

0

เคล็ดลับคือการใช้อาร์กิวเมนต์เมื่อเริ่มต้นและหยุดบริการเพื่อให้สามารถทำงานในพื้นหลัง ก่อนอื่นคุณอาจต้องติดตั้งบริการ แล้วก็ เพื่อหยุด apache อย่างงดงามใช้สิ่งนี้ในสคริปต์:

httpd -k graceful-stop

เพียงใส่ข้อความข้างต้นในสคริปต์และดำเนินการและจะหยุด apache

ในการเริ่มต้นคุณอาจเดาได้:

httpd -k start

สำหรับการหยุดและเริ่มต้น IIS คุณสามารถดูคำแนะนำได้ ที่นี่ .


Apache เป็นบริการ Windows ทำงานในพื้นหลัง บริการทั้งหมดทำ คุณกำลังพูดถึงเซิร์ฟเวอร์ Apache ใบสมัคร ไม่ใช่บริการ Windows ฉันได้แก้ไขคำถามของฉันเพื่อให้ชัดเจนว่าฉันใช้ Apache เป็นบริการ
ProfK
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.