Я пытаюсь найти конкретное слово (Gate) в документе с помощью select-string powershell, и оно не возвращает никакого результата.

Get-ChildItem -path '.\somedocument.docx' | Select-String -pattern 'Gate'

Что я делаю неправильно? Я на начальном этапе обучения PowerShell.

1 ответ1

0

Так как вы новичок в мире PoSH. Очень важно, чтобы вы сначала получили руководство / обучение, чтобы не потеряться и не расстроиться. Смотрите это обсуждение.

Помощь в обучении PowerShell Изучение PowerShell https://www.reddit.com/r/PowerShell/comments/7oir35/help_with_teaching_others_powershell

CConard96 верен для Get-Children, вы читаете файлы, используя Get-Content или .Net файловые библиотеки.

PowerShell имеет полный доступ к любой библиотеке .Net, интерфейсам COM и DOM, предоставляемым Windows.

Итак, вам нужно знать и использовать правильный набор инструментов. Что бы вы ни искали, я бы не стал использовать Select-String для этого варианта использования.

Вы можете использовать PoSH для этого, но вы также должны использовать Word DOM. Например:

# Instantiate Word object
$wd = New-Object -com word.application

# Oepn a Word doc
$doc = $wd.Documents.Open('D:\Documents\Microsoft Graph API.docx')

# Read all the doc contents
$doc.Range().text


Microsoft Graph APIList windowsInformationProtectionAppLearningSummariesImportant: APIs under the /beta version in Microsoft Graph are in preview and are subject to change. Use of these APIs in production applicatio
ns is not supported.Note: Using the Microsoft Graph APIs to configure Intune controls and policies still requires that the Intune service is correctly licensed by the customer.https://developer.microsoft.com/en-us/g
raph/docs/api-reference/beta/api/intune_wip_windowsinformationprotectionapplearningsummary_list https://social.technet.microsoft.com/wiki/contents/articles/33525.an-introduction-to-microsoft-graph-api.aspx Using the
 Microsoft Graph API to access data in Microsoft Intunehttps://blogs.technet.microsoft.com/intunesupport/2016/10/04/using-the-microsoft-graph-api-to-access-data-in-microsoft-intune How to use Microsoft Graph and Off
ice 365 API in a Service or in a Windows App/UWP without a graphical interfacehttps://blogs.msdn.microsoft.com/laurelle/2016/02/12/how-to-use-microsoft-graph-and-office-365-api-in-a-service-or-in-a-windows-appuwp-wi
thout-a-graphical-interface 


# Get formatted text
$doc.Range().paragraphs | foreach {$_.range.text}

List windowsInformationProtectionAppLearningSummaries
Important: APIs under the /beta version in Microsoft Graph are in preview and are subject to change. Use of these APIs in production applications is not supported.

Note: Using the Microsoft Graph APIs to configure Intune controls and policies still requires that the Intune service is correctly licensed by the customer.
https://developer.microsoft.com/en-us/graph/docs/api-reference/beta/api/intune_wip_windowsinformationprotectionapplearningsummary_list 
https://social.technet.microsoft.com/wiki/contents/articles/33525.an-introduction-to-microsoft-graph-api.aspx 

Using the Microsoft Graph API to access data in Microsoft Intune
https://blogs.technet.microsoft.com/intunesupport/2016/10/04/using-the-microsoft-graph-api-to-access-data-in-microsoft-intune 

How to use Microsoft Graph and Office 365 API in a Service or in a Windows App/UWP without a graphical interface
https://blogs.msdn.microsoft.com/laurelle/2016/02/12/how-to-use-microsoft-graph-and-office-365-api-in-a-service-or-in-a-windows-appuwp-without-a-graphical-interface 


# Find a specific word(s) in the Doc file, for example Graph or under or licensed using the .Net Regualr Expression namespace
[regex]::Matches(($doc.Range().text),'Graph|under|licensed').value

Graph
under
Graph
Graph
licensed
Graph
Graph

$wd.quit()

Вам не понадобится все вышеперечисленное, поскольку у меня есть это для решения вашего варианта использования, так как он может быть упрощен. Тем не менее, вы видите, это может быть сделано.

Есть и другие примеры прямо на этом форуме.

Получение определенных данных из текстового документа https://www.reddit.com/r/PowerShell/comments/38dcm7/getting_specific_data_out_of_a_word_document

Вы даже можете преобразовать документ в другой тип файла, а затем прочитать его с помощью командлетов, но это просто дополнительная работа. Зачем это делать, если не нужно.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .