更换Powershell中的侧指示灯
我遇到了一个死胡同,我希望你在这个问题上的专业知识:) 我有两个文件更换Powershell中的侧指示灯,powershell,Powershell,我遇到了一个死胡同,我希望你在这个问题上的专业知识:) 我有两个文件 打印机名称及其驱动程序-具有NoteProperty的name和DriverName 打印机驱动程序-具有Name(驱动程序名称)的NoteProperty和MajorVersion 它的全部意义在于知道哪台打印机有哪种类型的驱动程序 例如: 打印机驱动器名称主版本 我知道,Get Driver的输出只获取驱动程序名和打印机名。而获取驱动程序inter获取驱动程序和主版本 我想比较这两个命令,然后将输出合并到一个文件中,Sid
NoteProperty
的name
和DriverName
Name
(驱动程序名称)的NoteProperty
和MajorVersion
Get Driver
的输出只获取驱动程序名和打印机名。而获取驱动程序inter
获取驱动程序和主版本
我想比较这两个命令,然后将输出合并到一个文件中,SideIndicator
替换为MajorVersion
到目前为止,我已经做到了:
#This is the Printer Drives File - Has Name(DriverName) and MajorVersion(type) fields
$Drivers = Import-Csv .\PrinterDrivers.csv
#This is the Printer File - Has Printer Name and Driver Name
$PrinterNames = Import-Csv .\Printers.csv
#This Compares between the 2 objects
$Comparison = Compare-Object -ReferenceObject $PrinterNames -DifferenceObject $Drivers -PassThru -IncludeEqual
{ Foreach ($Device in $Comparison) {
if ($_.SideIndicator -eq "==" ) {
$_.SideIndicator = $Drivers.MajorVersion
}
if ($_.SideIndicator -eq "<=") {
$_.SideIndicator = $Drivers.MajorVersion
}
}
}
是否可以将删除侧指示灯
改为显示主版本
或者…我必须创建只有一列的原始
printer.csv
,对PrinterDrivers.csv
运行它,然后重新运行与原始printer.csv
的比较,原始printer.csv
有两列?看起来您实际上对进行比较不感兴趣
您当前的代码(即使有比较)并没有多大意义,因为您要分配所有驱动程序版本,而不是一个版本,以防它工作
我假设你的打印机名是你真正感兴趣的。因此,您可以循环查看每个驱动程序,并在驱动程序数据文件中查找信息
# This is the Printer Drives File - Has Name(DriverName) and MajorVersion(type) fields
$drivers = Import-Csv .\PrinterDrivers.csv
# This is the Printer File - Has Printer Name and Driver Name
$printerNames = Import-Csv .\Printers.csv
foreach($printer in $printerNames){
$driverVersion = $drivers | Where driverName -eq $printer.driverName
$printer | Select-Object -Property @{Name = "Printer Name"; Expression = {$printer.Name}}, @{Name = "Driver Version"; Expression={$driverVersion}}
}
看起来你对比较并不感兴趣 您当前的代码(即使有比较)并没有多大意义,因为您要分配所有驱动程序版本,而不是一个版本,以防它工作 我假设你的打印机名是你真正感兴趣的。因此,您可以循环查看每个驱动程序,并在驱动程序数据文件中查找信息
# This is the Printer Drives File - Has Name(DriverName) and MajorVersion(type) fields
$drivers = Import-Csv .\PrinterDrivers.csv
# This is the Printer File - Has Printer Name and Driver Name
$printerNames = Import-Csv .\Printers.csv
foreach($printer in $printerNames){
$driverVersion = $drivers | Where driverName -eq $printer.driverName
$printer | Select-Object -Property @{Name = "Printer Name"; Expression = {$printer.Name}}, @{Name = "Driver Version"; Expression={$driverVersion}}
}
Compare对象
surly用于比较相似的事物以发现差异,您似乎试图使用它进行查找。散列不是更好的选择:
$Drivers = @{}
Import-Csv .\PrinterDrivers.csv | % {$Drivers[$_.DriverName] = $_.MajorVersion}
$Printers = Import-Csv .\Printers.csv | % {
New-Object psobject -property @{
PrinterName = $_.Name
DriverName = $_.DriverName
MajorVersion = $Drivers[$_.DriverName]
}
}
Compare对象
surly用于比较相似的事物以发现差异,您似乎试图使用它进行查找。散列不是更好的选择:
$Drivers = @{}
Import-Csv .\PrinterDrivers.csv | % {$Drivers[$_.DriverName] = $_.MajorVersion}
$Printers = Import-Csv .\Printers.csv | % {
New-Object psobject -property @{
PrinterName = $_.Name
DriverName = $_.DriverName
MajorVersion = $Drivers[$_.DriverName]
}
}
如果您在三分之二的情况下更换侧指示器,比较的重点是什么?你只对“=>”感兴趣吗?我在比较中有一个模棱两可的地方。你能显示文件内容和预期输出吗?如果你在三分之二的情况下替换了SideIndicator,那么比较的重点是什么?你只对“=>”感兴趣吗?我在比较中有一个模棱两可的地方。你能显示文件内容和预期输出吗?很感谢,但不是发感谢信。很感谢,但不是发感谢信。