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에 조금 새로운 것입니다. 나는 물건을 복잡하게 만드는 경향이 있습니다. 길고 짧은 HP 드라이버를 사용하면 OEM inf를 실행하여 인텔 드라이버를 설치할 수 없습니다. 이 문제를 해결하기위한 쉬운 방법은 폴더에서 해당 inf를 이동하는 것입니다. 그러면 인텔 드라이버를 원격으로 설치할 수 있습니다. 4,000 대의 네트워크 컴퓨터를 사용할 때이 문제를 해결하는 가장 쉬운 방법입니다. 롤. – Wafflez19