我想将计数值(文件夹中的 XML 文件的数量)设置为一个变量。
Set-variable (Get-ChildItem $filepath|where{$_.Extension -eq ".xls"}|Measure-Object).Count -Value $NumberOfCabinets
在此之后,我的变量NumberOfCabinets
每次都会给我一个 0 的值。
应如何更改命令才能将正确的值存储在变量中?
答案1
正如 SimonS 在评论中提到的,您需要切换哪个表达式是-Name
,哪个是-Value
。目前,您获取 XLS 文件数量的表达式隐式地是参数-Name
-Set-Variable
即要设置的变量的名称 - 而 的内容是$NumberOfCabinets
该变量的数据。由于$NumberOfCabinets
尚未设置,因此新变量被分配为 null。例如,如果有五个 XLS 文件,$5
则会创建一个名为的变量并将其设置为 null,因为您的 count 表达式提供了变量名称。
通常,Set-Variable
只有当您需要动态选择要设置的变量时才需要。如果您仍然想使用它,您的命令将如下所示:
Set-Variable 'NumberOfCabinets' (Get-ChildItem $filepath | where {$_.Extension -eq ".xls"} | Measure-Object).Count
请注意,要设置/创建的变量的名称只是作为字符串传递。
但是,使用标准赋值运算符设置变量可能更简单:
$NumberOfCabinets = (Get-ChildItem $filepath | where {$_.Extension -eq ".xls"} | Measure-Object).Count
使用一些别名以及 PowerShell 集合已具有属性的事实Count
,我们甚至可以稍微浓缩它:
$NumberOfCabinets = (gci $filepath | ? { $_.Extension -eq '.xls' }).Count