【发布时间】:2018-04-04 06:07:07
【问题描述】:
我正在尝试获取处于特定状态(已保存、正在运行、已停止)的机器列表。我将机器的状态作为参数传递给函数。
Function global:Resource-Summary
{
Param(
[parameter(mandatory=$true)] $ProgramName,
[parameter(mandatory=$true)] $ServerName
)
PROCESS
{
Foreach ($Server in $ServerName)
{
Invoke-Command -ComputerName $Server -ScriptBlock {
$VMs = Get-VM
$colVMs = @()
foreach ($VM in $VMs)
{
$objVM = New-Object System.Object
$objVM | Add-Member -MemberType NoteProperty -Name VMName -Value $VM.VMName
$objVM | Add-Member -MemberType NoteProperty -Name VMNotes -Value $VM.Notes
$objVM | Add-Member -MemberType NoteProperty -Name VMState -Value $VM.State
$colVMs += $objVM
}
$a = @{Expression={$_.VMName};Label='VM Name'}, `
@{Expression={$_.VMNotes};Label='VM Description'}, `
@{Expression={$_.VMState};Label='State'}
"Program Name : $ProgramName"
$colVMs |Where-Object {($_.VMState -eq '$ProgramName')} | Format-Table $a -AutoSize
} -ArgumentList $ProgramName
}
}
}
当我运行Resource-Summary -ProgramName Running -ServerName Demo
我没有得到任何价值。
当我用 RUNNING 替换 $ProgramName 时,我得到了预期的输出。
【问题讨论】:
-
请检查你的问题:你真的打电话给
Resource-Summary -Program name ...还是Resource-Summary -ProgramName ...? -
抱歉,问题中有错字。我使用 Resource-Summary -ProgramName Running -ServerName Demo ..
标签: function powershell variables invoke-command