【问题标题】:Powershell Script to pass the results of multiple Get-SMB requests in to a csv file将多个 Get-SMB 请求的结果传递到 csv 文件的 Powershell 脚本
【发布时间】:2021-11-27 14:45:47
【问题描述】:

PowerShell 新手,我在哪里出错了? 任何帮助都会很棒。

Powershell 脚本将多个 Get-SMB 请求的结果传递到 csv 文件中。

将正常执行,但 csv 为空。

$OutArray= @()

$SmbCommands = @(
$SmbInfo1 = Get-SmbClientConfiguration
$SmbInfo2 = Get-SmbMapping
$SmbInfo3 = Get-SmbMultichannelConstraint
$SmbInfo4 = Get-SmbServerConfiguration
$SmbInfo5 = Get-SmbShare
)

# For Each
foreach ($i in $SmbCommands)
    {
        # Construct object
        $myobj = "" | Select "SmbInfo1", "$SmbInfo2", "$SmbInfo3", "$SmbInfo4", "$SmbInfo5"
        #$myobj = "" | Select "SmbInfo1", "$SmbInfo2", "$SmbInfo3", "$SmbInfo4", "$SmbInfo5" #im trying to pass ^^^ those commands in to the object creator <<<<<

        # Fill the object
        $myobj.SmbInfo1 = $SmbInfo1
        $myobj.SmbInfo2 = $SmbInfo2
        $myobj.SmbInfo3 = $SmbInfo3
        $myobj.SmbInfo4 = $SmbInfo4
        $myobj.SmbInfo5 = $SmbInfo5

        # Add the object to the out-array
        $OutArray += $myobj

        # Wipe object
        $myobj = $null
    }

# After the loop, exports the array to CSV
$OutArray | export-csv "C:\Temp\SMBInfo.csv"

【问题讨论】:

  • 您希望生成的 CSV 文件是什么样的?这些命令的输出对象具有不同的属性集,因此您最终会得到大多数列为空的行,或者您会丢失数据
  • 不知道队友,因为我还没有让它工作,我稍后会解决格式,只是希望以任何形式输出结果
  • id 最后可能只是输出到txt
  • 真正支持分层数据的格式,比如 JSON 怎么样? $OutArray |ConvertTo-Json |Set-Content output.json
  • $OutArray | ConvertTo-Json "C:\Temp\SMBInfo.json"

标签: powershell powershell-3.0


【解决方案1】:

输出数组是空的,因为您的 $SmbCommands 数组是空的,因为赋值语句(如 $SmbInfo1 = Get-SmbClientConfiguration)默认情况下不会在 PowerShell 中输出任何内容。

相反,这样做:

# Create an object that holds all the queried information (like you were trying to do with $myObj)
$smbInfo = [pscustomobject]@{
  SmbInfo1 = Get-SmbClientConfiguration
  SmbInfo2 = Get-SmbMapping
  SmbInfo3 = Get-SmbMultichannelConstraint
  SmbInfo4 = Get-SmbServerConfiguration
  SmbInfo5 = Get-SmbShare
}

# Convert the object hierarchy to JSON
$JSON = $smbInfo |ConvertTo-Json -Depth 5

# Write output to disk  
$JSON |Set-Content output.json

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-02-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多