cmdlet的响应时间

时间:2018-07-29 09:16:49

标签: powershell cmdlets get-wmiobject

我正在编写用于服务器硬件清单的脚本。 从AD中可以获得所有Windows计算机的列表,然后丢弃虚拟机。我注意到某些虚拟机的Get-WmiObject cmdlet响应时间非常长。有什么方法可以设置cmdlet的响应时间?

Clear-Host
Import-Module activedirectory

$file = "$env:TEMP\psw.txt"
Read-Host "Enter Password" -AsSecureString | ConvertFrom-SecureString | Out-File $file
$cred = (New-Object -TypeName System.Management.Automation.PSCredential -ArgumentList $env:USERNAME, (Get-Content $file | ConvertTo-SecureString))

function Get-Hosts {
    $DaysAgo = (Get-Date).AddDays(-0)
    [string[]]$ComputerName = (Get-ADComputer -Filter {(OperatingSystem -Like "Windows Server*") -and ((PwdLastSet -lt $DaysAgo) -or (LastLogonTimeSTamp -lt $DaysAgo))}).Name
    [string[]]$Hosts = $null
    $vm = 'Virtual Machine', 'VMware Virtual Platform', 'VirtualBox', 'HVM domU'
    For ($i = 0; $i -lt $ComputerName.count; $i++) {
        $Computer = $null
        $Computer = $ComputerName[$i]
        try {
            if ($null -ne (Test-Connection $Computer -Count 1 -ErrorAction Ignore)) {
                $ComputerSystemInfo = Get-WmiObject -Class Win32_ComputerSystem -ComputerName $Computer -Credential $cred -ErrorAction Stop
                if ($ComputerSystemInfo.Model -notin $vm) {
                    $Computer
                }
            }
        } catch [System.UnauthorizedAccessException] {
            continue
        } catch [Exception] {
            continue
        }
    }
}

Get-Hosts

0 个答案:

没有答案