【发布时间】:2020-05-19 07:46:25
【问题描述】:
我正在尝试编写一个脚本来收集有关文件夹中文件的信息并输出到 csv。在我修改最终用户(标准用户、读取+执行、windows)的权限之前,一切正常。脚本无法捕获全局变量,虽然作为脚本变量工作,但输出是错误的。 (脚本被截断了一些)
$global:filecount = 1
Get-ChildItem C:\temp\data\ -Recurse -include @("*.txt*","*.pdf") |
Select-Object CreationTime,
@{Name = "Date Added";Expression={get-date}},
@{Name = "User Added";E={$env:UserName}},
@{n ='SHA1';e={(Get-FileHash $_ -Algorithm SHA1).Hash}}
@{n ='SHA256';e={(Get-FileHash $_ -Algorithm SHA256).Hash}}
@{n = "Filecount"; Expression = {$global:filecount; $global:filecount++}} |
Export-Csv $output_location -append
如果是全局的,非管理账户下filecount的输出为0。 如果脚本级别变量,并且实际文件数为 1,则输出为 1 1 1
我该如何解决这个问题?我是 powershell 新手,而不是行业的脚本制作者,所以我可能在这里遗漏了一些逻辑。
此外,脚本大约有 800 行长。每个其他变量都有效。大多数脚本是用户输入导出到 csv 的变量值。只有文件计数失败。
谢谢大家。
编辑澄清 输出创建一个 csv 文件,使得字段格式如下: enter image description here
CreationTime 添加到数据库的日期 英特尔添加到数据库的用户 Source sourceID FileID BaseName Extension Folder Kilobytes SHA1 SHA256 SHA512 MD5
【问题讨论】:
-
您应该声明
$Global:filecount = 1而不是$filecount = 1,因为您稍后会增加全局$global:filecount++范围。 -
谢谢。我确实将变量声明为 $global: 和 $script: 到处匹配我上面脚本中的使用。如果我不这样做,我会收到另一个错误,指出 x 变量已经定义良好......
标签: powershell variables scripting