我希望使用PowerShell和Invoke-Command在某些reomote服务器上获取特定文件的文件清单。我想收集信息,然后以CSV格式导出到特定文件夹。
我有几个日期的局部变量(附加到文件名)和服务器列表。我知道我需要使用-ArgumentList参数来传递局部变量,但语法让我感到困惑的是ForEach方面(我不是一个编程方面的人)。这就是我所拥有的:
$FileServerList = "Server01","Server02","Server03"
$DateTime = Get-Date -Format s
ForEach ($FileServer in $FileServerList) {
Invoke-Command -ComputerName $FileServer -ScriptBlock {
Get-ChildItem -Path "D:\PathtoFile\*" -Recurse -Include "index.html" | Select-Object Name,DirectoryName,CreationTime,LastWriteTime`
| Export-Csv -Path C:\Users\Public\Documents\Data_$DateTime.csv -NoTypeInformation -Verbose
}
}
我应该将脚本块本身保存在变量中还是转到其他路径?任何指导都表示赞赏。
答案 0 :(得分:0)
由于未使用单独的凭据调用Invoke-Command
,我假设当前Powershell会话中的用户具有访问服务器的凭据。
对于远程位置,您可以使用UNC路径:
$FileServerList = "Server01","Server02","Server03"
$DateTime = Get-Date -Format s
ForEach ($FileServer in $FileServerList) {
Get-ChildItem -Path "\\$FileServer\d$\PathtoFile\*" -Recurse -Include "index.html" |
Select-Object Name,DirectoryName,CreationTime,LastWriteTime |
Export-Csv -Path \\$FileServer\c$\Users\Public\Documents\Data_$DateTime.csv -NoTypeInformation -Verbose
}