windows - forhindrer nedlukning - C #, Powershell eller CMD/Bat

Indlæg af Hanne Mølgaard Plasc

Problem



Jeg vil gerne spørge, hvordan du forhindrer shutdown, når du kører et script eller i det mindste giver en popup, der vil spørge, hvornår eller ej du vil lukke ned (som når du åbner et notesblok og skriver en char, men gemmer ikke det og klik nedlukning).


Jeg har lavet scripts, der kører installatører tavse, men nogle af dem synes stadig at aktivere Windows shutdown (dette kan ske, hvis de mangler forudsætninger).


Her er koden jeg bruger til installationen:


# --- Install ---
$fileExtension = (Get-ChildItem -path $installationFilePath).Extension

if(".msi" -eq $fileExtension)
{
    [string[]]$Private:args = New-Object string[] 4
    $args[0] = "/qn"
    $args[1] = "TRANSFORM=1033.mst"
    $args[2] = "REBOOT=Suppress"
    $args[3] = "/l*v $errorLogPath"

    $process = Start-Process $installationFilePath -ArgumentList $args -PassThru
}

if(".exe" -eq $fileExtension)
{
    [string[]]$Private:args = New-Object string[] 2
    $args[0] = '/v"' + "/qn TRANSFORM=1033.mst REBOOT=Suppress /l*v $errorLogPath" + '"'
    $args[1] = "/s"

    $process = Start-Process $installationFilePath -ArgumentList $args -PassThru
} 

$processActive = $process

while ($processActive -ne $null)
{
    Start-Sleep -Seconds 1
    Write-Host '.' -NoNewline
    $processActive = Get-Process -Id $processActive.Id -ErrorAction SilentlyContinue
}


Jeg ved, det burde være muligt, men jeg har endnu ikke fundet ud af hvordan.

Bedste reference


Her er et eksempel på at afbryde afbrydelse efter installationen er færdig:


Start-Process yourprogram.exe -Wait
shutdown /a


Du kan endda løbe abort et par gange for at sikre, at du rammer den.


for($i=0;$i -lt 5;$i++)
{
    shutdown /a
    sleep 1
}