小编McK*_*ing的帖子

从powershell数组/集合/哈希表中删除一行

我有一个大型数组(从Excel电子表格导入),它有一个我要删除的"总"行.它始终是数组中的最后一项.我试图找到一种方法来删除最后一个数组项,但不能.以下数据和代码示例:

$data = Import-XLSX -Path "C:\Pathtofile\spreadsheet.xlsx" -Sheet "SheetName" -RowStart 3
$data | ? {$_.Server -eq "Total"}


Server        : Total
VLAN          :
IP Address    :
CPU           : 84
RAM           : 313
C:\           : 2840
D:\           : 17950
OS Version    :
OS Edition    :
SQL Version   :
SQL Edition   :
Datastore     :
Reboot        :
Notes         :
Run Code Online (Sandbox Code Playgroud)

我希望能够从数组中删除此行.我尝试过以下方法:

$data.Remove("Total")
Exception calling "Remove" with "1" argument(s): "Collection was of a fixed size."
At line:1 char:1
+ $ImportCSV.Remove("Total")
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo          : NotSpecified: (:) …
Run Code Online (Sandbox Code Playgroud)

arrays powershell

7
推荐指数
2
解决办法
2万
查看次数

Powershell从被调用的脚本运行cmdlet

我有一个脚本调用另一个脚本(带参数).被调用的脚本包含Install-WindowsFeaturecmdlet.当我运行脚本时,被调用的脚本会运行,但会返回以下错误:

Install-WindowsFeature : The term 'Install-WindowsFeature' is not recognized as the name of a cmdlet, function, script file, or operable program. Check the spelling of the name, or if a path was included, verify that the path
Run Code Online (Sandbox Code Playgroud)

当然,我可以从PowerShell控制台运行cmdlet.我也可以从PowerShell控制台运行被调用的脚本并且Install-WindowsFeature工作正常.那么,从运行cmdlet的脚本调用脚本是否有用呢?这是我的调用代码:

$script = "C:\Path\script.ps1"
$argumentList = @()
$argumentlist += ("-Arg1", "value")
$argumentlist += ("-Arg2", "value")
$argumentlist += ("-Arg3", "value")
Invoke-Expression "$script $argumentList"
Run Code Online (Sandbox Code Playgroud)

在被调用的脚本中,我调用Install-WindowsFeature如下:

if ($someValue) { Invoke-Command -ScriptBlock {Install-WindowsFeature -Name RSAT-AD-Tools} }
Run Code Online (Sandbox Code Playgroud)

我也尝试过如下:

if ($someValue) { Install-WindowsFeature …
Run Code Online (Sandbox Code Playgroud)

powershell

7
推荐指数
1
解决办法
876
查看次数

Powershell根据子字符串计算项目组

我有一个从包含几个元素的命令收集的数据数组.每个项目的名称元素以三个或四个字符标识符开头,后跟连字符.我想得到数组中包含相同标识符的所有项的计数.

使用以下PowerCLI(VMware)命令收集的数据:

$items = Get-Datastore <Datastore Name> | Get-VM
Run Code Online (Sandbox Code Playgroud)

数据示例:

NAME     STATUS     INFO     DETAIL
ABC-1234-XXXX     PoweredOn     Info     Detail
ABC-1235-XXXX     PoweredOn     Info     Detail
ABC-1236-XXXX     PoweredOn     Info     Detail
BCA-1234-XXXX     PoweredOn     Info     Detail
BCA-1235-XXXX     PoweredOn     Info     Detail
CBA-1234-XXXX     PoweredOn     Info     Detail
CBA-1235-XXXX     PoweredOn     Info     Detail
CBA-1236-XXXX     PoweredOn     Info     Detail
CBA-1237-XXXX     PoweredOn     Info     Detail
Run Code Online (Sandbox Code Playgroud)

我希望脚本能给我以下内容:

NAME     COUNT
ABC     3
BCA     2
CBA     4
Run Code Online (Sandbox Code Playgroud)

我真的没有代码示例,但我考虑将PowerShell"group"方法与count方法结合使用.我正在努力将所有东西组合成可用的东西.

组:

$array = $items | Group Name
Run Code Online (Sandbox Code Playgroud)

计数:

$array.count
Run Code Online (Sandbox Code Playgroud)

编辑:添加数据收集命令

arrays powershell

3
推荐指数
2
解决办法
877
查看次数

标签 统计

powershell ×3

arrays ×2