首页 文章

在PowerShell中首次运行时无法识别cmdlet

提问于
浏览
0

我遇到了第一批PowerShell代码的问题 .

  • cmdlet和用户定义的函数在第一次运行时无法识别,但如果我再次运行代码则工作正常

  • 用户定义的函数从前一个run.i.e获取值 . 基本上我们需要运行代码两次以获得正确的结果

码:

$resultVar=get-CPUAndMemUtilization -computername $computername -CPUCriteria $CPUCriteria -MemCriteria $MemCriteria
#Write-Host  "Mme:"$resultVar;
$CPUMem += [PSCustomObject] @{  
        CPULoad = "$($resultVar[0])" 
        MemLoad = "$($resultVar[1])" 
} 
Write-Host $CPUMem;


function get-CPUAndMemUtilization($computername,$CPUCriteria,$MemCriteria)
{

    $Memstatus=$null;
    $CPUstatus=$null;
    $AVGProc = Get-WmiObject -computername $computername win32_processor |  Measure-Object -property LoadPercentage -Average | Select Average 
    $OS = gwmi -Class win32_operatingsystem -computername $computername | 
    Select-Object @{Name = "MemoryUsage"; Expression = {“{0:N2}” -f ((($_.TotalVisibleMemorySize - $_.FreePhysicalMemory)*100)/ $_.TotalVisibleMemorySize) }} 
    $result += [PSCustomObject] @{  
        ServerName = "$computername" 
        CPULoad = "$($AVGProc.Average)%" 
        MemLoad = "$($OS.MemoryUsage)%" 
    } 

    if($AVGProc.Average -lt $CPUCriteria)
    {
        $Memstatus=1;
    }else{
        $Memstatus=0;
    }


    if($OS.MemoryUsage -lt $MemCriteria)
    {
        $CPUstatus=1;
    }else{
        $CPUstatus=0;
    } 

    $CPUstatus
    $Memstatus
return;
}

代码返回系统的系统CPU和Me系统CPU和Mem利用率
错误:

get-CPUAndMemUtilization:术语“get-CPUAndMemUtilization”未被识别为cmdlet,函数,脚本文件或可操作程序的名称 . 检查名称的拼写,或者如果包含路径,请验证路径是否正确,然后重试 .

1 回答

  • 2

    在将函数导入PowerShell会话之前调用该函数(因此它不存在),只需交换这两件事:

    function get-CPUAndMemUtilization($computername,$CPUCriteria,$MemCriteria)
    {
    ...
    }
    $resultVar=get-CPUAndMemUtilization -computername $computername -CPUCriteria $CPUCriteria -MemCriteria $MemCriteria
    #Write-Host  "Mme:"$resultVar;
    $CPUMem += [PSCustomObject] @{  
            CPULoad = "$($resultVar[0])" 
            MemLoad = "$($resultVar[1])" 
    } 
    Write-Host $CPUMem;
    

相关问题