Код: Выделить всё
psi = new ProcessStartInfo(psPath, "-executionpolicy bypass -file c:\\temp\\HeartBeatScript.ps1 -verbose");
psi.CreateNoWindow = false;
psi.UseShellExecute = true;
psi.Verb = "runas";
psi.WindowStyle = ProcessWindowStyle.Hidden;
Process.Start(psi);
Код: Выделить всё
&{
Start-Transcript c:\temp\PSTranscript.txt
Set-PSDebug -Trace 2
$time = Get-Date
write-host "Starting" $time
$ServiceName = 'UsageMonitor'
$UpdateFromPath = '\\FileShare\Test Software\User\Share\*'
$CopyTo = 'C:\temp\'
$arrService = Get-Service -Name $ServiceName
Start-Sleep -seconds 60
$time = Get-Date
write-host "Stopping service" $time
while ($arrService.Status -eq ''Running'')
{
Stop-Service $ServiceName
Start-Sleep -seconds 35
$arrService.Refresh()
}
Start-Sleep -seconds 10
$time = Get-Date
write-host "Copying Files" $time
Copy-Item -force -path $UpdateFromPath -destination $CopyTo
Start-Sleep -seconds 30
$time = Get-Date
write-host "Starting Service" $time
Start-Service $ServiceName
Start-Sleep -seconds 35
$arrService.Refresh()
while ($arrService.Status -ne 'Running')
{
Start-Service $ServiceName
Start-Sleep -seconds 35
$arrService.Refresh()
}
$time = Get-Date
write-host "complete" $time
} *>c:\temp\PSScriptOut.txt
Код: Выделить всё
Transcript started, output file is c:\temp\PSTranscript.txt
Starting 7/1/2024 12:24:00 PM
Stopping service 7/1/2024 12:25:01 PM
Copying Files 7/1/2024 12:25:46 PM
Starting Service 7/1/2024 12:26:16 PM
complete 7/1/2024 12:26:51 PM
Код: Выделить всё
**********************
Windows PowerShell transcript start
Start time: 20240701122400
Username: domain\SYSTEM
RunAs User: domain\SYSTEM
Configuration Name:
Machine: LD318077 (Microsoft Windows NT 10.0.22631.0)
Host Application: C:\WINDOWS\System32\WindowsPowerShell\v1.0\PowerShell.exe -executionpolicy bypass -file c:\temp\HeartBeatScript.ps1
Process ID: 60924
PSVersion: 5.1.22621.3672
PSEdition: Desktop
PSCompatibleVersions: 1.0, 2.0, 3.0, 4.0, 5.0, 5.1.22621.3672
BuildVersion: 10.0.22621.3672
CLRVersion: 4.0.30319.42000
WSManStackVersion: 3.0
PSRemotingProtocolVersion: 2.3
SerializationVersion: 1.1.0.1
**********************
Starting 7/1/2024 12:24:00 PM
Stopping service 7/1/2024 12:25:01 PM
Copying Files 7/1/2024 12:25:46 PM
Starting Service 7/1/2024 12:26:16 PM
complete 7/1/2024 12:26:51 PM
PS>$global:?
True
**********************
Windows PowerShell transcript end
End time: 20240701122651
**********************
Я вижу, что служба останавливается. Я вижу запуск службы.
Чего я не вижу, так это файлов, скопированных посередине.
Если я запускаю тот же сценарий в среде PSE, все работает. Служба останавливается. Файлы копируются. Служба запускается.
У меня есть механизм, с помощью которого я могу предоставить альтернативные учетные данные для запуска сценария PS. Но это было бы неудобно, поскольку для этого потребуется другой отдел.
Идеи, как мне заставить это работать?
Подробнее здесь: https://stackoverflow.com/questions/786 ... rp-service
Мобильная версия