微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

PowerShell 脚本和 Windows 性能监视器的问题

如何解决PowerShell 脚本和 Windows 性能监视器的问题

在这里,我正在寻求有关 PowerShell 脚本和 Windows 性能监视器 (perfmon) 问题的帮助。

我有一个脚本可以将自定义计数器写入 perfmon。如果以具有管理员权限的普通用户身份在本地执行,它就可以工作。但目标是通过 GPO 分发脚本并通过计划任务触发它。分发工作并运行计划任务,从而执行脚本。但问题来了:计数器已创建,但在 perfmon 中,它们不显示数据。

如果我单击按钮将计数器添加到 perfmon 中的监控,新的计数器将显示在列表中。我可以选择它们并将它们添加到“添加的计数器”列表中,但是当我单击“确定”时,什么也没有发生。

脚本由定时任务执行。任务的历史记录显示它在预期的时间运行,并且可以肯定的是,我添加了一些将执行时间写入文件的行,该文件有效。该任务使用帐户“SYstem”并以最高权限运行。

如果有人给我提示就好了。

亲切的问候!

脚本:

$categoryName = "test-cat-gpo"
$categoryHelp = "something something"
$categoryType = [System.Diagnostics.PerformanceCounterCategoryType]::MultiInstance
$categoryExists = [System.Diagnostics.PerformanceCounterCategory]::Exists($categoryName)

$counterName1 = "Apple"
$counterName2 = "Banana"

$instanceName = "Fruits"

If (-Not $categoryExists) {
    $objCCDC = New-Object System.Diagnostics.CounterCreationDataCollection

    $objCCD1 = New-Object System.Diagnostics.CounterCreationData
    $objCCD1.CounterName = $counterName1
    $objCCD1.CounterType = "NumberOfItems32"
    $objCCD1.CounterHelp = "something something"
    $objCCDC.Add($objCCD1) | Out-Null

    $objCCD2 = New-Object System.Diagnostics.CounterCreationData
    $objCCD2.CounterName = $counterName2
    $objCCD2.CounterType = "NumberOfItems32"
    $objCCD2.CounterHelp = "something something"
    $objCCDC.Add($objCCD2) | Out-Null

    [System.Diagnostics.PerformanceCounterCategory]::Create($categoryName,$categoryHelp,$categoryType,$objCCDC)|Out-Null
}

$perfInst1a = New-Object System.Diagnostics.PerformanceCounter($categoryName,$counterName1,$instanceName,$false)
$perfInst2a = New-Object System.Diagnostics.PerformanceCounter($categoryName,$counterName2,$false)

$tmp = Get-Random -Maximum 100
$perfInst1a.RawValue = $tmp

$tmp = Get-Random -Maximum 100
$perfInst2a.RawValue = $tmp

#################################################################
# Write test to be sure script is executed
#################################################################

$testPath = "c:\temp-dk\"
$testFile = "test-gpo.txt"
$testPathFile = $testPath + $testFile

$today = Get-Date -Format "dd.MM.yyyy HH:mm:ss"

if (! (Test-Path $testPath)) {
    $tmp = New-Item -Path $testPath -ItemType Directory
} 

if (! (Test-Path $testPathFile)) {
    $tmp = New-Item -Path $testPathFile -ItemType File -Value $today
} else {
    Add-Content -Path $testPathFile -Value "$today"
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。