通過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