0

我一直在研究网络以查看我遗漏了什么并且找不到,我运行它通过计算机列表的命令,但导出文档始终为空。

这是代码

    foreach ($computer in Get-Content "\\NETWORK PATH\user-computers.txt") {
    Write-host $computer
    $colDrives = Get-WmiObject Win32_MappedLogicalDisk -ComputerName $computer

    $Report = @()

    # Set our filename based on the execution time
    $filenamestring = "$computer-$(get-date -UFormat "%y-%b-%a-%H%M").csv"
    foreach ($objDrive in $colDrives) {
    # For each mapped drive – build a hash containing information
    $hash = @{
    ComputerName = $computer
    MappedLocation = $objDrive.ProviderName
    DriveLetter = $objDrive.DeviceId
    }
    # Add the hash to a new object
    $objDriveInfo = new-object PSObject -Property $hash
    # Store our new object within the report array
    $Report += $objDriveInfo
    }}
    # Export our report array to CSV and store as our dynamic file name
    $Report | Export-Csv -LiteralPath "\\NETWORK PATH\Drive-Maps.csv" -NoTypeInformation

我想知道每台计算机当前映射的网络驱动器是什么,感谢您的帮助和指导。

4

1 回答 1

0

我不确定你为什么没有得到输出。出于一些我想指出的原因,我重写了你的脚本。首先,你的变量命名不是很清楚。我猜你来自 VBScripting 背景。接下来,您将创建一个数组,然后将其添加到其中 - 这根本不需要。您可以通过分配 like tihs 直接捕获任何循环/脚本块/等的输出。

$Report = foreach($thing in $manythings){Do lots of stuff and everything in stdout will be captured}

如果您以利用管道的方式编写脚本,您可以做得更多。接下来,与使用V3 中引入New-Object的类型加速器相比,创建对象的速度很慢。[PSCustomObject]最后,您似乎为每台计算机创建了一个自定义 csv,但最后您只需将所有内容导出到一个文件中。我假设您想要收集所有这些信息并放入一个 CSV。

我建议您帮助进行故障排除,在您的机器上运行它并确认屏幕上的输出。你在屏幕上看到的任何东西都应该被记录在报告变量中。(除了 write-host,它很特别,只是去控制台)

$computerList = "\\NETWORK PATH\user-computers.txt"

$reportFile = "\\NETWORK PATH\Drive-Maps.csv"

Get-Content $computerList | ForEach-Object {
    Write-host $_
    $mappedDrives = Get-WmiObject Win32_MappedLogicalDisk -ComputerName $_

    foreach ($drive in $mappedDrives)
    {
        # For each mapped drive – build a hash containing information
        [PSCustomObject]@{
            ComputerName = $_
            MappedLocation = $drive.ProviderName
            DriveLetter = $drive.DeviceId
        }

    }
} -OutVariable Report

一旦你知道你有所有正确的信息,运行它来导出它。

$Report  | Export-Csv -LiteralPath $reportFile -NoTypeInformation
于 2020-08-17T16:11:03.623 回答