Попытка удалить файл с помощью скрипта Powershell, запущенного службой, но проблемы с UAC

У меня проблемы со скриптом, который удалит файл на C-Drive сервера. скрипт выглядит так:

param(
[Parameter(Mandatory=$true)][string]$hostname
)

$StrFileName = "C:\Program Files\NSClient++\nsclient.log"
$LogLocal="c:\Nagios\naf_delete_nscp_log_file.log"

$Date = Get-Date -Format "yyyy-MM-dd hh:mm:ss"
"$date : NSClient logfile deletion requested on $hostname" | Out-File -filepath     $LogLocal -Append

If (Test-Path "$strFileName"){
    Remove-Item $strFileName -Force
$Date = Get-Date -Format "yyyy-MM-dd hh:mm:ss"
"$date : NSClient logfile deleted on $hostname" | Out-File -filepath $LogLocal -Append
}

Сценарий запускается быстрым действием Nagios, которое будет использовать nrpe для передачи хоста в качестве параметра и запуска его сервисом nscp, работающим как локальная система. Он отлично работает на серверах, на которых не включен UAC, но я не могу заставить его работать на серверах с UAC. Я пробовал множество вариантов, но ни один из них не работает. Любые советы или рекомендации, чтобы заставить это работать на серверах с включенным UAC высоко ценится.

Благодарю.

Willem

1 ответ

Решение

В вашем файле nsclient.ini я думаю, что вам просто нужно настроить либо оболочку для PowerShell, либо определение самого сценария с помощью -Verb RunAs, В оболочке, например, по умолчанию у вас есть это:

ps1 = cmd /c echo scripts\\%SCRIPT% %ARGS%; exit($lastexitcode) | powershell.exe -command -

Который вы могли бы обновить с этим

ps1 = cmd /c echo scripts\\%SCRIPT% %ARGS%; exit($lastexitcode) | powershell.exe -command -Verb RunAs -

Обновление из комментариев

Будет ли это определение работать вместо использования оболочки

naf_delete_nscp_log_file=powershell.exe -Verb RunAs -file scripts\naf_delete_nscp_log_file.ps1 "$ARG1$"
Другие вопросы по тегам