簡體   English   中英

PowerShell日志文件文件系統權限

[英]PowerShell log file file-sytem rights

我編寫了一個為腳本編寫日志文件的函數。 第一次使用該功能時,它將在目錄和腳本名稱中寫入一個日志文件。 以后每次運行時,日志消息都將附加到該文件。

到現在為止還挺好。 千方百計,其他人現在開始使用我的腳本! 腳本主要由具有服務器本地管理員權限的管理員使用。 但是它們在寫入日志文件時都會出錯。 據我了解,當您訪問具有“管理員”組提供的權限的文件時,您必須處於提升特權模式。 但是我不想要那個。 我手動嘗試將修改分配給“用戶”組,但隨后“管理員”似乎優先。

任何人都知道在PowerShell中設置(和/或撤銷)什么權限以及如何實現此權限?

正如Ansgar Wiecher所說,您可能應該考慮使用事件日志服務。

使用事件日志,只有在其中一個腳本第一次運行時才需要提升的特權,以便創建日志並注冊事件源,之后任何人都可以對其進行寫入:

function Write-MyLog {
  param(
    [Parameter(Mandatory = $true)]
    [string]$Message,

    [Parameter(Mandatory = $true)]
    [ValidateRange(1,65535)]
    [int]$EventId,

    [Parameter(Mandatory = $false)]
    [System.Diagnostics.EventLogEntryType]$EntryType = 'Information'
  )

  # Prepend PID and script path to message
  $PSBoundParameters['Message'] = '[{0}: {1}]{2}{3}' -f $PID,$MyInvocation.ScriptName,[Environment]::NewLine,$Message

  # Set event log target
  $PSBoundParameters['LogName'] = $logName   = 'LeosEvents'
  $PSBoundParameters['Source']  = $logSource = 'LeosScripts'

  if (-not (Get-WinEvent -ListLog $logName -ErrorAction SilentlyContinue)) {
    # Create event log and source if it doesn't exist already 
    # This is the only step that requires elevation, can be created via GPO if desired
    New-EventLog -LogName $logName -Source $logSource
  }

  # Write event log entry
  Write-EventLog @PSBoundParameters
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM