Skip to content

Instantly share code, notes, and snippets.

@infamousjoeg
Created December 28, 2019 00:15
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save infamousjoeg/ff4694c428a97787ba97663cd36feef7 to your computer and use it in GitHub Desktop.
Save infamousjoeg/ff4694c428a97787ba97663cd36feef7 to your computer and use it in GitHub Desktop.
Prismjs Component - PowerShell: CyberArk Edition (featuring psPAS functions)
(function (Prism) {
var powershell = Prism.languages.powershell = {
'comment': [
{
pattern: /(^|[^`])<#[\s\S]*?#>/,
lookbehind: true
},
{
pattern: /(^|[^`])#.*/,
lookbehind: true
}
],
'string': [
{
pattern: /"(?:`[\s\S]|[^`"])*"/,
greedy: true,
inside: {
'function': {
// Allow for one level of nesting
pattern: /(^|[^`])\$\((?:\$\(.*?\)|(?!\$\()[^\r\n)])*\)/,
lookbehind: true,
// Populated at end of file
inside: {}
}
}
},
{
pattern: /'(?:[^']|'')*'/,
greedy: true
}
],
// Matches name spaces as well as casts, attribute decorators. Force starting with letter to avoid matching array indices
// Supports two levels of nested brackets (e.g. `[OutputType([System.Collections.Generic.List[int]])]`)
'namespace': /\[[a-z](?:\[(?:\[[^\]]*]|[^\[\]])*]|[^\[\]])*]/i,
'boolean': /\$(?:true|false)\b/i,
'variable': /\$\w+\b/i,
// Cmdlets and aliases. Aliases should come last, otherwise "write" gets preferred over "write-host" for example
// Get-Command | ?{ $_.ModuleName -match "Microsoft.PowerShell.(Util|Core|Management)" }
// Get-Alias | ?{ $_.ReferencedCommand.Module.Name -match "Microsoft.PowerShell.(Util|Core|Management)" }
'function': [
/\b(?:Add-(?:Computer|Content|History|Member|PSSnapin|Type)|Checkpoint-Computer|Clear-(?:Content|EventLog|History|Item|ItemProperty|Variable)|Compare-Object|Complete-Transaction|Connect-PSSession|ConvertFrom-(?:Csv|Json|StringData)|Convert-Path|ConvertTo-(?:Csv|Html|Json|Xml)|Copy-(?:Item|ItemProperty)|Debug-Process|Disable-(?:ComputerRestore|PSBreakpoint|PSRemoting|PSSessionConfiguration)|Disconnect-PSSession|Enable-(?:ComputerRestore|PSBreakpoint|PSRemoting|PSSessionConfiguration)|Enter-PSSession|Exit-PSSession|Export-(?:Alias|Clixml|Console|Csv|FormatData|ModuleMember|PSSession)|ForEach-Object|Format-(?:Custom|List|Table|Wide)|Get-(?:Alias|ChildItem|Command|ComputerRestorePoint|Content|ControlPanelItem|Culture|Date|Event|EventLog|EventSubscriber|FormatData|Help|History|Host|HotFix|Item|ItemProperty|Job|Location|Member|Module|Process|PSBreakpoint|PSCallStack|PSDrive|PSProvider|PSSession|PSSessionConfiguration|PSSnapin|Random|Service|TraceSource|Transaction|TypeData|UICulture|Unique|Variable|WmiObject)|Group-Object|Import-(?:Alias|Clixml|Csv|LocalizedData|Module|PSSession)|Invoke-(?:Command|Expression|History|Item|RestMethod|WebRequest|WmiMethod)|Join-Path|Limit-EventLog|Measure-(?:Command|Object)|Move-(?:Item|ItemProperty)|New-(?:Alias|Event|EventLog|Item|ItemProperty|Module|ModuleManifest|Object|PSDrive|PSSession|PSSessionConfigurationFile|PSSessionOption|PSTransportOption|Service|TimeSpan|Variable|WebServiceProxy)|Out-(?:Default|File|GridView|Host|Null|Printer|String)|Pop-Location|Push-Location|Read-Host|Receive-(?:Job|PSSession)|Register-(?:EngineEvent|ObjectEvent|PSSessionConfiguration|WmiEvent)|Remove-(?:Computer|Event|EventLog|Item|ItemProperty|Job|Module|PSBreakpoint|PSDrive|PSSession|PSSnapin|TypeData|Variable|WmiObject)|Rename-(?:Computer|Item|ItemProperty)|Reset-ComputerMachinePassword|Resolve-Path|Restart-(?:Computer|Service)|Restore-Computer|Resume-(?:Job|Service)|Save-Help|Select-(?:Object|String|Xml)|Send-MailMessage|Set-(?:Alias|Content|Date|Item|ItemProperty|Location|PSBreakpoint|PSDebug|PSSessionConfiguration|Service|StrictMode|TraceSource|Variable|WmiInstance)|Show-(?:Command|ControlPanelItem|EventLog)|Sort-Object|Split-Path|Start-(?:Job|Process|Service|Sleep|Transaction)|Stop-(?:Computer|Job|Process|Service)|Suspend-(?:Job|Service)|Tee-Object|Test-(?:ComputerSecureChannel|Connection|ModuleManifest|Path|PSSessionConfigurationFile)|Trace-Command|Unblock-File|Undo-Transaction|Unregister-(?:Event|PSSessionConfiguration)|Update-(?:FormatData|Help|List|TypeData)|Use-Transaction|Wait-(?:Event|Job|Process)|Where-Object|Write-(?:Debug|Error|EventLog|Host|Output|Progress|Verbose|Warning))\b/i,
/\b(?:ac|cat|chdir|clc|cli|clp|clv|compare|copy|cp|cpi|cpp|cvpa|dbp|del|diff|dir|ebp|echo|epal|epcsv|epsn|erase|fc|fl|ft|fw|gal|gbp|gc|gci|gcs|gdr|gi|gl|gm|gp|gps|group|gsv|gu|gv|gwmi|iex|ii|ipal|ipcsv|ipsn|irm|iwmi|iwr|kill|lp|ls|measure|mi|mount|move|mp|mv|nal|ndr|ni|nv|ogv|popd|ps|pushd|pwd|rbp|rd|rdr|ren|ri|rm|rmdir|rni|rnp|rp|rv|rvpa|rwmi|sal|saps|sasv|sbp|sc|select|set|shcm|si|sl|sleep|sls|sort|sp|spps|spsv|start|sv|swmi|tee|trcm|write)\b/i,
/\b(?:Add-(?:PASPublicSSHKey|PASAccountGroup|PASAccount|PASDiscoveredAccount|PASPendingAccount|PASApplication|PASApplicationAuthenticationMethod|Add-PASPTARule|PASDirectory|PASPolicyACL|PASSafe|PASSafeMember|PASGroupMember)|Close-PASSession|Connect-PASPSMSession|Deny-PASRequest|Disable-PASCPMAutoManagement|Enable-PASCPMAutoManagement|Export-(?:PASPSMRecording|PASPlatform)|Find-PASSafe|Get-(?:PASSession|PASPublicSSHKey|PASAccountACL|PASAccountGroup|PASAccountGroupMember|PASAccount|PASAccountActivity|PASAccountPassword|PASApplication|PASApplicationAuthenticationMethod|PASPSMConnectorParameter|PASPTAEvent|PASPTARule|PASPTARemediation|PASDirectory|PASDirectoryMapping|PASPSMSession|PASPSMSessionActivity|PASPSMSessionProperty|PASPSMRecording|PASPSMRecordingActivity|PASPSMRecordingProperty|PASOnboardingRule|PASPlatform|PASPlatformSafe|PASPolicyACL|PASRequest|PASRequestDetail|PASSafe|PASSafeMember|PASServer|PASServerWebService|PASSafeShareLogo|PASComponentSummary|PASComponentDetail|PASLoggedOnUser|PASUser|PASUserLoginInfo|PASGroup)|Import-(?:PASConnectionComponent|PASPlatform)|Invoke-PASCPMOperation|New-(?:PASSession|PASAccountGroup|PASGroup|PASDirectoryMapping|PASOnboardingRule|PASRequest|PASUser)|Remove-(?:PASPublicSSHKey|PASAccountACL|PASAccountGroupMember|PASAccount|PASApplication|PASApplicationAuthenticationMethod|PASDirectory|PASDirectoryMapping|PASOnboardingRule|PASPolicyACL|PASRequest|PASSafe|PASSafeMember|PASUser|PASGroupMember)|Request-PASAdHocAccess|Resume-PASPSMSession|Set-(?:PASAccount|PASPTARule|PASPTARemediation|PASDirectoryMapping|PASDirectoryMappingOrder|PASOnboardingRule|PASSafe|PASSafeMember|PASUser|PASUserPassword)|Stop-PASPSMSession|Suspend-PASPSMSession|Unblock-PASUser|Unlock-PASAccount|Use-PASSession)\b/i
],
// per http://technet.microsoft.com/en-us/library/hh847744.aspx
'keyword': /\b(?:Begin|Break|Catch|Class|Continue|Data|Define|Do|DynamicParam|Else|ElseIf|End|Exit|Filter|Finally|For|ForEach|From|Function|If|InlineScript|Parallel|Param|Process|Return|Sequence|Switch|Throw|Trap|Try|Until|Using|Var|While|Workflow)\b/i,
'operator': {
pattern: /(\W?)(?:!|-(eq|ne|gt|ge|lt|le|sh[lr]|not|b?(?:and|x?or)|(?:Not)?(?:Like|Match|Contains|In)|Replace|Join|is(?:Not)?|as)\b|-[-=]?|\+[+=]?|[*\/%]=?)/i,
lookbehind: true
},
'punctuation': /[|{}[\];(),.]/
};
// Variable interpolation inside strings, and nested expressions
var stringInside = powershell.string[0].inside;
stringInside.boolean = powershell.boolean;
stringInside.variable = powershell.variable;
stringInside.function.inside = powershell;
}(Prism));
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment