通过Select-String
返回的对象不是一个字符串,它是一个MatchInfo
:
C:\> $data | Get-Member
TypeName: Microsoft.PowerShell.Commands.MatchInfo
Name MemberType Definition
---- ---------- ----------
Equals Method bool Equals(System.Object obj)
GetHashCode Method int GetHashCode()
GetType Method type GetType()
RelativePath Method string RelativePath(string directory)
ToString Method string ToString(), string ToString(string directory)
Context Property Microsoft.PowerShell.Commands.MatchInfoContext Context {get;set;}
Filename Property string Filename {get;}
IgnoreCase Property bool IgnoreCase {get;set;}
Line Property string Line {get;set;}
LineNumber Property int LineNumber {get;set;}
Matches Property System.Text.RegularExpressions.Match[] Matches {get;set;}
Path Property string Path {get;set;}
Pattern Property string Pattern {get;set;}
你可以将它与Line
属性相匹配就行了所以你的代码改变了这一点。 :
if ($data.Line -eq "DriverVer=12/21/2015,10.18.10.4358")
不过,我不认为这是非常可靠的代码,因为INI文件可以围绕“=”空格这会更好:
if ($data.Line -match "DriverVer\s*=\s*12/21/2015,10.18.10.4358")
我认为你的代码有点过于复杂。你可以用这个替换整个东西:
$OEM = [bool](Select-String "DriverVer\s*=\s*12/21/2015,10.18.10.4358" C:\Windows\INF\OEM27.inf)
感谢您的信息,似乎工作。我仍然对PowerShell有一点新意,可以使用所有命令。我确实倾向于使东西变得复杂。长话短说惠普驱动程序通过运行OEM inf来防止您安装英特尔驱动程序。简单的解决方法就是将相应的inf移出文件夹,它可以让您远程安装英特尔驱动程序。当您拥有4,000台网络计算机时,最简单的方法就是解决此问题。大声笑。 – Wafflez19