远程Powershell解析

时间:2016-02-17 21:40:33

标签: windows parsing powershell

我试图在Windows域中检索有关远程可执行文件的不同信息的已解析列表,权限正在处理并且各个Powershell命令正在运行,我的问题是在文件上输出此递归列表(将所有内容正确放在一起) :

我想要的输出(每台计算机):

computer_name.csv # Filename

$application1Name.exe, $application1Version, $application1LastModifiedDateMMDDYY, $application1MD5HASH
$application2Name.exe, $application2Version, $application2LastModifiedDateMMDDYY, $application2MD5HASH

...

到目前为止,我已经完成了所有工作:

#A way to recursive retrieve executables from a given remote path (Name + LastModified):
get-childitem \\192.168.X.X\C$\defaultPath\FoldersAndSubfoldersWithExecutables\ - Include *.exe -Recurse | ForEach-Object {$_.Name, $_.LastWriteTime} > C:\LOCALPATH\output.txt

#A way to retrieve the version info from remote executables (Version):
[System.Diagnostics.FileVersionInfo]::GetVersionInfo("\\192.168.X.X\C$\defaultPath\application1.exe").FileVersion

#A way to retrieve the MD5 Hash from remote executable files (MD5HASH):
get-FileHash \\192.168.X.X\C$\defaultPath\application1.exe -Algorithm MD5 | ForEach-Object { $_.Hash }

我的问题是构建这个脚本结构以容纳上面列出的所需输出,我有一个IP地址列表来循环这个脚本,但我有连接点的问题..

谢谢!

1 个答案:

答案 0 :(得分:1)

您列出的每个操作都可以在ForEach-Object循环中执行,并且可以使用字符串插值构建包含所有必需数据点的结果csv字符串。

Get-ChildItem \\192.168.x.x\C$\defaultPath\FoldersAndSubfoldersWithExes\ -Include *.exe -Recurse | ForEach-Object {
    $Name = $_.Name
    $LastWriteTime = $_.LastWriteTime
    $Version =[System.Diagnostics.FileVersionInfo]::GetVersionInfo($_.FullName).FileVersion
    $Hash = (Get-FileHash $_.FullName -Algorithm MD5).Hash

    "$Name, $Version, $LastWriteTime, $Hash"
} | Out-File computerName.csv