Microsoft Cognitive Services are some machine learning Artificial intelligent REST API's to give Human-like cognition abilities to your applications.
# install module
Install-Module PSCognitiveService -Force -Scope CurrentUser -Verbose
# import module
Import-Module PSCognitiveService -Force -Verbose
# get module
Get-Command -Module PSCognitiveService
# login and obtain subscription keys, local config
New-LocalConfiguration -FromAzure -AddKeysToProfile | Out-Null
# face features & emotion recognitionc
Get-Face -Path 'C:\tmp\Bill.jpg' |Format-List *
# image analysis
Get-ImageAnalysis -Path 'C:\tmp\Bill.jpg'
# image description
Get-ImageDescription -Path 'C:\tmp\Bill.jpg' | ForEach-Object Description | Format-List
# tag image and convert to hashtags
Get-ImageTag -URL https://goo.gl/Q73Qtw |
ForEach-Object{$_.tags.name} | ForEach-Object {'#'+$_ -join ' '}
# optical character recognition
Get-ImageText -URL https://goo.gl/XyP6LJ |
ForEach-Object {$_.regions.lines.words.text -join ' '}
# convert to thumbnail
ConvertTo-Thumbnail -URL https://goo.gl/XyP6LJ -SmartCropping
# bing search
Search-Web 'powershell 6.1' -c 3 |
ForEach-Object {$_.webpages.value} | Format-List name, url, snippet
Search-Entity -Text 'brad pitt' |
ForEach-Object {$_.entities.value} | Format-List name, description, image, webSearchUrl
# text analytics
Get-Sentiment -Text "Hey good morning!","Such a wonderful day","I feel sad about you" | ForEach-Object documents
Get-KeyPhrase -Text "Hey good morning!","Such a wonderful day","I feel sad about these poor people" | ForEach-Object documents
Trace-Language -Text "Hey good morning!", "Bonjour tout le monde", "La carretera estaba atascada" | ForEach-Object {$_.documents.detectedlanguages}
# moderate content - text, image (path/url)
Test-AdultRacyContent -Text "Hello World" | ForEach-Object Classification # clean
Test-AdultRacyContent -Text "go eff yourself" | ForEach-Object Classification # not good/review required
Test-AdultRacyContent -Path 'C:\Tmp\test.png'
Test-AdultRacyContent -URL https://goo.gl/uY2PS6
You need to do one-time registration for each Microsoft Cognitive Services API from HERE, before start using the module, because it won’t work without an API Key.
PowerShell v5 and Later
You can install the PSCognitiveService
module directly from the PowerShell Gallery
- [Recommended] Install to your personal PowerShell Modules folder
Install-Module PSCognitiveService -scope CurrentUser
- [Requires Elevation] Install for Everyone (computer PowerShell Modules folder)
Install-Module PSCognitiveService
To install to your personal modules folder run:
iex (new-object System.Net.WebClient).DownloadString('https://raw.githubusercontent.com/PrateekKumarSingh/PSCognitiveService/master/Install.ps1')
Microsoft Cognitive services are offered and subscribed through the Azure Portal to achieve that -
- Create cognitive service accounts in azure portal.
- Obtain subscription keys
- Set $Env variables locally, which would consumed by the module cmdlets to make REST API call's.
Personally, going to azure portal and obtaining subscription keys is a turn down for me.
But, New-CognitiveServiceAccount
cmdlet that is included in this module to create Azure cognitive service accounts/subscription from your console.
Example, if you want to use the Search-Web
cmdlet that utlizes Bing Search
capabilities, you need to subscribe to Cognitive Service account of type: Bing.Search.v7
, just run the below cmdlet.
New-CognitiveServiceAccount -AccountType Bing.Search.v7
# alternatively, specify ResourceGroup, Location and SKU
New-CognitiveServiceAccount -AccountType ComputerVision -ResourceGroupName ResourceGroup1 -Location centralindia -SKUName S1
Alright, you are now subscribed, but how to obtain the subscription key(s) and set-up $ENV
variable(s) in the session to run these cmdlets.
It is as simple as a below cmdlet and Kaboom! you are subscribed and local configuration is complete!
New-LocalConfiguration -FromAzure -AddKeysToProfile -Verbose
NOTE - Please add the subscription keys to your $Profile
using -AddKeysToProfile
switch for future use and to avoid above configuration step.