相关疑难解决方法(0)

如何计算PowerShell中的对象?

正如我在PowerShell用户指南中所读到的,PowerShell的核心概念之一是命令接受并返回对象而不是文本.例如,运行会get-alias返回许多System.Management.Automation.AliasInfo对象:

PS Z:\> get-alias

CommandType     Name                                             Definition
-----------     ----                                             ----------
Alias           %                                                ForEach-Object
Alias           ?                                                Where-Object
Alias           ac                                               Add-Content
Alias           asnp                                             Add-PSSnapIn
Alias           cat                                              Get-Content
Alias           cd                                               Set-Location
Alias           chdir                                            Set-Location
...

现在,我如何获得这些对象的数量?

powershell scripting

127
推荐指数
4
解决办法
37万
查看次数

当一个调用只返回一个对象时,如何强制Powershell返回一个数组呢?

我正在使用Powershell在Web服务器上设置IIS绑定,并且遇到以下代码的问题:

$serverIps = gwmi Win32_NetworkAdapterConfiguration 
    | Where { $_.IPAddress } 
    | Select -Expand IPAddress 
    | Where { $_ -like '*.*.*.*' } 
    | Sort

if ($serverIps.length -le 1) {
    Write-Host "You need at least 2 IP addresses for this to work!"
    exit
}

$primaryIp = $serverIps[0]
$secondaryIp = $serverIps[1]
Run Code Online (Sandbox Code Playgroud)

如果服务器上有2个以上的IP,那么很好 - Powershell返回一个数组,我可以查询数组长度并提取第一个和第二个地址就好了.

问题是 - 如果只有一个IP,Powershell不返回单元素数组,它返回IP地址(作为字符串,如"192.168.0.100") - 字符串有一个.length属性,它大于1,所以测试通过,我最后得到字符串中的前两个字符,而不是集合中的前两个IP地址.

如何强制Powershell返回单元素集合,或者确定返回的"thing"是对象而不是集合?

powershell

105
推荐指数
4
解决办法
5万
查看次数

计算数组的长度,如果只包含一个元素,则返回1

$cars = "bmw","audi","volvo","vw"
echo $cars.length
Run Code Online (Sandbox Code Playgroud)

返回4,但是

$cars = "bmw"
Run Code Online (Sandbox Code Playgroud)

返回3因为它计算字符..

如果数组只包含一个项目,有没有办法可以返回1?

arrays powershell

21
推荐指数
3
解决办法
10万
查看次数

如何使用Get-Process中的Count属性返回漂亮的零值?

比较下面的三个脚本:

样品1

$a = GPS | Where {$_.ProcessName -Match 'AcroRd32'}
$a
$a.Count

If ($a.Count -Eq 0)
{
    Echo "Adobe Reader is Off"
}
Else
{
    Echo "Adobe Reader is On"
}

# If Adobe Reader is not running, how come 0 (zero) is not returned?
# This is prettier, should I use it?  Or does it slow down performance?
Run Code Online (Sandbox Code Playgroud)



样本2

$a = GPS AcroRd32
$a
$a.Count

If ($a.Count -Eq 0)
{
    Echo "Adobe Reader is Off"
}
Else
{
    Echo …
Run Code Online (Sandbox Code Playgroud)

powershell stderr powershell-2.0

5
推荐指数
1
解决办法
5652
查看次数

标签 统计

powershell ×4

arrays ×1

powershell-2.0 ×1

scripting ×1

stderr ×1