【发布时间】:2017-02-02 19:38:31
【问题描述】:
可能是一个愚蠢的问题,但要么我的谷歌搜索能力大幅下降 - 要么似乎没有其他人在问/回答这种事情。
让我们从我的最终目标开始,这样我们就可以看到我是如何做到这一点的:我想运行一个脚本来自动检查文件夹大小的路径。我希望它以 GB 为单位返回文件夹大小。然后,我想将文件夹大小导入到我为报告目的而设置的 MySQL 数据库中。
令人惊讶的是(并且有些不足为奇),昨天刚刚获得文件夹大小是一个相当大的痛苦。经历了互联网/等其他人的一系列不同尝试/功能。
所以,这就是我的结局:
$dirlist = import-csv C:\Users\Public\Folders.csv
foreach ($path in $dirlist)
{
$name = $path.name
echo $path >> C:\Users\Public\sizes.txt
$totalsize = (Get-ChildItem $name -recurse -force | measure-object -property length -sum)
"{0:N2}" -f($totalsize.sum / 1GB) >> C:\Users\Public\sizes.txt
}
我想这很好。它给了我一个所有尺寸的列表,在他们自己的行上。我只需要为每个尺寸分配它自己的变量。所以,我假设 - 像一个白痴一样 - 我可以使用“var”列在 Folders.csv 文件中预先分配变量。
所以,我做到了。
然后我修改了脚本,如下:
$dirlist = import-csv C:\Users\Public\Folders.csv
function Get-FolderSize
{
$name = $path.name
$var = $path.var
$totalsize = (Get-ChildItem $name -recurse -force | measure-object -property length -sum)
"{0:N2}" -f($totalsize.sum / 1GB) -outvariable $var
}
foreach ($path in $dirlist)
{
Get-FolderSize
}
但这会产生以下错误:
At line:12 char:39
+ "{0:N2}" -f($totalsize.sum / 1GB) -outvariable $var
+ ~~~~~~~~~~~~
Unexpected token '-outvariable' in expression or statement.
At line:12 char:52
+ "{0:N2}" -f($totalsize.sum / 1GB) -outvariable $var
+ ~~~~
Unexpected token '$var' in expression or statement.
+ CategoryInfo : ParserError: (:) [], ParentContainsErrorRecordException
+ FullyQualifiedErrorId : UnexpectedToken
供参考,Folders.csv 基本上就是这样的:
"name","var"
"\\Server\D$\Folder","Folder1"
"\\Server2\G$\Folder","Folder2"
tl;dr // 多个文件路径的 CSV -> 以 GB 为单位获取大小 -> 将每个大小存储在指定变量中
【问题讨论】:
标签: powershell variables foreach output