小编YEM*_*slf的帖子

如何在 PowerShell 中向自定义对象动态添加新属性

我有一个自定义对象,其中包含看起来像这样的设备信息。

name,model,sn
PC1,Elitebook 850, ABC123,
PC2,EliteDesk 600,123ABC
Run Code Online (Sandbox Code Playgroud)

我有一个功能可以检索防病毒产品检测到的威胁。它们作为对象数组返回。有比下面更多的属性,但这只是一个例子

file,md5
bad.exe,adfdfdfd
evil.exe,fdfdffdf
Run Code Online (Sandbox Code Playgroud)

我想将每个成员作为属性添加到自定义对象中,因此最终输出与此类似。

name,model,sn,01_file,01_md5,02_file,02_md5
Run Code Online (Sandbox Code Playgroud)

目前,我的脚本执行以下操作:

foreach($device in $devices){
    $threats = Get-Threats $device
    [pscustomobject] @{
        name = $device.device_name
        make = $device.make
        sn = $device.sn
        ThreatFileName = $threats.File -join ", "
        Threat_md5 = $threats.md5 -join ", "
    }
}
Run Code Online (Sandbox Code Playgroud)

这可以正常工作,但我真的希望“Get-Threats”函数返回的每个对象都作为其自己的一组属性列出。我需要动态生成这个,因为我不知道每个设备会返回多少威胁。

关于如何解决这个问题的任何想法?

powershell

7
推荐指数
2
解决办法
8646
查看次数

Powershell脚本,用于在AD中查询特定于OU的计算机名称和导出

我非常(完全阅读)PowerShell的新手,我正在研究一个项目,在我们的网络上的某些计算机上安装已安装的软件.我挖出一个脚本来处理软件清单部分,但它依赖于一个带有计算机名称的文本文件进行扫描.我正在寻找一种方法来查询AD的特定OU的计算机名称.理想情况下,脚本会提示用户输入要导出到的OU和文本文件的路径.然后它将搜索AD以查找匹配项,如果找到则导出到指定路径.因此,例如,要导出OU =工作站中的所有计算机,OU =纽约,DC = Fabrikam,DC = com"用户应该收到提示并输入"纽约",并且所有计算机名称都将导出到指定的路径.任何帮助将不胜感激.

powershell active-directory

3
推荐指数
1
解决办法
3万
查看次数

比较对象并包含未在输出中进行比较的属性

我正在使用Compare-Objectcmdlet比较来自不同来源(不同列/属性名称)的两个 CSV 文件。如何在输出中包含任一 CSV 文件中的属性而不将它们包含在比较中?

CSV 数据示例

用户1.csv

电子邮件地址,姓名,侧面
luke@sw.com,Luke,light

用户2.csv

电子邮件地址、受雇者、爱好
lando@sw.com,5/2/17,Sabacc

以下为我提供了一个包含电子邮件地址和侧面指示符的列,但是在比较中如何获取$Users1.name$Users2.hiredate不使用它们?

$Users1 = Import-Csv users1.csv
$Users2 = Import-Csv users2.csv

Compare-Object $Users1 $Users2 -Property "E-mail-Address"
Run Code Online (Sandbox Code Playgroud)

我想要类似的输出:

电子邮件地址 | 侧面指示器 | 姓名 | 雇用日期
---------------|------------------------------|------|---------
luke@sw.com | <= | 卢克 |
lando@sw.com | => | | 5/2/17

csv powershell compareobject

1
推荐指数
1
解决办法
2345
查看次数

标签 统计

powershell ×3

active-directory ×1

compareobject ×1

csv ×1