Harmonogram zadań systemu Windows nie uruchomi programu powershell.exe

0

Jestem inżynierem bezpieczeństwa z doświadczeniem w administrowaniu Linuksem, który próbuje nauczyć się o obiektach GPO na kopiach testowych systemu Windows Server 2016 Preview 5 i Windows 10 Enterprise. Utworzyłem natychmiastowe zadanie uruchomienia skryptu PowerShell.

Gdy zadanie próbuje wykonać, pojawia się to ostrzeżenie w Podglądzie zdarzeń:

Usługa Harmonogram zadań wykryła błędną konfigurację w definicji NT TASK \ EMET 5.51. Dodatkowe dane: Wartość błędu: powershell.exe.

Wszystko, co przeczytałem, sugeruje, że to powinno działać. Co ja robię źle?

Oto zadanie w XML:

<?xml version="1.0" encoding="utf-8"?>
<ScheduledTasks clsid="{CC63F200-7309-4ba0-B154-A71CD118DBCC}">
    <ImmediateTaskV2 clsid="{9756B581-76EC-4169-9AFC-0CA8D43ADB5F}" name="EMET 5.51" image="0" userContext="0" removePolicy="0" changed="2016-08-14 19:45:32" uid="{1CA5AB58-B38C-4F73-944F-9CDCBBF57037}">
        <Properties action="C" name="EMET 5.51" runAs="BYTHEBIT\Administrator" logonType="InteractiveToken">
            <Task version="1.2">
                <RegistrationInfo>
                    <Author>BYTHEBIT\Administrator</Author>
                    <Description></Description>
                </RegistrationInfo>
                <Principals>
                    <Principal id="Author">
                        <UserId>BYTHEBIT\Administrator</UserId>
                        <LogonType>InteractiveToken</LogonType>
                        <RunLevel>HighestPrivilege</RunLevel>
                    </Principal>
                </Principals>
                <Settings>
                    <IdleSettings>
                        <Duration>PT5M</Duration>
                        <WaitTimeout>PT1H</WaitTimeout>
                        <StopOnIdleEnd>false</StopOnIdleEnd>
                        <RestartOnIdle>false</RestartOnIdle>
                    </IdleSettings>
                    <MultipleInstancesPolicy>IgnoreNew</MultipleInstancesPolicy>
                    <DisallowStartIfOnBatteries>false</DisallowStartIfOnBatteries>
                    <StopIfGoingOnBatteries>false</StopIfGoingOnBatteries>
                    <AllowHardTerminate>false</AllowHardTerminate>
                    <StartWhenAvailable>true</StartWhenAvailable>
                    <AllowStartOnDemand>false</AllowStartOnDemand>
                    <Enabled>true</Enabled>
                    <Hidden>false</Hidden>
                    <WakeToRun>true</WakeToRun>
                    <ExecutionTimeLimit>PT0S</ExecutionTimeLimit>
                    <Priority>7</Priority>
                    <DeleteExpiredTaskAfter>PT0S</DeleteExpiredTaskAfter>
                </Settings>
                <Actions Context="Author">
                    <Exec>
                        <Command>powershell.exe</Command>
                        <Arguments>-NoProfile -NoLogo -NonInteractive -ExecutionPolicy Bypass -File \\DC\Shared\Deployment\deployment.ps1</Arguments>
                    </Exec>
                </Actions>
                <Triggers>
                    <TimeTrigger>
                        <StartBoundary>%LocalTimeXmlEx%</StartBoundary>
                        <EndBoundary>%LocalTimeXmlEx%</EndBoundary>
                        <Enabled>true</Enabled>
                    </TimeTrigger>
                </Triggers>
            </Task>
        </Properties>
        <Filters><FilterRunOnce hidden="1" not="0" bool="AND" id="{C58ADBD5-837B-46E8-98E4-80703D52F20E}"/>
        </Filters>
    </ImmediateTaskV2>
</ScheduledTasks>
Sean W.
źródło
Wskaż wyraźnie Harmonogram zadań na „C: \ Windows \ System32 \ WindowsPowerShell \ v1.0 \ powershell.exe” i zobacz, co się stanie ... będzie to <Command>C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe</Command>część wartościowa pliku XML, a nie tylko wartość powershell.exePozwól mi wiedzieć, czy to ci pomoże.
Pimp Juice IT
Dodatkowo \\uncpathdo skryptu PowerShell może nie być dostępny z konta lokalnego, na którym działa to zadanie, ponieważ spróbuj wskazać go na ścieżkę litery serwera lokalnego / dysku PC i upewnij się, że skrypt jest tam zapisany. Lub uruchom jako konto domeny z dostępem do ścieżki UNC, w której zapisany jest skrypt PS, zamiast uruchamiania go jako konta lokalnego.
Pimp Juice IT
Czy miałeś okazję przejrzeć moje sugestie w komentarzach i sprawdzić, czy rozwiążą one Twój problem?
Pimp Juice IT
@PIMP_JUICE_IT Przepraszam za bardzo późną odpowiedź, próbowałem obu z nich, a one również nie działały. Chociaż kilka razy nic nie pojawiło się w dzienniku zdarzeń (być może po edycji zdarzenia oznaczonego jako jednorazowe?), Więc mogłem robić coś innego źle.
Sean W.
Zamiast tego wstawiając -NoProfile -NoLogo -NonInteractive -ExecutionPolicy Bypass -File \\DC\Shared\Deployment\deployment.ps1jako argument do swojego zadania, po prostu usuń wszystko z argumentu, a następnie wstaw powershell.exe -NoProfile -NoLogo -NonInteractive -ExecutionPolicy Bypass -File "\\DC\Shared\Deployment\deployment.ps1"jako polecenie i sprawdź, czy otrzymasz inny wynik, aby wszystko było w poleceniu i podwójnych cudzysłowach wokół ścieżki unc pliku PS1 i brak argumentów w Harmonogramie zadań.
Pimp Juice IT