Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 在PowerShell中筛选CSV文件中的内容_Excel_Powershell_Csv_Select_Filter - Fatal编程技术网

Excel 在PowerShell中筛选CSV文件中的内容

Excel 在PowerShell中筛选CSV文件中的内容,excel,powershell,csv,select,filter,Excel,Powershell,Csv,Select,Filter,我使用以下PowerShell脚本来确定最终用户在其计算机上有哪些应用程序(除了映像安装的默认应用程序之外) 当前,该脚本收集旧计算机上的应用程序列表,并将默认应用程序列表粘贴到其下方(来自DefaultApps.csv)。然后我在Excel中打开它,添加条件格式以查找重复条目并隐藏/删除这些行。然后,我留下了一个需要在新用户计算机上安装的列表,其中不包括映像安装的任何内容 我想做的是修改脚本,以便PowerShell将筛选出它找到的任何重复项的两个条目。我在网上找到了一些详细说明如何删除其中一

我使用以下PowerShell脚本来确定最终用户在其计算机上有哪些应用程序(除了映像安装的默认应用程序之外)

当前,该脚本收集旧计算机上的应用程序列表,并将默认应用程序列表粘贴到其下方(来自DefaultApps.csv)。然后我在Excel中打开它,添加条件格式以查找重复条目并隐藏/删除这些行。然后,我留下了一个需要在新用户计算机上安装的列表,其中不包括映像安装的任何内容

我想做的是修改脚本,以便PowerShell将筛选出它找到的任何重复项的两个条目。我在网上找到了一些详细说明如何删除其中一个条目的地方,但在这种情况下这对我没有帮助。我非常希望PowerShell从远程PC中提取应用程序列表,然后删除DefaultApps.csv中存在的任何条目

我不确定从哪里开始,因为除了这个脚本中的内容之外,我还没有做太多关于编辑CSV文件的工作。有人能为我指出正确的方向,告诉我如何做到这一点吗?如果您知道我应该看什么cmdlet/switch,或者您有一个指向解释此问题的页面的链接,那么这将是一个良好的开端

$PCListOld = Get-Content F:\PCList-Old.txt
ForEach ($PC in $PCListOld) {
    $AppList = Get-WmiObject -Computer $PC Win32_Product | Sort-Object Name | Select-Object Name
    $AppList | Export-CSV C:\Scripts\AppLists\$PC.csv -NoTypeInformation
    Import-CSV C:\Scripts\AppLists\DefaultApps.csv | Export-CSV C:\Scripts\AppLists\$PC.csv -Append
}
我不确定从哪里开始,因为我没有做过很多关于编辑CSV文件的工作

但你不是想编辑CSV文件,所以。。。不要将默认应用程序放在输出中,这样就不必过滤掉它们。如果应用程序在默认应用程序中,则不要将其放入输出

$DefaultApps = Import-CSV C:\Scripts\AppLists\DefaultApps.csv

$PCListOld = Get-Content F:\PCList-Old.txt
ForEach ($PC in $PCListOld)
{
    $AppList = Get-WmiObject -Computer $PC Win32_Product | Sort-Object Name | Select-Object Name
    $AppList | Where-Object {$_.Name -notin $DefaultApps.Name} | Export-CSV C:\Scripts\AppLists\$PC.csv -NoTypeInformation
}
未经测试,但大致如此

PS.NB


此时还可以包括如何从注册表中搜索:到目前为止,这似乎效果不错。唯一的问题是,“英特尔?可信连接服务客户端”显示在结果中,尽管它位于DefaultApps.csv中。条目中的“?”是否会以某种方式将其丢弃?我没有收到任何错误,但每次csv导出后$LASTEXITCODE都是1,尽管我猜测它应该是0,因为似乎没有出现任何错误?@Andrew我不确定LASTEXITCODE 1来自何处,即使where筛选器失败,也不应该导致该错误。过滤器应该用于问号,考虑<代码> b′-in @(‘a’,‘b’,’,’c’)< /代码> Works.我怀疑它实际上不是问号,而是注册或版权或商标符号-(R)-如
Intel®
,默认的应用程序电子表格编码不正确(是否以ASCII编码保存?)。