远程PowerShell,本地变量和ForEach

时间:2018-01-19 13:19:02

标签: windows powershell

我希望使用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 
    } 
}

我应该将脚本块本身保存在变量中还是转到其他路径?任何指导都表示赞赏。

1 个答案:

答案 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
}