├── .gitattributes ├── .github ├── FUNDING.yml ├── ISSUE_TEMPLATE.md ├── ISSUE_TEMPLATE │ ├── feature_request.md │ └── issue-report.md └── PULL_REQUEST_TEMPLATE.md ├── .gitignore ├── CHANGELOG.md ├── CODE_OF_CONDUCT.md ├── CONTRIBUTING.md ├── LICENSE.md ├── README.md ├── Tests ├── Add-PASAccount.Tests.ps1 ├── Add-PASAccountACL.Tests.ps1 ├── Add-PASAccountGroupMember.Tests.ps1 ├── Add-PASAllowedReferrer.Tests.ps1 ├── Add-PASApplication.Tests.ps1 ├── Add-PASApplicationAuthenticationMethod.Tests.ps1 ├── Add-PASAuthenticationMethod.Tests.ps1 ├── Add-PASDirectory.Tests.ps1 ├── Add-PASDiscoveredAccount.Tests.ps1 ├── Add-PASDiscoveredLocalAccount.Tests.ps1 ├── Add-PASGroupMember.Tests.ps1 ├── Add-PASOpenIDConnectProvider.Tests.ps1 ├── Add-PASPTAExcludedTarget.Tests.ps1 ├── Add-PASPTAGlobalCatalog.Tests.ps1 ├── Add-PASPTAIncludedTarget.Tests.ps1 ├── Add-PASPTAPrivilegedGroup.Tests.ps1 ├── Add-PASPTAPrivilegedUser.Tests.ps1 ├── Add-PASPTARule.Tests.ps1 ├── Add-PASPendingAccount.Tests.ps1 ├── Add-PASPersonalAdminAccount.Tests.ps1 ├── Add-PASPolicyACL.Tests.ps1 ├── Add-PASPublicSSHKey.Tests.ps1 ├── Add-PASSafe.Tests.ps1 ├── Add-PASSafeMember.Tests.ps1 ├── Approve-PASRequest.Tests.ps1 ├── Assert-VersionRequirement.Tests.ps1 ├── Clear-PASDiscoveredAccountList.Tests.ps1 ├── Clear-PASDiscoveredLocalAccount.Tests.ps1 ├── Clear-PASLinkedAccount.Tests.ps1 ├── Clear-PASPrivateSSHKey.Tests.ps1 ├── Close-PASSession.Tests.ps1 ├── Compare-MaximumVersion.Tests.ps1 ├── Compare-MinimumVersion.Tests.ps1 ├── Connect-PASPSMSession.Tests.ps1 ├── ConvertFrom-KeyValuePair.Tests.ps1 ├── ConvertTo-BulkFilterItem.Tests.ps1 ├── ConvertTo-ConnectionParam.Tests.ps1 ├── ConvertTo-FilterString.Tests.ps1 ├── ConvertTo-InsecureString.Tests.ps1 ├── ConvertTo-QueryString.Tests.ps1 ├── ConvertTo-SortedPermission.Tests.ps1 ├── ConvertTo-UnixTime.Tests.ps1 ├── Copy-PASPlatform.Tests.ps1 ├── Deny-PASRequest.Tests.ps1 ├── Disable-PASCPMAutoManagement.Tests.ps1 ├── Disable-PASPlatform.Tests.ps1 ├── Disable-PASUser.Tests.ps1 ├── Enable-PASCPMAutoManagement.Tests.ps1 ├── Enable-PASPlatform.Tests.ps1 ├── Enable-PASUser.Tests.ps1 ├── Export-PASPSMRecording.Tests.ps1 ├── Export-PASPlatform.Tests.ps1 ├── Find-PASSafe.Tests.ps1 ├── Find-SharedServicesURL.Tests.ps1 ├── Format-PASUserObject.Tests.ps1 ├── Format-PutRequestObject.Tests.ps1 ├── Get-ByteArray.Tests.ps1 ├── Get-EscapedString.Tests.ps1 ├── Get-NextLink.Tests.ps1 ├── Get-PASAccount.Tests.ps1 ├── Get-PASAccountACL.Tests.ps1 ├── Get-PASAccountActivity.Tests.ps1 ├── Get-PASAccountDetail.Tests.ps1 ├── Get-PASAccountGroup.Tests.ps1 ├── Get-PASAccountGroupMember.Tests.ps1 ├── Get-PASAccountImportJob.Tests.ps1 ├── Get-PASAccountPassword.Tests.ps1 ├── Get-PASAccountPasswordVersion.Tests.ps1 ├── Get-PASAccountSSHKey.Tests.ps1 ├── Get-PASAllowedReferrer.Tests.ps1 ├── Get-PASApplication.Tests.ps1 ├── Get-PASApplicationAuthenticationMethod.Tests.ps1 ├── Get-PASAuthenticationMethod.Tests.ps1 ├── Get-PASBYOKConfig.Tests.ps1 ├── Get-PASComponentDetail.Tests.ps1 ├── Get-PASComponentSummary.Tests.ps1 ├── Get-PASConnectionComponent.Tests.ps1 ├── Get-PASDirectory.Tests.ps1 ├── Get-PASDirectoryMapping.Tests.ps1 ├── Get-PASDiscoveredAccount.Tests.ps1 ├── Get-PASDiscoveredLocalAccount.Tests.ps1 ├── Get-PASDiscoveredLocalAccountActivity.Tests.ps1 ├── Get-PASGroup.Tests.ps1 ├── Get-PASIPAllowList.Tests.ps1 ├── Get-PASLinkedAccount.Tests.ps1 ├── Get-PASLinkedGroup.Tests.ps1 ├── Get-PASLoggedOnUser.Tests.ps1 ├── Get-PASOnboardingRule.Tests.ps1 ├── Get-PASOpenIDConnectProvider.Tests.ps1 ├── Get-PASPSMRecording.Tests.ps1 ├── Get-PASPSMRecordingActivity.Tests.ps1 ├── Get-PASPSMRecordingProperty.Tests.ps1 ├── Get-PASPSMServer.Tests.ps1 ├── Get-PASPSMSession.Tests.ps1 ├── Get-PASPSMSessionActivity.Tests.ps1 ├── Get-PASPSMSessionProperty.Tests.ps1 ├── Get-PASPTAEvent.Tests.ps1 ├── Get-PASPTAExcludedTarget.Tests.ps1 ├── Get-PASPTAGlobalCatalog.Tests.ps1 ├── Get-PASPTAIncludedTarget.Tests.ps1 ├── Get-PASPTAPrivilegedGroup.Tests.ps1 ├── Get-PASPTAPrivilegedUser.Tests.ps1 ├── Get-PASPTARemediation.Tests.ps1 ├── Get-PASPTARiskEvent.Tests.ps1 ├── Get-PASPTARiskSummary.Tests.ps1 ├── Get-PASPTARule.Tests.ps1 ├── Get-PASParameter.Tests.ps1 ├── Get-PASPlatform.Tests.ps1 ├── Get-PASPlatformPSMConfig.Tests.ps1 ├── Get-PASPlatformSafe.Tests.ps1 ├── Get-PASPlatformSummary.Tests.ps1 ├── Get-PASPolicyACL.Tests.ps1 ├── Get-PASPropertyObject.Tests.ps1 ├── Get-PASPublicSSHKey.Tests.ps1 ├── Get-PASRequest.Tests.ps1 ├── Get-PASRequestDetail.Tests.ps1 ├── Get-PASResponse.Tests.ps1 ├── Get-PASSAMLResponse.Tests.ps1 ├── Get-PASSafe.Tests.ps1 ├── Get-PASSafeMember.Tests.ps1 ├── Get-PASSafeShareLogo.Tests.ps1 ├── Get-PASServer.Tests.ps1 ├── Get-PASServerWebService.Tests.ps1 ├── Get-PASSession.Tests.ps1 ├── Get-PASUser.Tests.ps1 ├── Get-PASUserLoginInfo.Tests.ps1 ├── Get-PASUserTypeInfo.Tests.ps1 ├── Get-ParentFunction.Tests.ps1 ├── Get-SessionClone.Tests.ps1 ├── Hide-SecretValue.Tests.ps1 ├── Import-PASConnectionComponent.Tests.ps1 ├── Import-PASPlatform.Tests.ps1 ├── Invoke-PASCPMOperation.Tests.ps1 ├── Invoke-PASRestMethod.Tests.ps1 ├── New-PASAccountGroup.Tests.ps1 ├── New-PASAccountObject.Tests.ps1 ├── New-PASAccountPassword.Tests.ps1 ├── New-PASDirectoryMapping.Tests.ps1 ├── New-PASGroup.Tests.ps1 ├── New-PASOnboardingRule.Tests.ps1 ├── New-PASPSMSession.Tests.ps1 ├── New-PASPrivateSSHKey.Tests.ps1 ├── New-PASRequest.Tests.ps1 ├── New-PASRequestObject.Tests.ps1 ├── New-PASSession.Tests.ps1 ├── New-PASUser.Tests.ps1 ├── Out-PASFile.Tests.ps1 ├── Publish-PASDiscoveredAccount.Tests.ps1 ├── Publish-PASDiscoveredLocalAccount.Tests.ps1 ├── Remove-PASAccount.Tests.ps1 ├── Remove-PASAccountACL.Tests.ps1 ├── Remove-PASAccountGroupMember.Tests.ps1 ├── Remove-PASApplication.Tests.ps1 ├── Remove-PASApplicationAuthenticationMethod.Tests.ps1 ├── Remove-PASAuthenticationMethod.Tests.ps1 ├── Remove-PASDirectory.Tests.ps1 ├── Remove-PASDirectoryMapping.Tests.ps1 ├── Remove-PASDiscoveredLocalAccount.Tests.ps1 ├── Remove-PASGroup.Tests.ps1 ├── Remove-PASGroupMember.Tests.ps1 ├── Remove-PASOnboardingRule.Tests.ps1 ├── Remove-PASOpenIDConnectProvider.Tests.ps1 ├── Remove-PASPTAExcludedTarget.Tests.ps1 ├── Remove-PASPTAIncludedTarget.Tests.ps1 ├── Remove-PASPTAPrivilegedGroup.Tests.ps1 ├── Remove-PASPTAPrivilegedUser.Tests.ps1 ├── Remove-PASPlatform.Tests.ps1 ├── Remove-PASPolicyACL.Tests.ps1 ├── Remove-PASPrivateSSHKey.Tests.ps1 ├── Remove-PASPublicSSHKey.Tests.ps1 ├── Remove-PASRequest.Tests.ps1 ├── Remove-PASSafe.Tests.ps1 ├── Remove-PASSafeMember.Tests.ps1 ├── Remove-PASUser.Tests.ps1 ├── Request-PASJustInTimeAccess.Tests.ps1 ├── Resume-PASPSMSession.Tests.ps1 ├── Revoke-PASJustInTimeAccess.Tests.ps1 ├── Send-RADIUSResponse.Tests.ps1 ├── Set-PASAccount.Tests.ps1 ├── Set-PASAuthenticationMethod.Tests.ps1 ├── Set-PASDirectoryMapping.Tests.ps1 ├── Set-PASDirectoryMappingOrder.Tests.ps1 ├── Set-PASGroup.Tests.ps1 ├── Set-PASIPAllowList.Tests.ps1 ├── Set-PASLinkedAccount.Tests.ps1 ├── Set-PASOnboardingRule.Tests.ps1 ├── Set-PASOpenIDConnectProvider.Tests.ps1 ├── Set-PASPTAEvent.Tests.ps1 ├── Set-PASPTARemediation.Tests.ps1 ├── Set-PASPTARiskEvent.Tests.ps1 ├── Set-PASPTARule.Tests.ps1 ├── Set-PASPlatformPSMConfig.Tests.ps1 ├── Set-PASSafe.Tests.ps1 ├── Set-PASSafeMember.Tests.ps1 ├── Set-PASUser.Tests.ps1 ├── Set-PASUserPassword.Tests.ps1 ├── Skip-CertificateCheck.Tests.ps1 ├── Start-PASAccountImportJob.Tests.ps1 ├── Stop-PASPSMSession.Tests.ps1 ├── Suspend-PASPSMSession.Tests.ps1 ├── Test-PASPSMRecording.Tests.ps1 ├── Unblock-PASUser.Tests.ps1 ├── Unlock-PASAccount.Tests.ps1 ├── Use-PASSession.Tests.ps1 └── psPAS.Tests.ps1 ├── appveyor.yml ├── build ├── build.ps1 ├── deploy-github.ps1 ├── deploy-psgallery.ps1 ├── install.ps1 └── test.ps1 ├── docs ├── .gitignore ├── .travis.yml ├── CNAME ├── Gemfile ├── LICENSE ├── Rakefile ├── _config.yml ├── _data │ ├── navigation.yml │ └── ui-text.yml ├── _includes │ ├── analytics-providers │ │ ├── custom.html │ │ ├── google-gtag.html │ │ ├── google-universal.html │ │ └── google.html │ ├── analytics.html │ ├── archive-single.html │ ├── author-profile-custom-links.html │ ├── author-profile.html │ ├── breadcrumbs.html │ ├── browser-upgrade.html │ ├── category-list.html │ ├── comment.html │ ├── comments-providers │ │ ├── custom.html │ │ ├── discourse.html │ │ ├── disqus.html │ │ ├── facebook.html │ │ ├── scripts.html │ │ ├── staticman.html │ │ ├── staticman_v2.html │ │ └── utterances.html │ ├── comments.html │ ├── documents-collection.html │ ├── feature_row │ ├── figure │ ├── footer.html │ ├── footer │ │ └── custom.html │ ├── gallery │ ├── group-by-array │ ├── head.html │ ├── head │ │ └── custom.html │ ├── masthead.html │ ├── nav_list │ ├── page__hero.html │ ├── page__hero_video.html │ ├── page__taxonomy.html │ ├── paginator.html │ ├── post_pagination.html │ ├── posts-category.html │ ├── posts-tag.html │ ├── read-time.html │ ├── scripts.html │ ├── search │ │ ├── algolia-search-scripts.html │ │ ├── google-search-scripts.html │ │ ├── lunr-search-scripts.html │ │ └── search_form.html │ ├── seo.html │ ├── sidebar.html │ ├── skip-links.html │ ├── social-share.html │ ├── tag-list.html │ ├── toc │ ├── toc.html │ └── video ├── _layouts │ ├── archive-taxonomy.html │ ├── archive.html │ ├── categories.html │ ├── category.html │ ├── collection.html │ ├── compress.html │ ├── default.html │ ├── home.html │ ├── posts.html │ ├── search.html │ ├── single-mod.html │ ├── single.html │ ├── splash.html │ ├── tag.html │ └── tags.html ├── _sass │ ├── minimal-mistakes.scss │ └── minimal-mistakes │ │ ├── _animations.scss │ │ ├── _archive.scss │ │ ├── _base.scss │ │ ├── _buttons.scss │ │ ├── _footer.scss │ │ ├── _forms.scss │ │ ├── _masthead.scss │ │ ├── _mixins.scss │ │ ├── _navigation.scss │ │ ├── _notices.scss │ │ ├── _page.scss │ │ ├── _print.scss │ │ ├── _reset.scss │ │ ├── _search.scss │ │ ├── _sidebar.scss │ │ ├── _syntax.scss │ │ ├── _tables.scss │ │ ├── _utilities.scss │ │ ├── _variables.scss │ │ └── skins │ │ ├── _air.scss │ │ ├── _aqua.scss │ │ ├── _contrast.scss │ │ ├── _dark.scss │ │ ├── _default.scss │ │ ├── _dirt.scss │ │ ├── _mint.scss │ │ ├── _neon.scss │ │ ├── _plum.scss │ │ └── _sunrise.scss ├── assets │ ├── css │ │ └── main.scss │ ├── images │ │ ├── Email.png │ │ ├── Email_symbol.png │ │ ├── New-PASSession │ │ │ ├── CodeFlow.png │ │ │ ├── IIS.png │ │ │ ├── RADIUS.png │ │ │ └── SAML.png │ │ ├── PSPETE_symbol.png │ │ ├── bio-photo.jpg │ │ ├── company_logo_symbol.png │ │ ├── favicon.png │ │ ├── favicon_symbol.png │ │ ├── github.png │ │ ├── header_photo.png │ │ ├── help.png │ │ ├── import.png │ │ ├── install.png │ │ ├── linkedin.png │ │ ├── psPAS-Logo-1.png │ │ ├── shop_banner_symbol.png │ │ ├── symbol.png │ │ └── team_logo.png │ └── js │ │ ├── _main.js │ │ ├── lunr │ │ ├── lunr-en.js │ │ ├── lunr-gr.js │ │ ├── lunr-store.js │ │ ├── lunr.js │ │ └── lunr.min.js │ │ ├── main.min.js │ │ └── plugins │ │ ├── gumshoe.js │ │ ├── jquery.ba-throttle-debounce.js │ │ ├── jquery.fitvids.js │ │ ├── jquery.greedy-navigation.js │ │ ├── jquery.magnific-popup.js │ │ └── smooth-scroll.js ├── banner.js ├── collections │ ├── _commands │ │ ├── Add-PASAccount.md │ │ ├── Add-PASAccountACL.md │ │ ├── Add-PASAccountGroupMember.md │ │ ├── Add-PASAllowedReferrer.md │ │ ├── Add-PASApplication.md │ │ ├── Add-PASApplicationAuthenticationMethod.md │ │ ├── Add-PASAuthenticationMethod.md │ │ ├── Add-PASDirectory.md │ │ ├── Add-PASDiscoveredAccount.md │ │ ├── Add-PASDiscoveredLocalAccount.md │ │ ├── Add-PASGroupMember.md │ │ ├── Add-PASOpenIDConnectProvider.md │ │ ├── Add-PASPTAExcludedTarget.md │ │ ├── Add-PASPTAGlobalCatalog.md │ │ ├── Add-PASPTAIncludedTarget.md │ │ ├── Add-PASPTAPrivilegedGroup.md │ │ ├── Add-PASPTAPrivilegedUser.md │ │ ├── Add-PASPTARule.md │ │ ├── Add-PASPendingAccount.md │ │ ├── Add-PASPersonalAdminAccount.md │ │ ├── Add-PASPolicyACL.md │ │ ├── Add-PASPublicSSHKey.md │ │ ├── Add-PASSafe.md │ │ ├── Add-PASSafeMember.md │ │ ├── Approve-PASRequest.md │ │ ├── Clear-PASDiscoveredAccountList.md │ │ ├── Clear-PASDiscoveredLocalAccount.md │ │ ├── Clear-PASLinkedAccount.md │ │ ├── Clear-PASPrivateSSHKey.md │ │ ├── Close-PASSession.md │ │ ├── Connect-PASPSMSession.md │ │ ├── Copy-PASPlatform.md │ │ ├── Deny-PASRequest.md │ │ ├── Disable-PASCPMAutoManagement.md │ │ ├── Disable-PASPlatform.md │ │ ├── Disable-PASUser.md │ │ ├── Enable-PASCPMAutoManagement.md │ │ ├── Enable-PASPlatform.md │ │ ├── Enable-PASUser.md │ │ ├── Export-PASPSMRecording.md │ │ ├── Export-PASPlatform.md │ │ ├── Find-PASSafe.md │ │ ├── Get-PASAccount.md │ │ ├── Get-PASAccountACL.md │ │ ├── Get-PASAccountActivity.md │ │ ├── Get-PASAccountDetail.md │ │ ├── Get-PASAccountGroup.md │ │ ├── Get-PASAccountGroupMember.md │ │ ├── Get-PASAccountImportJob.md │ │ ├── Get-PASAccountPassword.md │ │ ├── Get-PASAccountPasswordVersion.md │ │ ├── Get-PASAccountSSHKey.md │ │ ├── Get-PASAllowedReferrer.md │ │ ├── Get-PASApplication.md │ │ ├── Get-PASApplicationAuthenticationMethod.md │ │ ├── Get-PASAuthenticationMethod.md │ │ ├── Get-PASBYOKConfig.md │ │ ├── Get-PASComponentDetail.md │ │ ├── Get-PASComponentSummary.md │ │ ├── Get-PASConnectionComponent.md │ │ ├── Get-PASDirectory.md │ │ ├── Get-PASDirectoryMapping.md │ │ ├── Get-PASDiscoveredAccount.md │ │ ├── Get-PASDiscoveredLocalAccount.md │ │ ├── Get-PASDiscoveredLocalAccountActivity.md │ │ ├── Get-PASGroup.md │ │ ├── Get-PASIPAllowList.md │ │ ├── Get-PASLinkedAccount.md │ │ ├── Get-PASLinkedGroup.md │ │ ├── Get-PASLoggedOnUser.md │ │ ├── Get-PASOnboardingRule.md │ │ ├── Get-PASOpenIDConnectProvider.md │ │ ├── Get-PASPSMRecording.md │ │ ├── Get-PASPSMRecordingActivity.md │ │ ├── Get-PASPSMRecordingProperty.md │ │ ├── Get-PASPSMServer.md │ │ ├── Get-PASPSMSession.md │ │ ├── Get-PASPSMSessionActivity.md │ │ ├── Get-PASPSMSessionProperty.md │ │ ├── Get-PASPTAEvent.md │ │ ├── Get-PASPTAExcludedTarget.md │ │ ├── Get-PASPTAGlobalCatalog.md │ │ ├── Get-PASPTAIncludedTarget.md │ │ ├── Get-PASPTAPrivilegedGroup.md │ │ ├── Get-PASPTAPrivilegedUser.md │ │ ├── Get-PASPTARemediation.md │ │ ├── Get-PASPTARiskEvent.md │ │ ├── Get-PASPTARiskSummary.md │ │ ├── Get-PASPTARule.md │ │ ├── Get-PASPlatform.md │ │ ├── Get-PASPlatformPSMConfig.md │ │ ├── Get-PASPlatformSafe.md │ │ ├── Get-PASPlatformSummary.md │ │ ├── Get-PASPolicyACL.md │ │ ├── Get-PASPublicSSHKey.md │ │ ├── Get-PASRequest.md │ │ ├── Get-PASRequestDetail.md │ │ ├── Get-PASSafe.md │ │ ├── Get-PASSafeMember.md │ │ ├── Get-PASSafeShareLogo.md │ │ ├── Get-PASServer.md │ │ ├── Get-PASServerWebService.md │ │ ├── Get-PASSession.md │ │ ├── Get-PASUser.md │ │ ├── Get-PASUserLoginInfo.md │ │ ├── Get-PASUserTypeInfo.md │ │ ├── Import-PASConnectionComponent.md │ │ ├── Import-PASPlatform.md │ │ ├── Invoke-PASCPMOperation.md │ │ ├── New-PASAccountGroup.md │ │ ├── New-PASAccountObject.md │ │ ├── New-PASAccountPassword.md │ │ ├── New-PASDirectoryMapping.md │ │ ├── New-PASGroup.md │ │ ├── New-PASOnboardingRule.md │ │ ├── New-PASPSMSession.md │ │ ├── New-PASPrivateSSHKey.md │ │ ├── New-PASRequest.md │ │ ├── New-PASRequestObject.md │ │ ├── New-PASSession.md │ │ ├── New-PASUser.md │ │ ├── Publish-PASDiscoveredAccount.md │ │ ├── Publish-PASDiscoveredLocalAccount.md │ │ ├── Remove-PASAccount.md │ │ ├── Remove-PASAccountACL.md │ │ ├── Remove-PASAccountGroupMember.md │ │ ├── Remove-PASApplication.md │ │ ├── Remove-PASApplicationAuthenticationMethod.md │ │ ├── Remove-PASAuthenticationMethod.md │ │ ├── Remove-PASDirectory.md │ │ ├── Remove-PASDirectoryMapping.md │ │ ├── Remove-PASDiscoveredLocalAccount.md │ │ ├── Remove-PASGroup.md │ │ ├── Remove-PASGroupMember.md │ │ ├── Remove-PASOnboardingRule.md │ │ ├── Remove-PASOpenIDConnectProvider.md │ │ ├── Remove-PASPTAExcludedTarget.md │ │ ├── Remove-PASPTAIncludedTarget.md │ │ ├── Remove-PASPTAPrivilegedGroup.md │ │ ├── Remove-PASPTAPrivilegedUser.md │ │ ├── Remove-PASPlatform.md │ │ ├── Remove-PASPolicyACL.md │ │ ├── Remove-PASPrivateSSHKey.md │ │ ├── Remove-PASPublicSSHKey.md │ │ ├── Remove-PASRequest.md │ │ ├── Remove-PASSafe.md │ │ ├── Remove-PASSafeMember.md │ │ ├── Remove-PASUser.md │ │ ├── Request-PASJustInTimeAccess.md │ │ ├── Resume-PASPSMSession.md │ │ ├── Revoke-PASJustInTimeAccess.md │ │ ├── Set-PASAccount.md │ │ ├── Set-PASAuthenticationMethod.md │ │ ├── Set-PASDirectoryMapping.md │ │ ├── Set-PASDirectoryMappingOrder.md │ │ ├── Set-PASGroup.md │ │ ├── Set-PASIPAllowList.md │ │ ├── Set-PASLinkedAccount.md │ │ ├── Set-PASOnboardingRule.md │ │ ├── Set-PASOpenIDConnectProvider.md │ │ ├── Set-PASPTAEvent.md │ │ ├── Set-PASPTARemediation.md │ │ ├── Set-PASPTARiskEvent.md │ │ ├── Set-PASPTARule.md │ │ ├── Set-PASPlatformPSMConfig.md │ │ ├── Set-PASSafe.md │ │ ├── Set-PASSafeMember.md │ │ ├── Set-PASUser.md │ │ ├── Set-PASUserPassword.md │ │ ├── Start-PASAccountImportJob.md │ │ ├── Stop-PASPSMSession.md │ │ ├── Suspend-PASPSMSession.md │ │ ├── Test-PASPSMRecording.md │ │ ├── Unblock-PASUser.md │ │ ├── Unlock-PASAccount.md │ │ └── Use-PASSession.md │ ├── _docs │ │ ├── 00-install.md │ │ ├── 01-authentication.md │ │ ├── 10-compatibility.md │ │ ├── 18-troubleshooting.md │ │ ├── 20-search.md │ │ ├── 22-administration.md │ │ ├── 24-cpm-operations.md │ │ ├── 26-pipeline-operations.md │ │ ├── 30-bulk-operations.md │ │ ├── 32-safe-permissions.md │ │ ├── 34-psm-sessions.md │ │ ├── 36-update-accounts.md │ │ ├── 38-methods.md │ │ └── 40-api-sessions.md │ ├── _drafts │ │ ├── ####-##-##-pspas-article.md │ │ ├── ####-##-##-pspas-release-#-#.md │ │ └── 2024-01-27-pspas-release-6-1.md │ ├── _pages │ │ ├── about.md │ │ ├── articles.md │ │ ├── category-archive.md │ │ ├── commands.md │ │ └── tag-archive.md │ └── _posts │ │ ├── 2018-02-12-pspas-release-1-0.md │ │ ├── 2018-03-09-pspas-release-1-1.md │ │ ├── 2018-04-17-pspas-release-1-2.md │ │ ├── 2018-06-05-pspas-release-1-3.md │ │ ├── 2018-07-08-pspas-release-2-0.md │ │ ├── 2018-07-18-pspas-release-2-1.md │ │ ├── 2018-10-21-pspas-release-2-2.md │ │ ├── 2018-12-02-pspas-release-2-3.md │ │ ├── 2019-02-16-pspas-release-2-4.md │ │ ├── 2019-04-30-pspas-release-2-5.md │ │ ├── 2019-05-16-pspas-release-2-6.md │ │ ├── 2019-07-01-pspas-release-3-0.md │ │ ├── 2019-07-19-pspas-release-3-1.md │ │ ├── 2019-09-17-pspas-release-3-2.md │ │ ├── 2019-12-13-pspas-release-3-3.md │ │ ├── 2020-01-27-pspas-release-3-4.md │ │ ├── 2020-04-02-pspas-release-3-5.md │ │ ├── 2020-07-01-pspas-release-4-0.md │ │ ├── 2020-07-14-pspas-release-4-1.md │ │ ├── 2020-07-27-pspas-release-4-2.md │ │ ├── 2020-08-20-pspas-release-4-3.md │ │ ├── 2020-08-24-pspas-release-4-4.md │ │ ├── 2020-11-25-pspas-release-4-5.md │ │ ├── 2021-04-11-pspas-release-5-0.md │ │ ├── 2021-07-13-pspas-release-5-1.md │ │ ├── 2021-11-07-pspas-release-5-2.md │ │ ├── 2022-08-17-pspas-release-5-3.md │ │ ├── 2022-09-26-pspas-release-5-4.md │ │ ├── 2022-09-29-contributing-to-pspas.md │ │ ├── 2022-10-01-pspas-articles.md │ │ ├── 2022-10-10-new-passession-deep-dive.md │ │ ├── 2023-03-06-pspas-release-5-5.md │ │ ├── 2023-03-06-pspas-release-5-6.md │ │ ├── 2023-09-06-pspas-release-6-0.md │ │ ├── 2024-02-01-pspas-release-6-1.md │ │ ├── 2024-02-20-pspas-release-6-2.md │ │ ├── 2024-03-21-pspas-release-6-3.md │ │ └── 2024-05-01-pspas-release-6-4.md ├── favicon.ico ├── index.md ├── package-lock.json ├── package.json └── staticman.yml └── psPAS ├── Functions ├── AccountACL │ ├── Add-PASAccountACL.ps1 │ ├── Get-PASAccountACL.ps1 │ └── Remove-PASAccountACL.ps1 ├── AccountGroups │ ├── Add-PASAccountGroupMember.ps1 │ ├── Get-PASAccountGroup.ps1 │ ├── Get-PASAccountGroupMember.ps1 │ ├── New-PASAccountGroup.ps1 │ └── Remove-PASAccountGroupMember.ps1 ├── Accounts │ ├── Add-PASAccount.ps1 │ ├── Add-PASDiscoveredAccount.ps1 │ ├── Add-PASDiscoveredLocalAccount.ps1 │ ├── Add-PASPendingAccount.ps1 │ ├── Add-PASPersonalAdminAccount.ps1 │ ├── Clear-PASDiscoveredAccountList.ps1 │ ├── Clear-PASDiscoveredLocalAccount.ps1 │ ├── Clear-PASLinkedAccount.ps1 │ ├── Disable-PASCPMAutoManagement.ps1 │ ├── Enable-PASCPMAutoManagement.ps1 │ ├── Get-PASAccount.ps1 │ ├── Get-PASAccountActivity.ps1 │ ├── Get-PASAccountDetail.ps1 │ ├── Get-PASAccountImportJob.ps1 │ ├── Get-PASAccountPassword.ps1 │ ├── Get-PASAccountPasswordVersion.ps1 │ ├── Get-PASAccountSSHKey.ps1 │ ├── Get-PASDiscoveredAccount.ps1 │ ├── Get-PASDiscoveredLocalAccount.ps1 │ ├── Get-PASDiscoveredLocalAccountActivity.ps1 │ ├── Get-PASLinkedAccount.ps1 │ ├── Get-PASLinkedGroup.ps1 │ ├── Invoke-PASCPMOperation.ps1 │ ├── New-PASAccountObject.ps1 │ ├── New-PASAccountPassword.ps1 │ ├── Publish-PASDiscoveredAccount.ps1 │ ├── Publish-PASDiscoveredLocalAccount.ps1 │ ├── Remove-PASAccount.ps1 │ ├── Remove-PASDiscoveredLocalAccount.ps1 │ ├── Request-PASJustInTimeAccess.ps1 │ ├── Revoke-PASJustInTimeAccess.ps1 │ ├── Set-PASAccount.ps1 │ ├── Set-PASLinkedAccount.ps1 │ ├── Start-PASAccountImportJob.ps1 │ └── Unlock-PASAccount.ps1 ├── Applications │ ├── Add-PASApplication.ps1 │ ├── Add-PASApplicationAuthenticationMethod.ps1 │ ├── Get-PASApplication.ps1 │ ├── Get-PASApplicationAuthenticationMethod.ps1 │ ├── Remove-PASApplication.ps1 │ └── Remove-PASApplicationAuthenticationMethod.ps1 ├── Authentication │ ├── Add-PASAuthenticationMethod.ps1 │ ├── Add-PASOpenIDConnectProvider.ps1 │ ├── Add-PASPublicSSHKey.ps1 │ ├── Clear-PASPrivateSSHKey.ps1 │ ├── Close-PASSession.ps1 │ ├── Get-PASAuthenticationMethod.ps1 │ ├── Get-PASOpenIDConnectProvider.ps1 │ ├── Get-PASPublicSSHKey.ps1 │ ├── Get-PASSession.ps1 │ ├── New-PASPrivateSSHKey.ps1 │ ├── New-PASSession.ps1 │ ├── Remove-PASAuthenticationMethod.ps1 │ ├── Remove-PASOpenIDConnectProvider.ps1 │ ├── Remove-PASPrivateSSHKey.ps1 │ ├── Remove-PASPublicSSHKey.ps1 │ ├── Set-PASAuthenticationMethod.ps1 │ ├── Set-PASOpenIDConnectProvider.ps1 │ └── Use-PASSession.ps1 ├── BYOK │ └── Get-PASBYOKConfig.ps1 ├── Connections │ ├── Get-PASConnectionComponent.ps1 │ ├── Get-PASPSMServer.ps1 │ ├── Import-PASConnectionComponent.ps1 │ └── New-PASPSMSession.ps1 ├── EventSecurity │ ├── Add-PASPTAExcludedTarget.ps1 │ ├── Add-PASPTAGlobalCatalog.ps1 │ ├── Add-PASPTAIncludedTarget.ps1 │ ├── Add-PASPTAPrivilegedGroup.ps1 │ ├── Add-PASPTAPrivilegedUser.ps1 │ ├── Add-PASPTARule.ps1 │ ├── Get-PASPTAEvent.ps1 │ ├── Get-PASPTAExcludedTarget.ps1 │ ├── Get-PASPTAGlobalCatalog.ps1 │ ├── Get-PASPTAIncludedTarget.ps1 │ ├── Get-PASPTAPrivilegedGroup.ps1 │ ├── Get-PASPTAPrivilegedUser.ps1 │ ├── Get-PASPTARemediation.ps1 │ ├── Get-PASPTARiskEvent.ps1 │ ├── Get-PASPTARiskSummary.ps1 │ ├── Get-PASPTARule.ps1 │ ├── Remove-PASPTAExcludedTarget.ps1 │ ├── Remove-PASPTAIncludedTarget.ps1 │ ├── Remove-PASPTAPrivilegedGroup.ps1 │ ├── Remove-PASPTAPrivilegedUser.ps1 │ ├── Set-PASPTAEvent.ps1 │ ├── Set-PASPTARemediation.ps1 │ ├── Set-PASPTARiskEvent.ps1 │ └── Set-PASPTARule.ps1 ├── General │ ├── Add-PASAllowedReferrer.ps1 │ └── Get-PASAllowedReferrer.ps1 ├── IPAllowlist │ ├── Get-PASIPAllowList.ps1 │ └── Set-PASIPAllowList.ps1 ├── LDAPDirectories │ ├── Add-PASDirectory.ps1 │ ├── Get-PASDirectory.ps1 │ ├── Get-PASDirectoryMapping.ps1 │ ├── New-PASDirectoryMapping.ps1 │ ├── Remove-PASDirectory.ps1 │ ├── Remove-PASDirectoryMapping.ps1 │ ├── Set-PASDirectoryMapping.ps1 │ └── Set-PASDirectoryMappingOrder.ps1 ├── Monitoring │ ├── Connect-PASPSMSession.ps1 │ ├── Export-PASPSMRecording.ps1 │ ├── Get-PASPSMRecording.ps1 │ ├── Get-PASPSMRecordingActivity.ps1 │ ├── Get-PASPSMRecordingProperty.ps1 │ ├── Get-PASPSMSession.ps1 │ ├── Get-PASPSMSessionActivity.ps1 │ ├── Get-PASPSMSessionProperty.ps1 │ ├── Resume-PASPSMSession.ps1 │ ├── Stop-PASPSMSession.ps1 │ ├── Suspend-PASPSMSession.ps1 │ └── Test-PASPSMRecording.ps1 ├── OnboardingRules │ ├── Get-PASOnboardingRule.ps1 │ ├── New-PASOnboardingRule.ps1 │ ├── Remove-PASOnboardingRule.ps1 │ └── Set-PASOnboardingRule.ps1 ├── Platforms │ ├── Copy-PASPlatform.ps1 │ ├── Disable-PASPlatform.ps1 │ ├── Enable-PASPlatform.ps1 │ ├── Export-PASPlatform.ps1 │ ├── Get-PASPlatform.ps1 │ ├── Get-PASPlatformPSMConfig.ps1 │ ├── Get-PASPlatformSafe.ps1 │ ├── Get-PASPlatformSummary.ps1 │ ├── Import-PASPlatform.ps1 │ ├── Remove-PASPlatform.ps1 │ └── Set-PASPlatformPSMConfig.ps1 ├── PolicyACL │ ├── Add-PASPolicyACL.ps1 │ ├── Get-PASPolicyACL.ps1 │ └── Remove-PASPolicyACL.ps1 ├── Requests │ ├── Approve-PASRequest.ps1 │ ├── Deny-PASRequest.ps1 │ ├── Get-PASRequest.ps1 │ ├── Get-PASRequestDetail.ps1 │ ├── New-PASRequest.ps1 │ ├── New-PASRequestObject.ps1 │ └── Remove-PASRequest.ps1 ├── SafeMembers │ ├── Add-PASSafeMember.ps1 │ ├── Get-PASSafeMember.ps1 │ ├── Remove-PASSafeMember.ps1 │ └── Set-PASSafeMember.ps1 ├── Safes │ ├── Add-PASSafe.ps1 │ ├── Find-PASSafe.ps1 │ ├── Get-PASSafe.ps1 │ ├── Remove-PASSafe.ps1 │ └── Set-PASSafe.ps1 ├── ServerWebServices │ ├── Get-PASSafeShareLogo.ps1 │ ├── Get-PASServer.ps1 │ └── Get-PASServerWebService.ps1 ├── SystemHealth │ ├── Get-PASComponentDetail.ps1 │ └── Get-PASComponentSummary.ps1 └── User │ ├── Add-PASGroupMember.ps1 │ ├── Disable-PASUser.ps1 │ ├── Enable-PASUser.ps1 │ ├── Get-PASGroup.ps1 │ ├── Get-PASLoggedOnUser.ps1 │ ├── Get-PASUser.ps1 │ ├── Get-PASUserLoginInfo.ps1 │ ├── Get-PASUserTypeInfo.ps1 │ ├── New-PASGroup.ps1 │ ├── New-PASUser.ps1 │ ├── Remove-PASGroup.ps1 │ ├── Remove-PASGroupMember.ps1 │ ├── Remove-PASUser.ps1 │ ├── Set-PASGroup.ps1 │ ├── Set-PASUser.ps1 │ ├── Set-PASUserPassword.ps1 │ └── Unblock-PASUser.ps1 ├── Private ├── Add-ObjectDetail.ps1 ├── Assert-VersionRequirement.ps1 ├── Compare-MaximumVersion.ps1 ├── Compare-MinimumVersion.ps1 ├── ConvertFrom-KeyValuePair.ps1 ├── ConvertTo-BulkFilterItem.ps1 ├── ConvertTo-ConnectionParam.ps1 ├── ConvertTo-FilterString.ps1 ├── ConvertTo-InsecureString.ps1 ├── ConvertTo-QueryString.ps1 ├── ConvertTo-SortedPermission.ps1 ├── ConvertTo-UnixTime.ps1 ├── Find-SharedServicesURL.ps1 ├── Format-PASUserObject.ps1 ├── Format-PutRequestObject.ps1 ├── Get-ByteArray.ps1 ├── Get-EscapedString.ps1 ├── Get-NextLink.ps1 ├── Get-PASParameter.ps1 ├── Get-PASPropertyObject.ps1 ├── Get-PASResponse.ps1 ├── Get-PASSAMLResponse.ps1 ├── Get-ParentFunction.ps1 ├── Get-SessionClone.ps1 ├── Hide-SecretValue.ps1 ├── Invoke-PASRestMethod.ps1 ├── Out-PASFile.ps1 ├── Send-RADIUSResponse.ps1 ├── Skip-CertificateCheck.ps1 └── Test-IsCoreCLR.ps1 ├── about_psPAS.help.txt ├── en-US └── psPAS-help.xml ├── psPAS.psd1 ├── psPAS.psm1 └── xml ├── psPAS.CyberArk.Vault.ACL.Formats.ps1xml ├── psPAS.CyberArk.Vault.ACL.Type.ps1xml ├── psPAS.CyberArk.Vault.Account.Formats.ps1xml ├── psPAS.CyberArk.Vault.Account.Type.ps1xml ├── psPAS.CyberArk.Vault.Application.Formats.ps1xml ├── psPAS.CyberArk.Vault.Credential.Formats.ps1xml ├── psPAS.CyberArk.Vault.Credential.Type.ps1xml ├── psPAS.CyberArk.Vault.Directory.Formats.ps1xml ├── psPAS.CyberArk.Vault.Group.Formats.ps1xml ├── psPAS.CyberArk.Vault.OnboardingRule.Formats.ps1xml ├── psPAS.CyberArk.Vault.PSM.Formats.ps1xml ├── psPAS.CyberArk.Vault.PTA.Formats.ps1xml ├── psPAS.CyberArk.Vault.Platform.Formats.ps1xml ├── psPAS.CyberArk.Vault.Request.Formats.ps1xml ├── psPAS.CyberArk.Vault.SSHKey.Formats.ps1xml ├── psPAS.CyberArk.Vault.Safe.Formats.ps1xml ├── psPAS.CyberArk.Vault.Safe.Type.ps1xml ├── psPAS.CyberArk.Vault.User.Formats.ps1xml └── psPAS.CyberArk.Vault.User.Type.ps1xml /.gitattributes: -------------------------------------------------------------------------------- 1 | # Auto detect text files and perform LF normalization 2 | * text=auto 3 | 4 | # Custom for Visual Studio 5 | *.cs diff=csharp 6 | 7 | # Standard to msysgit 8 | *.doc diff=astextplain 9 | *.DOC diff=astextplain 10 | *.docx diff=astextplain 11 | *.DOCX diff=astextplain 12 | *.dot diff=astextplain 13 | *.DOT diff=astextplain 14 | *.pdf diff=astextplain 15 | *.PDF diff=astextplain 16 | *.rtf diff=astextplain 17 | *.RTF diff=astextplain 18 | -------------------------------------------------------------------------------- /.github/FUNDING.yml: -------------------------------------------------------------------------------- 1 | github: [pspete] -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Issue report 3 | about: Create a report to help us improve 4 | title: '' 5 | labels: '' 6 | assignees: '' 7 | 8 | --- 9 | 10 | **Describe the issue** 11 | A concise summary of the issue 12 | 13 | **To Reproduce** 14 | Steps to reproduce the behavior: 15 | 1. 16 | 2. 17 | 3. 18 | 19 | **Expected behavior** 20 | A clear and concise description of what you expected to happen. 21 | 22 | **Screenshots & Console Output** 23 | If applicable, add screenshots and/or console output to help explain your problem. 24 | 25 | ```powershell 26 | 27 | <--Console Output Goes Here--> 28 | 29 | ``` 30 | 31 | **Your Environment** 32 | Include relevant details about your environment 33 | 34 | * PowerShell Version: 35 | * psPAS Version: 36 | * CyberArk Version: 37 | 38 | **Additional context** 39 | Add any other context about the problem here. 40 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/feature_request.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Feature request 3 | about: Suggest an idea for this project 4 | title: '' 5 | labels: '' 6 | assignees: '' 7 | 8 | --- 9 | 10 | **Is your feature request related to a problem? Please describe.** 11 | A clear and concise description of what the problem is. Ex. I'm always frustrated when [...] 12 | 13 | **Describe the solution you'd like** 14 | A clear and concise description of what you want to happen. 15 | 16 | **Describe alternatives you've considered** 17 | A clear and concise description of any alternative solutions or features you've considered. 18 | 19 | **Additional context** 20 | Add any other context or screenshots about the feature request here. 21 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/issue-report.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Issue report 3 | about: Create a report to help us improve 4 | title: '' 5 | labels: '' 6 | assignees: '' 7 | 8 | --- 9 | 10 | **Describe the issue** 11 | A concise summary of the issue 12 | 13 | **To Reproduce** 14 | Steps to reproduce the behavior: 15 | 1. 16 | 2. 17 | 3. 18 | 19 | **Expected behavior** 20 | A clear and concise description of what you expected to happen. 21 | 22 | **Screenshots & Console Output** 23 | If applicable, add screenshots and/or console output to help explain your problem. 24 | 25 | ```powershell 26 | 27 | <--Console Output Goes Here--> 28 | 29 | ``` 30 | 31 | **Your Environment** 32 | Include relevant details about your environment 33 | 34 | * PowerShell Version: 35 | * psPAS Version: 36 | * CyberArk Version: 37 | 38 | **Additional context** 39 | Add any other context about the problem here. 40 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .vscode/* -------------------------------------------------------------------------------- /LICENSE.md: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2017-2024 Pete Maan 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /build/install.ps1: -------------------------------------------------------------------------------- 1 | #---------------------------------# 2 | # Header # 3 | #---------------------------------# 4 | Write-Host "Installing Required Modules:" -ForegroundColor Yellow 5 | 6 | $RequiredModules = @( 7 | "PowerShellGet" 8 | "Pester", 9 | "PSScriptAnalyzer"<#, 10 | "coveralls", 11 | "PSCodeCovIo"#> 12 | ) 13 | 14 | #---------------------------------# 15 | # Install NuGet # 16 | <#---------------------------------# 17 | if(-not $IsCoreCLR) { 18 | Write-Host "`tNuGet..." 19 | $pkg = Install-PackageProvider -Name NuGet -Confirm:$false -Force -ErrorAction Stop 20 | Write-Host "`t`tInstalled NuGet version '$($pkg.version)'" 21 | } 22 | #> 23 | #---------------------------------# 24 | # Install Required Modules # 25 | #---------------------------------# 26 | foreach ($Module in $RequiredModules) { 27 | 28 | Try { 29 | Write-Host "`tInstalling: $Module..." -NoNewline 30 | Install-Module -Name $Module -Repository PSGallery -Confirm:$false -Force -SkipPublisherCheck -ErrorAction Stop | Out-Null 31 | Write-Host " OK" -ForegroundColor Green 32 | }Catch { 33 | Write-Host "Error" -ForegroundColor Red 34 | throw $_ 35 | } 36 | 37 | } -------------------------------------------------------------------------------- /docs/.gitignore: -------------------------------------------------------------------------------- 1 | *.gem 2 | *.sublime-project 3 | *.sublime-workspace 4 | .bundle 5 | .DS_Store 6 | .jekyll-metadata 7 | .sass-cache 8 | _asset_bundler_cache 9 | _site 10 | vendor 11 | codekit-config.json 12 | example/_site 13 | Gemfile.lock 14 | node_modules 15 | npm-debug.log* -------------------------------------------------------------------------------- /docs/.travis.yml: -------------------------------------------------------------------------------- 1 | language: ruby 2 | cache: bundler 3 | gemfile: docs/Gemfile 4 | script: 5 | - bundle exec jekyll algolia --source docs --destination docs/_site --config docs/_config.yml 6 | branches: 7 | only: 8 | # Change this to gh-pages if you're deploying using the gh-pages branch 9 | - master 10 | rvm: 11 | - 2.4 -------------------------------------------------------------------------------- /docs/CNAME: -------------------------------------------------------------------------------- 1 | pspas.pspete.dev -------------------------------------------------------------------------------- /docs/Gemfile: -------------------------------------------------------------------------------- 1 | source "https://rubygems.org" 2 | 3 | # Hello! This is where you manage which Jekyll version is used to run. 4 | # When you want to use a different version, change it below, save the 5 | # file and run `bundle install`. Run Jekyll with `bundle exec`, like so: 6 | # 7 | # bundle exec jekyll serve 8 | # 9 | # This will help ensure the proper Jekyll version is running. 10 | # Happy Jekylling! 11 | 12 | # gem "github-pages", group: :jekyll_plugins 13 | 14 | # To upgrade, run `bundle update`. 15 | 16 | gem "github-pages", group: :jekyll_plugins 17 | gem "minimal-mistakes-jekyll" 18 | 19 | # The following plugins are automatically loaded by the theme-gem: 20 | # gem "jekyll-paginate" 21 | # gem "jekyll-sitemap" 22 | # gem "jekyll-gist" 23 | # gem "jekyll-feed" 24 | # gem "jemoji" 25 | # gem "jekyll-data" 26 | # gem "jekyll-include-cache" 27 | # 28 | # If you have any other plugins, put them here! 29 | group :jekyll_plugins do 30 | end -------------------------------------------------------------------------------- /docs/LICENSE: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2013-2019 Michael Rose and contributors 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. -------------------------------------------------------------------------------- /docs/_includes/analytics-providers/custom.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /docs/_includes/analytics-providers/google-gtag.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 10 | -------------------------------------------------------------------------------- /docs/_includes/analytics-providers/google-universal.html: -------------------------------------------------------------------------------- 1 | 7 | 8 | -------------------------------------------------------------------------------- /docs/_includes/analytics-providers/google.html: -------------------------------------------------------------------------------- 1 | 15 | -------------------------------------------------------------------------------- /docs/_includes/analytics.html: -------------------------------------------------------------------------------- 1 | {% if jekyll.environment == 'production' and site.analytics.provider and page.analytics != false %} 2 | 3 | {% case site.analytics.provider %} 4 | {% when "google" %} 5 | {% include /analytics-providers/google.html %} 6 | {% when "google-universal" %} 7 | {% include /analytics-providers/google-universal.html %} 8 | {% when "google-gtag" %} 9 | {% include /analytics-providers/google-gtag.html %} 10 | {% when "custom" %} 11 | {% include /analytics-providers/custom.html %} 12 | {% endcase %} 13 | 14 | {% endif %} -------------------------------------------------------------------------------- /docs/_includes/author-profile-custom-links.html: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /docs/_includes/browser-upgrade.html: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /docs/_includes/category-list.html: -------------------------------------------------------------------------------- 1 | {% case site.category_archive.type %} 2 | {% when "liquid" %} 3 | {% assign path_type = "#" %} 4 | {% when "jekyll-archives" %} 5 | {% assign path_type = nil %} 6 | {% endcase %} 7 | 8 | {% if site.category_archive.path %} 9 | {% comment %} 10 | 11 | 12 | {% endcomment %} 13 | {% capture page_categories %}{% for category in page.categories %}{{ category | downcase }}|{{ category }}{% unless forloop.last %},{% endunless %}{% endfor %}{% endcapture %} 14 | {% assign category_hashes = page_categories | split: ',' | sort %} 15 | 16 |

17 | {{ site.data.ui-text[site.locale].categories_label | default: "Categories:" }} 18 | 19 | {% for hash in category_hashes %} 20 | {% assign keyValue = hash | split: '|' %} 21 | {% capture category_word %}{{ keyValue[1] | strip_newlines }}{% endcapture %} 22 | {% unless forloop.last %}, {% endunless %} 23 | {% endfor %} 24 | 25 |

26 | {% endif %} -------------------------------------------------------------------------------- /docs/_includes/comment.html: -------------------------------------------------------------------------------- 1 |
2 |
3 | {{ include.name }} 4 |
5 |
6 | 13 |

14 | {% if include.date %} 15 | {% if include.index %}{% endif %} 18 | {% endif %} 19 |

20 |
{{ include.message | markdownify }}
21 |
22 |
23 | -------------------------------------------------------------------------------- /docs/_includes/comments-providers/custom.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /docs/_includes/comments-providers/discourse.html: -------------------------------------------------------------------------------- 1 | {% if site.comments.discourse.server %} 2 | {% capture canonical %}{% if site.permalink contains '.html' %}{{ page.url | absolute_url }}{% else %}{{ page.url | absolute_url | remove:'index.html' | strip_slash }}{% endif %}{% endcapture %} 3 | 12 | 13 | {% endif %} 14 | -------------------------------------------------------------------------------- /docs/_includes/comments-providers/disqus.html: -------------------------------------------------------------------------------- 1 | {% if site.comments.disqus.shortname %} 2 | 14 | 15 | {% endif %} 16 | -------------------------------------------------------------------------------- /docs/_includes/comments-providers/facebook.html: -------------------------------------------------------------------------------- 1 |
2 | -------------------------------------------------------------------------------- /docs/_includes/comments-providers/scripts.html: -------------------------------------------------------------------------------- 1 | {% if site.comments.provider and page.comments %} 2 | {% case site.comments.provider %} 3 | {% when "disqus" %} 4 | {% include /comments-providers/disqus.html %} 5 | {% when "discourse" %} 6 | {% include /comments-providers/discourse.html %} 7 | {% when "facebook" %} 8 | {% include /comments-providers/facebook.html %} 9 | {% when "staticman" %} 10 | {% include /comments-providers/staticman.html %} 11 | {% when "staticman_v2" %} 12 | {% include /comments-providers/staticman_v2.html %} 13 | {% when "utterances" %} 14 | {% include /comments-providers/utterances.html %} 15 | {% when "custom" %} 16 | {% include /comments-providers/custom.html %} 17 | {% endcase %} 18 | {% endif %} -------------------------------------------------------------------------------- /docs/_includes/comments-providers/utterances.html: -------------------------------------------------------------------------------- 1 | 21 | -------------------------------------------------------------------------------- /docs/_includes/documents-collection.html: -------------------------------------------------------------------------------- 1 | {% assign entries = site[include.collection] %} 2 | 3 | {% if include.sort_by == 'title' %} 4 | {% if include.sort_order == 'reverse' %} 5 | {% assign entries = entries | sort: 'title' | reverse %} 6 | {% else %} 7 | {% assign entries = entries | sort: 'title' %} 8 | {% endif %} 9 | {% elsif include.sort_by == 'date' %} 10 | {% if include.sort_order == 'reverse' %} 11 | {% assign entries = entries | sort: 'date' | reverse %} 12 | {% else %} 13 | {% assign entries = entries | sort: 'date' %} 14 | {% endif %} 15 | {% endif %} 16 | 17 | {%- for post in entries -%} 18 | {% include archive-single.html %} 19 | {%- endfor -%} 20 | -------------------------------------------------------------------------------- /docs/_includes/figure: -------------------------------------------------------------------------------- 1 |
2 | {% if include.alt %}{{ include.alt }}{% endif %} 9 | {% if include.caption %} 10 |
11 | {{ include.caption | markdownify | remove: "

" | remove: "

" }} 12 |
{% endif %}
13 | -------------------------------------------------------------------------------- /docs/_includes/footer.html: -------------------------------------------------------------------------------- 1 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /docs/_includes/footer/custom.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /docs/_includes/group-by-array: -------------------------------------------------------------------------------- 1 | 7 | 8 | 9 | {% assign __empty_array = '' | split: ',' %} 10 | {% assign group_names = __empty_array %} 11 | {% assign group_items = __empty_array %} 12 | 13 | 14 | {% assign __names = include.collection | map: include.field %} 15 | 16 | 17 | {% assign __names = __names | join: ',' | join: ',' | split: ',' %} 18 | 19 | 20 | {% assign __names = __names | sort %} 21 | {% for name in __names %} 22 | 23 | 24 | {% unless name == previous %} 25 | 26 | 27 | {% assign group_names = group_names | push: name %} 28 | {% endunless %} 29 | 30 | {% assign previous = name %} 31 | {% endfor %} 32 | 33 | 34 | 35 | {% for name in group_names %} 36 | 37 | 38 | {% assign __item = __empty_array %} 39 | {% for __element in include.collection %} 40 | {% if __element[include.field] contains name %} 41 | {% assign __item = __item | push: __element %} 42 | {% endif %} 43 | {% endfor %} 44 | 45 | 46 | {% assign group_items = group_items | push: __item %} 47 | {% endfor %} -------------------------------------------------------------------------------- /docs/_includes/head.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | {% include seo.html %} 4 | 5 | 6 | 7 | 8 | 9 | 10 | 13 | 14 | 15 | 16 | 17 | 31 | 32 | {% if site.head_scripts %} 33 | {% for script in site.head_scripts %} 34 | {% if script contains "://" %} 35 | {% capture script_path %}{{ script }}{% endcapture %} 36 | {% else %} 37 | {% capture script_path %}{{ script | relative_url }}{% endcapture %} 38 | {% endif %} 39 | 40 | {% endfor %} 41 | {% endif %} 42 | -------------------------------------------------------------------------------- /docs/_includes/head/custom.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /docs/_includes/page__hero_video.html: -------------------------------------------------------------------------------- 1 | {% capture video_id %}{{ page.header.video.id }}{% endcapture %} 2 | {% capture video_provider %}{{ page.header.video.provider }}{% endcapture %} 3 | 4 | {% include video id=video_id provider=video_provider %} 5 | -------------------------------------------------------------------------------- /docs/_includes/page__taxonomy.html: -------------------------------------------------------------------------------- 1 | {% if site.tag_archive.type and page.tags[0] %} 2 | {% include tag-list.html %} 3 | {% endif %} 4 | 5 | {% if site.category_archive.type and page.categories[0] %} 6 | {% include category-list.html %} 7 | {% endif %} -------------------------------------------------------------------------------- /docs/_includes/post_pagination.html: -------------------------------------------------------------------------------- 1 | {% if page.previous or page.next %} 2 | 14 | {% endif %} -------------------------------------------------------------------------------- /docs/_includes/posts-category.html: -------------------------------------------------------------------------------- 1 | {%- for post in site.categories[include.taxonomy] -%} 2 | {% include archive-single.html %} 3 | {%- endfor -%} 4 | -------------------------------------------------------------------------------- /docs/_includes/posts-tag.html: -------------------------------------------------------------------------------- 1 | {%- for post in site.tags[include.taxonomy] -%} 2 | {% include archive-single.html %} 3 | {%- endfor -%} 4 | -------------------------------------------------------------------------------- /docs/_includes/read-time.html: -------------------------------------------------------------------------------- 1 | {% assign words_per_minute = site.words_per_minute | default: 200 %} 2 | 3 | {% if post.read_time %} 4 | {% assign words = post.content | strip_html | number_of_words %} 5 | {% elsif page.read_time %} 6 | {% assign words = page.content | strip_html | number_of_words %} 7 | {% endif %} 8 | 9 | {% if words < words_per_minute %} 10 | {{ site.data.ui-text[site.locale].less_than | default: "less than" }} 1 {{ site.data.ui-text[site.locale].minute_read | default: "minute read" }} 11 | {% elsif words == words_per_minute %} 12 | 1 {{ site.data.ui-text[site.locale].minute_read | default: "minute read" }} 13 | {% else %} 14 | {{ words | divided_by:words_per_minute }} {{ site.data.ui-text[site.locale].minute_read | default: "minute read" }} 15 | {% endif %} -------------------------------------------------------------------------------- /docs/_includes/search/google-search-scripts.html: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /docs/_includes/search/lunr-search-scripts.html: -------------------------------------------------------------------------------- 1 | {% assign lang = site.locale | slice: 0,2 | default: "en" %} 2 | {% case lang %} 3 | {% when "gr" %} 4 | {% assign lang = "gr" %} 5 | {% else %} 6 | {% assign lang = "en" %} 7 | {% endcase %} 8 | 9 | 10 | -------------------------------------------------------------------------------- /docs/_includes/search/search_form.html: -------------------------------------------------------------------------------- 1 |
2 | {%- assign search_provider = site.search_provider | default: "lunr" -%} 3 | {%- case search_provider -%} 4 | {%- when "lunr" -%} 5 |
6 | 9 | 10 |
11 |
12 | {%- when "google" -%} 13 |
14 | 17 | 18 |
19 |
20 | 21 |
22 | {%- when "algolia" -%} 23 | 24 |
25 | {%- endcase -%} 26 |
27 | -------------------------------------------------------------------------------- /docs/_includes/sidebar.html: -------------------------------------------------------------------------------- 1 | {% if page.author_profile or layout.author_profile or page.sidebar %} 2 | 24 | {% endif %} -------------------------------------------------------------------------------- /docs/_includes/skip-links.html: -------------------------------------------------------------------------------- 1 | 9 | -------------------------------------------------------------------------------- /docs/_includes/social-share.html: -------------------------------------------------------------------------------- 1 |
2 | {% if site.data.ui-text[site.locale].share_on_label %} 3 |

{{ site.data.ui-text[site.locale].share_on_label | default: "Share on" }}

4 | {% endif %} 5 | 6 | Twitter 11 | 12 | Reddit 17 |
-------------------------------------------------------------------------------- /docs/_includes/tag-list.html: -------------------------------------------------------------------------------- 1 | {% case site.tag_archive.type %} 2 | {% when "liquid" %} 3 | {% assign path_type = "#" %} 4 | {% when "jekyll-archives" %} 5 | {% assign path_type = nil %} 6 | {% endcase %} 7 | 8 | {% if site.tag_archive.path %} 9 | {% comment %} 10 | 11 | 12 | {% endcomment %} 13 | {% capture page_tags %}{% for tag in page.tags %}{{ tag | downcase }}|{{ tag }}{% unless forloop.last %},{% endunless %}{% endfor %}{% endcapture %} 14 | {% assign tag_hashes = page_tags | split: ',' | sort %} 15 | 16 |

17 | {{ site.data.ui-text[site.locale].tags_label | default: "Tags:" }} 18 | 19 | {% for hash in tag_hashes %} 20 | {% assign keyValue = hash | split: '|' %} 21 | {% capture tag_word %}{{ keyValue[1] | strip_newlines }}{% endcapture %} 22 | {% unless forloop.last %}, {% endunless %} 23 | {% endfor %} 24 | 25 |

26 | {% endif %} -------------------------------------------------------------------------------- /docs/_includes/toc: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /docs/_includes/video: -------------------------------------------------------------------------------- 1 | {% capture video_id %}{{ include.id }}{% endcapture %} 2 | {% capture video_provider %}{{ include.provider }}{% endcapture %} 3 | 4 | 5 |
6 | {% if video_provider == "vimeo" %} 7 | 8 | {% elsif video_provider == "youtube" %} 9 | 10 | {% elsif video_provider == "google-drive" %} 11 | 12 | {% endif %} 13 |
14 | -------------------------------------------------------------------------------- /docs/_layouts/archive-taxonomy.html: -------------------------------------------------------------------------------- 1 | --- 2 | layout: default 3 | author_profile: false 4 | --- 5 | 6 |
7 | {% include sidebar.html %} 8 | 9 |
10 |

{{ page.title }}

11 | {% for post in page.posts %} 12 | {% include archive-single.html %} 13 | {% endfor %} 14 |
15 |
-------------------------------------------------------------------------------- /docs/_layouts/archive.html: -------------------------------------------------------------------------------- 1 | --- 2 | layout: default 3 | --- 4 | 5 | {% if page.header.overlay_color or page.header.overlay_image or page.header.image %} 6 | {% include page__hero.html %} 7 | {% elsif page.header.video.id and page.header.video.provider %} 8 | {% include page__hero_video.html %} 9 | {% endif %} 10 | 11 | {% if page.url != "/" and site.breadcrumbs %} 12 | {% unless paginator %} 13 | {% include breadcrumbs.html %} 14 | {% endunless %} 15 | {% endif %} 16 | 17 |
18 | {% include sidebar.html %} 19 | 20 |
21 | {% unless page.header.overlay_color or page.header.overlay_image %} 22 |

{{ page.title }}

23 | {% endunless %} 24 | {{ content }} 25 |
26 |
-------------------------------------------------------------------------------- /docs/_layouts/categories.html: -------------------------------------------------------------------------------- 1 | --- 2 | layout: archive 3 | --- 4 | 5 | {{ content }} 6 | 7 | {% assign categories_max = 0 %} 8 | {% for category in site.categories %} 9 | {% if category[1].size > categories_max %} 10 | {% assign categories_max = category[1].size %} 11 | {% endif %} 12 | {% endfor %} 13 | 14 | 27 | 28 | {% for i in (1..categories_max) reversed %} 29 | {% for category in site.categories %} 30 | {% if category[1].size == i %} 31 |
32 |

{{ category[0] }}

33 |
34 | {% for post in category.last %} 35 | {% include archive-single.html type=page.entries_layout %} 36 | {% endfor %} 37 |
38 | {{ site.data.ui-text[site.locale].back_to_top | default: 'Back to Top' }} ↑ 39 |
40 | {% endif %} 41 | {% endfor %} 42 | {% endfor %} 43 | -------------------------------------------------------------------------------- /docs/_layouts/category.html: -------------------------------------------------------------------------------- 1 | --- 2 | layout: archive 3 | --- 4 | 5 | {{ content }} 6 | 7 |
8 | {% include posts-category.html taxonomy=page.taxonomy type=page.entries_layout %} 9 |
10 | -------------------------------------------------------------------------------- /docs/_layouts/collection.html: -------------------------------------------------------------------------------- 1 | --- 2 | layout: archive 3 | --- 4 | 5 | {{ content }} 6 | 7 |
8 | {% include documents-collection.html collection=page.collection sort_by=page.sort_by sort_order=page.sort_order type=page.entries_layout %} 9 |
10 | -------------------------------------------------------------------------------- /docs/_layouts/default.html: -------------------------------------------------------------------------------- 1 | --- 2 | --- 3 | 4 | 5 | 11 | 12 | 13 | {% include head.html %} 14 | {% include head/custom.html %} 15 | 16 | 17 | 18 | {% include_cached skip-links.html %} 19 | {% include_cached browser-upgrade.html %} 20 | {% include_cached masthead.html %} 21 | 22 |
23 | {{ content }} 24 |
25 | 26 | {% if site.search == true %} 27 |
28 | {% include_cached search/search_form.html %} 29 |
30 | {% endif %} 31 | 32 | 38 | 39 | {% include scripts.html %} 40 | 41 | 42 | 43 | -------------------------------------------------------------------------------- /docs/_layouts/home.html: -------------------------------------------------------------------------------- 1 | --- 2 | layout: archive 3 | --- 4 | 5 | {{ content }} 6 | 7 |

{{ site.data.ui-text[site.locale].recent_posts | default: "Recent Posts" }}

8 | 9 | {% for post in paginator.posts %} 10 | {% include archive-single.html %} 11 | {% endfor %} 12 | 13 | {% include paginator.html %} 14 | -------------------------------------------------------------------------------- /docs/_layouts/posts.html: -------------------------------------------------------------------------------- 1 | --- 2 | layout: archive 3 | --- 4 | 5 | {{ content }} 6 | 7 | 17 | 18 | {% assign postsByYear = site.posts | group_by_exp: 'post', 'post.date | date: "%Y"' %} 19 | {% for year in postsByYear %} 20 |
21 |

{{ year.name }}

22 |
23 | {% for post in year.items %} 24 | {% include archive-single.html type=page.entries_layout %} 25 | {% endfor %} 26 |
27 | {{ site.data.ui-text[site.locale].back_to_top | default: 'Back to Top' }} ↑ 28 |
29 | {% endfor %} 30 | -------------------------------------------------------------------------------- /docs/_layouts/splash.html: -------------------------------------------------------------------------------- 1 | --- 2 | layout: default 3 | --- 4 | 5 | {% if page.header.overlay_color or page.header.overlay_image or page.header.image %} 6 | {% include page__hero.html %} 7 | {% elsif page.header.video.id and page.header.video.provider %} 8 | {% include page__hero_video.html %} 9 | {% endif %} 10 | 11 |
12 |
13 | {% if page.title %}{% endif %} 14 | {% if page.excerpt %}{% endif %} 15 | {% if page.date %}{% endif %} 16 | {% if page.last_modified_at %}{% endif %} 17 | 18 |
19 | {{ content }} 20 |
21 |
22 |
23 | -------------------------------------------------------------------------------- /docs/_layouts/tag.html: -------------------------------------------------------------------------------- 1 | --- 2 | layout: archive 3 | --- 4 | 5 | {{ content }} 6 | 7 |
8 | {% include posts-tag.html taxonomy=page.taxonomy type=page.entries_layout %} 9 |
10 | -------------------------------------------------------------------------------- /docs/_layouts/tags.html: -------------------------------------------------------------------------------- 1 | --- 2 | layout: archive 3 | --- 4 | 5 | {{ content }} 6 | 7 | {% assign tags_max = 0 %} 8 | {% for tag in site.tags %} 9 | {% if tag[1].size > tags_max %} 10 | {% assign tags_max = tag[1].size %} 11 | {% endif %} 12 | {% endfor %} 13 | 14 | 27 | 28 | {% for i in (1..tags_max) reversed %} 29 | {% for tag in site.tags %} 30 | {% if tag[1].size == i %} 31 |
32 |

{{ tag[0] }}

33 |
34 | {% for post in tag.last %} 35 | {% include archive-single.html type=page.entries_layout %} 36 | {% endfor %} 37 |
38 | {{ site.data.ui-text[site.locale].back_to_top | default: 'Back to Top' }} ↑ 39 |
40 | {% endif %} 41 | {% endfor %} 42 | {% endfor %} 43 | -------------------------------------------------------------------------------- /docs/_sass/minimal-mistakes.scss: -------------------------------------------------------------------------------- 1 | /*! 2 | * Minimal Mistakes Jekyll Theme 4.16.5 by Michael Rose 3 | * Copyright 2013-2019 Michael Rose - mademistakes.com | @mmistakes 4 | * Licensed under MIT (https://github.com/mmistakes/minimal-mistakes/blob/master/LICENSE) 5 | */ 6 | 7 | /* Variables */ 8 | @import "minimal-mistakes/variables"; 9 | 10 | /* Mixins and functions */ 11 | @import "minimal-mistakes/vendor/breakpoint/breakpoint"; 12 | @include breakpoint-set("to ems", true); 13 | @import "minimal-mistakes/vendor/magnific-popup/magnific-popup"; // Magnific Popup 14 | @import "minimal-mistakes/vendor/susy/susy"; 15 | @import "minimal-mistakes/mixins"; 16 | 17 | /* Core CSS */ 18 | @import "minimal-mistakes/reset"; 19 | @import "minimal-mistakes/base"; 20 | @import "minimal-mistakes/forms"; 21 | @import "minimal-mistakes/tables"; 22 | @import "minimal-mistakes/animations"; 23 | 24 | /* Components */ 25 | @import "minimal-mistakes/buttons"; 26 | @import "minimal-mistakes/notices"; 27 | @import "minimal-mistakes/masthead"; 28 | @import "minimal-mistakes/navigation"; 29 | @import "minimal-mistakes/footer"; 30 | @import "minimal-mistakes/search"; 31 | @import "minimal-mistakes/syntax"; 32 | 33 | /* Utility classes */ 34 | @import "minimal-mistakes/utilities"; 35 | 36 | /* Layout specific */ 37 | @import "minimal-mistakes/page"; 38 | @import "minimal-mistakes/archive"; 39 | @import "minimal-mistakes/sidebar"; 40 | @import "minimal-mistakes/print"; 41 | 42 | -------------------------------------------------------------------------------- /docs/_sass/minimal-mistakes/_animations.scss: -------------------------------------------------------------------------------- 1 | /* ========================================================================== 2 | ANIMATIONS 3 | ========================================================================== */ 4 | 5 | @-webkit-keyframes intro { 6 | 0% { 7 | opacity: 0; 8 | } 9 | 100% { 10 | opacity: 1; 11 | } 12 | } 13 | 14 | @keyframes intro { 15 | 0% { 16 | opacity: 0; 17 | } 18 | 100% { 19 | opacity: 1; 20 | } 21 | } -------------------------------------------------------------------------------- /docs/_sass/minimal-mistakes/_tables.scss: -------------------------------------------------------------------------------- 1 | /* ========================================================================== 2 | TABLES 3 | ========================================================================== */ 4 | 5 | table { 6 | display: block; 7 | margin-bottom: 1em; 8 | width: 100%; 9 | font-family: $global-font-family; 10 | font-size: $type-size-6; 11 | border-collapse: collapse; 12 | overflow-x: auto; 13 | 14 | & + table { 15 | margin-top: 1em; 16 | } 17 | } 18 | 19 | thead { 20 | background-color: $border-color; 21 | border-bottom: 2px solid mix(#000, $border-color, 25%); 22 | } 23 | 24 | th { 25 | padding: 0.5em; 26 | font-weight: bold; 27 | text-align: left; 28 | } 29 | 30 | td { 31 | padding: 0.5em; 32 | border-bottom: 1px solid mix(#000, $border-color, 25%); 33 | } 34 | 35 | tr, 36 | td, 37 | th { 38 | vertical-align: middle; 39 | } -------------------------------------------------------------------------------- /docs/_sass/minimal-mistakes/skins/_air.scss: -------------------------------------------------------------------------------- 1 | /* ========================================================================== 2 | Air skin 3 | ========================================================================== */ 4 | 5 | /* Colors */ 6 | $background-color: #eeeeee !default; 7 | $text-color: #222831 !default; 8 | $muted-text-color: #393e46 !default; 9 | $primary-color: #0092ca !default; 10 | $border-color: mix(#fff, #393e46, 75%) !default; 11 | $footer-background-color: $primary-color !default; 12 | $link-color: #393e46 !default; 13 | $masthead-link-color: $text-color !default; 14 | $masthead-link-color-hover: $text-color !default; 15 | $navicon-link-color-hover: mix(#fff, $text-color, 80%) !default; 16 | 17 | .page__footer { 18 | color: #fff !important; // override 19 | } 20 | 21 | .page__footer-follow .social-icons .svg-inline--fa { 22 | color: inherit; 23 | } 24 | -------------------------------------------------------------------------------- /docs/_sass/minimal-mistakes/skins/_aqua.scss: -------------------------------------------------------------------------------- 1 | /* ========================================================================== 2 | Aqua skin 3 | ========================================================================== */ 4 | 5 | /* Colors */ 6 | $gray : #1976d2 !default; 7 | $dark-gray : mix(#000, $gray, 40%) !default; 8 | $darker-gray : mix(#000, $gray, 60%) !default; 9 | $light-gray : mix(#fff, $gray, 50%) !default; 10 | $lighter-gray : mix(#fff, $gray, 90%) !default; 11 | 12 | $body-color : #fff !default; 13 | $background-color : #f0fff0 !default; 14 | $code-background-color : $lighter-gray !default; 15 | $code-background-color-dark : $light-gray !default; 16 | $text-color : $dark-gray !default; 17 | $border-color : $lighter-gray !default; 18 | 19 | $primary-color : $gray !default; 20 | $success-color : #27ae60 !default; 21 | $warning-color : #e67e22 !default; 22 | $danger-color : #c0392b !default; 23 | $info-color : #03a9f4 !default; 24 | 25 | /* links */ 26 | $link-color : $info-color !default; 27 | $link-color-hover : mix(#000, $link-color, 25%) !default; 28 | $link-color-visited : mix(#fff, $link-color, 25%) !default; 29 | $masthead-link-color : $primary-color !default; 30 | $masthead-link-color-hover : mix(#000, $primary-color, 25%) !default; -------------------------------------------------------------------------------- /docs/_sass/minimal-mistakes/skins/_dark.scss: -------------------------------------------------------------------------------- 1 | /* ========================================================================== 2 | Dark skin 3 | ========================================================================== */ 4 | 5 | /* Colors */ 6 | $background-color: #252a34 !default; 7 | $text-color: #eaeaea !default; 8 | $primary-color: #00adb5 !default; 9 | $border-color: mix(#fff, $background-color, 20%) !default; 10 | $code-background-color: mix(#000, $background-color, 15%) !default; 11 | $code-background-color-dark: mix(#000, $background-color, 20%) !default; 12 | $form-background-color: mix(#000, $background-color, 15%) !default; 13 | $footer-background-color: mix(#000, $background-color, 30%) !default; 14 | $link-color: mix($primary-color, $text-color, 40%) !default; 15 | $link-color-hover: mix(#fff, $link-color, 25%) !default; 16 | $link-color-visited: mix(#000, $link-color, 25%) !default; 17 | $masthead-link-color: $text-color !default; 18 | $masthead-link-color-hover: mix(#000, $text-color, 20%) !default; 19 | $navicon-link-color-hover: mix(#000, $background-color, 30%) !default; 20 | 21 | .author__urls.social-icons .svg-inline--fa, 22 | .page__footer-follow .social-icons .svg-inline--fa { 23 | color: inherit; 24 | } 25 | 26 | .ais-search-box .ais-search-box--input { 27 | background-color: $form-background-color; 28 | } -------------------------------------------------------------------------------- /docs/_sass/minimal-mistakes/skins/_default.scss: -------------------------------------------------------------------------------- 1 | /* ========================================================================== 2 | Default skin 3 | ========================================================================== */ 4 | 5 | // Intentionally left blank 6 | -------------------------------------------------------------------------------- /docs/_sass/minimal-mistakes/skins/_dirt.scss: -------------------------------------------------------------------------------- 1 | /* ========================================================================== 2 | Dirt skin 3 | ========================================================================== */ 4 | 5 | /* Colors */ 6 | $background-color: #f3f3f3 !default; 7 | $text-color: #343434 !default; 8 | $muted-text-color: #8e8b82 !default; 9 | $primary-color: #343434 !default; 10 | $border-color: #e9dcbe !default; 11 | $footer-background-color: #e9dcbe !default; 12 | $link-color: #343434 !default; 13 | $masthead-link-color: $text-color !default; 14 | $masthead-link-color-hover: $text-color !default; 15 | $navicon-link-color-hover: mix(#fff, $text-color, 80%) !default; 16 | 17 | /* dirt syntax highlighting (base16) */ 18 | $base00: #231e18 !default; 19 | $base01: #302b25 !default; 20 | $base02: #48413a !default; 21 | $base03: #9d8b70 !default; 22 | $base04: #b4a490 !default; 23 | $base05: #cabcb1 !default; 24 | $base06: #d7c8bc !default; 25 | $base07: #e4d4c8 !default; 26 | $base08: #d35c5c !default; 27 | $base09: #ca7f32 !default; 28 | $base0a: #e0ac16 !default; 29 | $base0b: #b7ba53 !default; 30 | $base0c: #6eb958 !default; 31 | $base0d: #88a4d3 !default; 32 | $base0e: #bb90e2 !default; 33 | $base0f: #b49368 !default; 34 | -------------------------------------------------------------------------------- /docs/_sass/minimal-mistakes/skins/_mint.scss: -------------------------------------------------------------------------------- 1 | /* ========================================================================== 2 | Mint skin 3 | ========================================================================== */ 4 | 5 | /* Colors */ 6 | $background-color: #f3f6f6 !default; 7 | $text-color: #40514e !default; 8 | $muted-text-color: #40514e !default; 9 | $primary-color: #11999e !default; 10 | $border-color: mix(#fff, #40514e, 75%) !default; 11 | $footer-background-color: #30e3ca !default; 12 | $link-color: #11999e !default; 13 | $masthead-link-color: $text-color !default; 14 | $masthead-link-color-hover: $text-color !default; 15 | $navicon-link-color-hover: mix(#fff, $text-color, 80%) !default; 16 | 17 | .page__footer { 18 | color: #fff !important; // override 19 | } 20 | 21 | .page__footer-follow .social-icons .svg-inline--fa { 22 | color: inherit; 23 | } 24 | -------------------------------------------------------------------------------- /docs/assets/css/main.scss: -------------------------------------------------------------------------------- 1 | --- 2 | # Only the main Sass file needs front matter (the dashes are enough) 3 | --- 4 | 5 | @charset "utf-8"; 6 | 7 | @import "minimal-mistakes/skins/{{ site.minimal_mistakes_skin | default: 'default' }}"; // skin 8 | @import "minimal-mistakes"; // main partials -------------------------------------------------------------------------------- /docs/assets/images/Email.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pspete/psPAS/4f44ad552862c4b0b8de333993f058a1b394c40c/docs/assets/images/Email.png -------------------------------------------------------------------------------- /docs/assets/images/Email_symbol.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pspete/psPAS/4f44ad552862c4b0b8de333993f058a1b394c40c/docs/assets/images/Email_symbol.png -------------------------------------------------------------------------------- /docs/assets/images/New-PASSession/CodeFlow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pspete/psPAS/4f44ad552862c4b0b8de333993f058a1b394c40c/docs/assets/images/New-PASSession/CodeFlow.png -------------------------------------------------------------------------------- /docs/assets/images/New-PASSession/IIS.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pspete/psPAS/4f44ad552862c4b0b8de333993f058a1b394c40c/docs/assets/images/New-PASSession/IIS.png -------------------------------------------------------------------------------- /docs/assets/images/New-PASSession/RADIUS.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pspete/psPAS/4f44ad552862c4b0b8de333993f058a1b394c40c/docs/assets/images/New-PASSession/RADIUS.png -------------------------------------------------------------------------------- /docs/assets/images/New-PASSession/SAML.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pspete/psPAS/4f44ad552862c4b0b8de333993f058a1b394c40c/docs/assets/images/New-PASSession/SAML.png -------------------------------------------------------------------------------- /docs/assets/images/PSPETE_symbol.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pspete/psPAS/4f44ad552862c4b0b8de333993f058a1b394c40c/docs/assets/images/PSPETE_symbol.png -------------------------------------------------------------------------------- /docs/assets/images/bio-photo.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pspete/psPAS/4f44ad552862c4b0b8de333993f058a1b394c40c/docs/assets/images/bio-photo.jpg -------------------------------------------------------------------------------- /docs/assets/images/company_logo_symbol.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pspete/psPAS/4f44ad552862c4b0b8de333993f058a1b394c40c/docs/assets/images/company_logo_symbol.png -------------------------------------------------------------------------------- /docs/assets/images/favicon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pspete/psPAS/4f44ad552862c4b0b8de333993f058a1b394c40c/docs/assets/images/favicon.png -------------------------------------------------------------------------------- /docs/assets/images/favicon_symbol.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pspete/psPAS/4f44ad552862c4b0b8de333993f058a1b394c40c/docs/assets/images/favicon_symbol.png -------------------------------------------------------------------------------- /docs/assets/images/github.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pspete/psPAS/4f44ad552862c4b0b8de333993f058a1b394c40c/docs/assets/images/github.png -------------------------------------------------------------------------------- /docs/assets/images/header_photo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pspete/psPAS/4f44ad552862c4b0b8de333993f058a1b394c40c/docs/assets/images/header_photo.png -------------------------------------------------------------------------------- /docs/assets/images/help.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pspete/psPAS/4f44ad552862c4b0b8de333993f058a1b394c40c/docs/assets/images/help.png -------------------------------------------------------------------------------- /docs/assets/images/import.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pspete/psPAS/4f44ad552862c4b0b8de333993f058a1b394c40c/docs/assets/images/import.png -------------------------------------------------------------------------------- /docs/assets/images/install.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pspete/psPAS/4f44ad552862c4b0b8de333993f058a1b394c40c/docs/assets/images/install.png -------------------------------------------------------------------------------- /docs/assets/images/linkedin.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pspete/psPAS/4f44ad552862c4b0b8de333993f058a1b394c40c/docs/assets/images/linkedin.png -------------------------------------------------------------------------------- /docs/assets/images/psPAS-Logo-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pspete/psPAS/4f44ad552862c4b0b8de333993f058a1b394c40c/docs/assets/images/psPAS-Logo-1.png -------------------------------------------------------------------------------- /docs/assets/images/shop_banner_symbol.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pspete/psPAS/4f44ad552862c4b0b8de333993f058a1b394c40c/docs/assets/images/shop_banner_symbol.png -------------------------------------------------------------------------------- /docs/assets/images/symbol.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pspete/psPAS/4f44ad552862c4b0b8de333993f058a1b394c40c/docs/assets/images/symbol.png -------------------------------------------------------------------------------- /docs/assets/images/team_logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pspete/psPAS/4f44ad552862c4b0b8de333993f058a1b394c40c/docs/assets/images/team_logo.png -------------------------------------------------------------------------------- /docs/banner.js: -------------------------------------------------------------------------------- 1 | const fs = require("fs"); 2 | const pkg = require("./package.json"); 3 | const filename = "assets/js/main.min.js"; 4 | const script = fs.readFileSync(filename); 5 | const padStart = str => ("0" + str).slice(-2); 6 | const dateObj = new Date(); 7 | const date = `${dateObj.getFullYear()}-${padStart( 8 | dateObj.getMonth() + 1 9 | )}-${padStart(dateObj.getDate())}`; 10 | const banner = `/*! 11 | * Minimal Mistakes Jekyll Theme ${pkg.version} by ${pkg.author} 12 | * Copyright 2013-${dateObj.getFullYear()} Michael Rose - mademistakes.com | @mmistakes 13 | * Licensed under ${pkg.license} 14 | */ 15 | `; 16 | 17 | if (script.slice(0, 3) != "/**") { 18 | fs.writeFileSync(filename, banner + script); 19 | } 20 | -------------------------------------------------------------------------------- /docs/collections/_commands/Get-PASAllowedReferrer.md: -------------------------------------------------------------------------------- 1 | --- 2 | category: PSPAS 3 | external help file: psPAS-help.xml 4 | Module Name: psPAS 5 | online version: https://pspas.pspete.dev/commands/Get-PASAllowedReferrer 6 | schema: 2.0.0 7 | title: Get-PASAllowedReferrer 8 | --- 9 | 10 | # Get-PASAllowedReferrer 11 | 12 | ## SYNOPSIS 13 | Gets the allowed referrer list 14 | 15 | ## SYNTAX 16 | 17 | ``` 18 | Get-PASAllowedReferrer [] 19 | ``` 20 | 21 | ## DESCRIPTION 22 | Returns details of all configured entries from the allowed referrer list. 23 | 24 | Vault admins group membership required 25 | 26 | ## EXAMPLES 27 | 28 | ### EXAMPLE 1 29 | ``` 30 | Get-PASAllowedReferrer 31 | ``` 32 | 33 | Returns referrer list 34 | 35 | ## PARAMETERS 36 | 37 | ### CommonParameters 38 | This cmdlet supports the common parameters: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutVariable, -OutBuffer, -PipelineVariable, -Verbose, -WarningAction, and -WarningVariable. For more information, see [about_CommonParameters](http://go.microsoft.com/fwlink/?LinkID=113216). 39 | 40 | ## INPUTS 41 | 42 | ## OUTPUTS 43 | 44 | ## NOTES 45 | 46 | ## RELATED LINKS 47 | 48 | [https://pspas.pspete.dev/commands/Get-PASAllowedReferrer](https://pspas.pspete.dev/commands/Get-PASAllowedReferrer) 49 | 50 | [https://docs.cyberark.com/Product-Doc/OnlineHelp/PAS/Latest/en/Content/SDK/Get_Allowed_Referrer.htm](https://docs.cyberark.com/Product-Doc/OnlineHelp/PAS/Latest/en/Content/SDK/Get_Allowed_Referrer.htm) 51 | -------------------------------------------------------------------------------- /docs/collections/_commands/Get-PASLoggedOnUser.md: -------------------------------------------------------------------------------- 1 | --- 2 | category: PSPAS 3 | external help file: psPAS-help.xml 4 | Module Name: psPAS 5 | online version: https://pspas.pspete.dev/commands/Get-PASLoggedOnUser 6 | schema: 2.0.0 7 | title: Get-PASLoggedOnUser 8 | --- 9 | 10 | # Get-PASLoggedOnUser 11 | 12 | ## SYNOPSIS 13 | Returns details of the logged on user 14 | 15 | ## SYNTAX 16 | 17 | ``` 18 | Get-PASLoggedOnUser [] 19 | ``` 20 | 21 | ## DESCRIPTION 22 | Returns information on the user who is logged in. 23 | 24 | ## EXAMPLES 25 | 26 | ### EXAMPLE 1 27 | ``` 28 | Get-PASLoggedOnUser 29 | ``` 30 | 31 | Returns information on the currently authenticated user. 32 | 33 | ## PARAMETERS 34 | 35 | ### CommonParameters 36 | This cmdlet supports the common parameters: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutVariable, -OutBuffer, -PipelineVariable, -Verbose, -WarningAction, and -WarningVariable. For more information, see [about_CommonParameters](http://go.microsoft.com/fwlink/?LinkID=113216). 37 | 38 | ## INPUTS 39 | 40 | ## OUTPUTS 41 | 42 | ## NOTES 43 | 44 | ## RELATED LINKS 45 | 46 | [https://pspas.pspete.dev/commands/Get-PASLoggedOnUser](https://pspas.pspete.dev/commands/Get-PASLoggedOnUser) 47 | 48 | [https://docs.cyberark.com/Product-Doc/OnlineHelp/PAS/Latest/en/Content/SDK/User%20Web%20Services%20-%20Logged%20on%20User%20Details.htm](https://docs.cyberark.com/Product-Doc/OnlineHelp/PAS/Latest/en/Content/SDK/User%20Web%20Services%20-%20Logged%20on%20User%20Details.htm) 49 | -------------------------------------------------------------------------------- /docs/collections/_commands/Get-PASPSMServer.md: -------------------------------------------------------------------------------- 1 | --- 2 | category: PSPAS 3 | external help file: psPAS-help.xml 4 | Module Name: psPAS 5 | online version: https://pspas.pspete.dev/commands/Get-PASPSMServer 6 | schema: 2.0.0 7 | title: Get-PASPSMServer 8 | --- 9 | 10 | # Get-PASPSMServer 11 | 12 | ## SYNOPSIS 13 | Lists configured PSM Servers 14 | 15 | ## SYNTAX 16 | 17 | ``` 18 | Get-PASPSMServer [] 19 | ``` 20 | 21 | ## DESCRIPTION 22 | Allows Vault admins to get a list of all PSM servers defined for an environment. 23 | 24 | ## EXAMPLES 25 | 26 | ### EXAMPLE 1 27 | ``` 28 | Get-PASPSMServer 29 | ``` 30 | 31 | Lists all configured PSM Servers 32 | 33 | ## PARAMETERS 34 | 35 | ### CommonParameters 36 | This cmdlet supports the common parameters: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutVariable, -OutBuffer, -PipelineVariable, -Verbose, -WarningAction, and -WarningVariable. For more information, see [about_CommonParameters](http://go.microsoft.com/fwlink/?LinkID=113216). 37 | 38 | ## INPUTS 39 | 40 | ## OUTPUTS 41 | 42 | ## NOTES 43 | 44 | ## RELATED LINKS 45 | 46 | [https://pspas.pspete.dev/commands/Get-PASPSMServer](https://pspas.pspete.dev/commands/Get-PASPSMServer) 47 | 48 | [https://docs.cyberark.com/Product-Doc/OnlineHelp/PAS/Latest/en/Content/SDK/Session%20Mngmnt%20-%20Get_All_PSM_Servers.htm](https://docs.cyberark.com/Product-Doc/OnlineHelp/PAS/Latest/en/Content/SDK/Session%20Mngmnt%20-%20Get_All_PSM_Servers.htm) 49 | -------------------------------------------------------------------------------- /docs/collections/_commands/Get-PASPTAExcludedTarget.md: -------------------------------------------------------------------------------- 1 | --- 2 | category: PSPAS 3 | external help file: psPAS-help.xml 4 | Module Name: psPAS 5 | online version: https://pspas.pspete.dev/commands/Get-PASPTAExcludedTarget 6 | schema: 2.0.0 7 | title: Get-PASPTAExcludedTarget 8 | --- 9 | 10 | # Get-PASPTAExcludedTarget 11 | 12 | ## SYNOPSIS 13 | Get excluded target from the PTA 14 | 15 | ## SYNTAX 16 | 17 | ``` 18 | Get-PASPTAExcludedTarget [] 19 | ``` 20 | 21 | ## DESCRIPTION 22 | Returns excluded target properties from PTA security configuration 23 | 24 | ## EXAMPLES 25 | 26 | ### EXAMPLE 1 27 | ```powershell 28 | Get-PASPTAExcludedTarget 29 | ``` 30 | 31 | Returns all configured excluded targets 32 | 33 | ## PARAMETERS 34 | 35 | ### CommonParameters 36 | This cmdlet supports the common parameters: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutVariable, -OutBuffer, -PipelineVariable, -Verbose, -WarningAction, and -WarningVariable. For more information, see [about_CommonParameters](http://go.microsoft.com/fwlink/?LinkID=113216). 37 | 38 | ## INPUTS 39 | 40 | ## OUTPUTS 41 | 42 | ## NOTES 43 | 44 | ## RELATED LINKS 45 | 46 | [https://pspas.pspete.dev/commands/Get-PASPTAExcludedTarget](https://pspas.pspete.dev/commands/Get-PASPTAExcludedTarget) 47 | 48 | [https://docs.cyberark.com/PAS/Latest/en/Content/WebServices/GetAdministration.htm](https://docs.cyberark.com/PAS/Latest/en/Content/WebServices/GetAdministration.htm) 49 | -------------------------------------------------------------------------------- /docs/collections/_commands/Get-PASPTAIncludedTarget.md: -------------------------------------------------------------------------------- 1 | --- 2 | category: PSPAS 3 | external help file: psPAS-help.xml 4 | Module Name: psPAS 5 | online version: https://pspas.pspete.dev/commands/Get-PASPTAIncludedTarget 6 | schema: 2.0.0 7 | title: Get-PASPTAIncludedTarget 8 | --- 9 | 10 | # Get-PASPTAIncludedTarget 11 | 12 | ## SYNOPSIS 13 | Returns included target property from PTA 14 | 15 | ## SYNTAX 16 | 17 | ``` 18 | Get-PASPTAIncludedTarget [] 19 | ``` 20 | 21 | ## DESCRIPTION 22 | Returns included target property from PTA security configuration 23 | 24 | ## EXAMPLES 25 | 26 | ### EXAMPLE 1 27 | ```powershell 28 | Get-PASPTAIncludedTarget 29 | ``` 30 | 31 | Returns all configured included targets from PTA configuration 32 | 33 | ## PARAMETERS 34 | 35 | ### CommonParameters 36 | This cmdlet supports the common parameters: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutVariable, -OutBuffer, -PipelineVariable, -Verbose, -WarningAction, and -WarningVariable. For more information, see [about_CommonParameters](http://go.microsoft.com/fwlink/?LinkID=113216). 37 | 38 | ## INPUTS 39 | 40 | ## OUTPUTS 41 | 42 | ## NOTES 43 | 44 | ## RELATED LINKS 45 | 46 | [https://pspas.pspete.dev/commands/Get-PASPTAPrivilegedGroup](https://pspas.pspete.dev/commands/Get-PASPTAIncludedTarget) 47 | 48 | [https://docs.cyberark.com/PAS/Latest/en/Content/WebServices/GetAdministration.htm](https://docs.cyberark.com/PAS/Latest/en/Content/WebServices/GetAdministration.htm) 49 | -------------------------------------------------------------------------------- /docs/collections/_commands/Get-PASPTAPrivilegedGroup.md: -------------------------------------------------------------------------------- 1 | --- 2 | category: PSPAS 3 | external help file: psPAS-help.xml 4 | Module Name: psPAS 5 | online version: https://pspas.pspete.dev/commands/Get-PASPTAPrivilegedGroup 6 | schema: 2.0.0 7 | title: Get-PASPTAPrivilegedGroup 8 | --- 9 | 10 | # Get-PASPTAPrivilegedGroup 11 | 12 | ## SYNOPSIS 13 | Get configured PTA PrivilegedDomainGroupsList 14 | 15 | ## SYNTAX 16 | 17 | ``` 18 | Get-PASPTAPrivilegedGroup [] 19 | ``` 20 | 21 | ## DESCRIPTION 22 | Return PrivilegedDomainGroupsList from PTA 23 | 24 | ## EXAMPLES 25 | 26 | ### EXAMPLE 1 27 | ```powershell 28 | Get-PASPTAPrivilegedGroup 29 | ``` 30 | 31 | Return PrivilegedDomainGroupsList from PTA 32 | 33 | ## PARAMETERS 34 | 35 | ### CommonParameters 36 | This cmdlet supports the common parameters: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutVariable, -OutBuffer, -PipelineVariable, -Verbose, -WarningAction, and -WarningVariable. For more information, see [about_CommonParameters](http://go.microsoft.com/fwlink/?LinkID=113216). 37 | 38 | ## INPUTS 39 | 40 | ## OUTPUTS 41 | 42 | ## NOTES 43 | 44 | ## RELATED LINKS 45 | 46 | [https://pspas.pspete.dev/commands/Get-PASPTAPrivilegedGroup](https://pspas.pspete.dev/commands/Get-PASPTAPrivilegedGroup) 47 | 48 | [https://docs.cyberark.com/PAS/Latest/en/Content/WebServices/GetSecurity.htm](https://docs.cyberark.com/PAS/Latest/en/Content/WebServices/GetSecurity.htm) 49 | -------------------------------------------------------------------------------- /docs/collections/_commands/Get-PASPTARemediation.md: -------------------------------------------------------------------------------- 1 | --- 2 | category: PSPAS 3 | external help file: psPAS-help.xml 4 | Module Name: psPAS 5 | online version: https://pspas.pspete.dev/commands/Get-PASPTARemediation 6 | schema: 2.0.0 7 | title: Get-PASPTARemediation 8 | --- 9 | 10 | # Get-PASPTARemediation 11 | 12 | ## SYNOPSIS 13 | Returns automatic remediation settings from PTA 14 | 15 | ## SYNTAX 16 | 17 | ``` 18 | Get-PASPTARemediation [] 19 | ``` 20 | 21 | ## DESCRIPTION 22 | Returns automatic remediation settings configured in PTA 23 | 24 | ## EXAMPLES 25 | 26 | ### EXAMPLE 1 27 | ``` 28 | Get-PASPTARemediation 29 | ``` 30 | 31 | Returns all automatic remediation settings from PTA 32 | 33 | ## PARAMETERS 34 | 35 | ### CommonParameters 36 | This cmdlet supports the common parameters: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutVariable, -OutBuffer, -PipelineVariable, -Verbose, -WarningAction, and -WarningVariable. For more information, see [about_CommonParameters](http://go.microsoft.com/fwlink/?LinkID=113216). 37 | 38 | ## INPUTS 39 | 40 | ## OUTPUTS 41 | 42 | ## NOTES 43 | Minimum Version CyberArk 10.4 44 | 45 | ## RELATED LINKS 46 | 47 | [https://pspas.pspete.dev/commands/Get-PASPTARemediation](https://pspas.pspete.dev/commands/Get-PASPTARemediation) 48 | 49 | [https://docs.cyberark.com/Product-Doc/OnlineHelp/PAS/Latest/en/Content/WebServices/GetSettings.htm](https://docs.cyberark.com/Product-Doc/OnlineHelp/PAS/Latest/en/Content/WebServices/GetSettings.htm) 50 | -------------------------------------------------------------------------------- /docs/collections/_commands/Get-PASPTARiskSummary.md: -------------------------------------------------------------------------------- 1 | --- 2 | external help file: psPAS-help.xml 3 | Module Name: psPAS 4 | online version: https://pspas.pspete.dev/commands/Get-PASPTARiskEventSummary 5 | schema: 2.0.0 6 | --- 7 | 8 | # Get-PASPTARiskSummary 9 | 10 | ## SYNOPSIS 11 | 12 | Get PTA risk events summary. 13 | 14 | ## SYNTAX 15 | 16 | ``` 17 | Get-PASPTARiskSummary [] 18 | ``` 19 | 20 | ## DESCRIPTION 21 | Display count and summary information on current PTA Risk Events. 22 | 23 | Requires minimum version of 13.2 24 | 25 | ## EXAMPLES 26 | 27 | ### EXAMPLE 1 28 | ```powershell 29 | Get-PASPTARiskEventSummary 30 | ``` 31 | 32 | Output PTA risk events summary 33 | 34 | ## PARAMETERS 35 | 36 | ### CommonParameters 37 | This cmdlet supports the common parameters: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutVariable, -OutBuffer, -PipelineVariable, -Verbose, -WarningAction, and -WarningVariable. For more information, see [about_CommonParameters](http://go.microsoft.com/fwlink/?LinkID=113216). 38 | 39 | ## INPUTS 40 | 41 | ## OUTPUTS 42 | 43 | ## NOTES 44 | 45 | ## RELATED LINKS 46 | 47 | [https://pspas.pspete.dev/commands/Get-PASPTARiskEventSummary](https://pspas.pspete.dev/commands/Get-PASPTARiskEventSummary) 48 | 49 | [https://docs.cyberark.com/PAS/Latest/en/Content/WebServices/GetRisks.htm](https://docs.cyberark.com/PAS/Latest/en/Content/WebServices/GetRisks.htm) 50 | -------------------------------------------------------------------------------- /docs/collections/_commands/Get-PASPTARule.md: -------------------------------------------------------------------------------- 1 | --- 2 | category: PSPAS 3 | external help file: psPAS-help.xml 4 | Module Name: psPAS 5 | online version: https://pspas.pspete.dev/commands/Get-PASPTARule 6 | schema: 2.0.0 7 | title: Get-PASPTARule 8 | --- 9 | 10 | # Get-PASPTARule 11 | 12 | ## SYNOPSIS 13 | Returns risky activities rules from PTA 14 | 15 | ## SYNTAX 16 | 17 | ``` 18 | Get-PASPTARule [] 19 | ``` 20 | 21 | ## DESCRIPTION 22 | Returns risky activities rules configured in PTA 23 | 24 | ## EXAMPLES 25 | 26 | ### EXAMPLE 1 27 | ``` 28 | Get-PASPTARule 29 | ``` 30 | 31 | Returns all risky activities rules from PTA 32 | 33 | ## PARAMETERS 34 | 35 | ### CommonParameters 36 | This cmdlet supports the common parameters: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutVariable, -OutBuffer, -PipelineVariable, -Verbose, -WarningAction, and -WarningVariable. For more information, see [about_CommonParameters](http://go.microsoft.com/fwlink/?LinkID=113216). 37 | 38 | ## INPUTS 39 | 40 | ## OUTPUTS 41 | 42 | ## NOTES 43 | Minimum Version CyberArk 10.4 44 | 45 | ## RELATED LINKS 46 | 47 | [https://pspas.pspete.dev/commands/Get-PASPTARule](https://pspas.pspete.dev/commands/Get-PASPTARule) 48 | 49 | [https://docs.cyberark.com/Product-Doc/OnlineHelp/PAS/Latest/en/Content/WebServices/GetSettings.htm](https://docs.cyberark.com/Product-Doc/OnlineHelp/PAS/Latest/en/Content/WebServices/GetSettings.htm) 50 | -------------------------------------------------------------------------------- /docs/collections/_commands/Get-PASPlatformSummary.md: -------------------------------------------------------------------------------- 1 | --- 2 | external help file: psPAS-help.xml 3 | Module Name: psPAS 4 | online version: https://pspas.pspete.dev/commands/Get-PASPlatformSummary 5 | schema: 2.0.0 6 | title: Get-PASPlatformSummary 7 | --- 8 | 9 | # Get-PASPlatformSummary 10 | 11 | ## SYNOPSIS 12 | 13 | Get list of all platform system types 14 | 15 | ## SYNTAX 16 | 17 | ``` 18 | Get-PASPlatformSummary [] 19 | ``` 20 | 21 | ## DESCRIPTION 22 | Retrieve basic information on all existing platform system types. 23 | 24 | ## EXAMPLES 25 | 26 | ### EXAMPLE 1 27 | ```powershell 28 | PS C:\> Get-PASPlatformSummary 29 | ``` 30 | 31 | Returns list and count of each current platform system types. 32 | 33 | ## PARAMETERS 34 | 35 | ### CommonParameters 36 | This cmdlet supports the common parameters: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutVariable, -OutBuffer, -PipelineVariable, -Verbose, -WarningAction, and -WarningVariable. For more information, see [about_CommonParameters](http://go.microsoft.com/fwlink/?LinkID=113216). 37 | 38 | ## INPUTS 39 | 40 | ## OUTPUTS 41 | 42 | ## NOTES 43 | 44 | ## RELATED LINKS 45 | 46 | [https://pspas.pspete.dev/commands/Get-PASPlatformSummary](https://pspas.pspete.dev/commands/Get-PASPlatformSummary) 47 | -------------------------------------------------------------------------------- /docs/collections/_commands/Get-PASUserLoginInfo.md: -------------------------------------------------------------------------------- 1 | --- 2 | category: PSPAS 3 | external help file: psPAS-help.xml 4 | Module Name: psPAS 5 | online version: https://pspas.pspete.dev/commands/Get-PASUserLoginInfo 6 | schema: 2.0.0 7 | title: Get-PASUserLoginInfo 8 | --- 9 | 10 | # Get-PASUserLoginInfo 11 | 12 | ## SYNOPSIS 13 | Get Login information for the current user 14 | 15 | ## SYNTAX 16 | 17 | ``` 18 | Get-PASUserLoginInfo [] 19 | ``` 20 | 21 | ## DESCRIPTION 22 | Returns data about the User that is currently logged into the system 23 | 24 | ## EXAMPLES 25 | 26 | ### EXAMPLE 1 27 | ``` 28 | Get-PASUserLoginInfo 29 | ``` 30 | 31 | Returns Login Info for the current user 32 | 33 | ## PARAMETERS 34 | 35 | ### CommonParameters 36 | This cmdlet supports the common parameters: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutVariable, -OutBuffer, -PipelineVariable, -Verbose, -WarningAction, and -WarningVariable. For more information, see [about_CommonParameters](http://go.microsoft.com/fwlink/?LinkID=113216). 37 | 38 | ## INPUTS 39 | 40 | ## OUTPUTS 41 | 42 | ## NOTES 43 | 44 | ## RELATED LINKS 45 | 46 | [https://pspas.pspete.dev/commands/Get-PASUserLoginInfo](https://pspas.pspete.dev/commands/Get-PASUserLoginInfo) 47 | 48 | -------------------------------------------------------------------------------- /docs/collections/_commands/Get-PASUserTypeInfo.md: -------------------------------------------------------------------------------- 1 | --- 2 | external help file: psPAS-help.xml 3 | Module Name: psPAS 4 | online version: https://pspas.pspete.dev/commands/Get-PASUserTypeInfo 5 | schema: 2.0.0 6 | title: Get-PASUserTypeInfo 7 | --- 8 | 9 | # Get-PASUserTypeInfo 10 | 11 | ## SYNOPSIS 12 | Output information about user types 13 | 14 | ## SYNTAX 15 | 16 | ``` 17 | Get-PASUserTypeInfo [] 18 | ``` 19 | 20 | ## DESCRIPTION 21 | Returns information about user types. 22 | 23 | Requires the Audit Users permission. 24 | 25 | Requires minimum version 13.2 26 | 27 | ## EXAMPLES 28 | 29 | ### EXAMPLE 1 30 | ```powershell 31 | Get-PASUserTypeInfo 32 | ``` 33 | 34 | Output information about available user types 35 | 36 | ## PARAMETERS 37 | 38 | ### CommonParameters 39 | This cmdlet supports the common parameters: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutVariable, -OutBuffer, -PipelineVariable, -Verbose, -WarningAction, and -WarningVariable. For more information, see [about_CommonParameters](http://go.microsoft.com/fwlink/?LinkID=113216). 40 | 41 | ## INPUTS 42 | 43 | ## OUTPUTS 44 | 45 | ## NOTES 46 | 47 | ## RELATED LINKS 48 | 49 | [https://pspas.pspete.dev/commands/Get-PASUserTypeInfo](https://pspas.pspete.dev/commands/Get-PASUserTypeInfo) 50 | 51 | [https://docs.cyberark.com/PAS/13.2/en/Content/SDK/API-GetUserTypes.htm](https://docs.cyberark.com/PAS/13.2/en/Content/SDK/API-GetUserTypes.htm) -------------------------------------------------------------------------------- /docs/collections/_docs/24-cpm-operations.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: "CPM Operations" 3 | permalink: /docs/cpm-operations/ 4 | excerpt: "psPAS CPM Operations" 5 | last_modified_at: 2019-09-01T01:33:52-00:00 6 | --- 7 | 8 | ## Verify 9 | 10 | - Verify passwords 11 | 12 | ```powershell 13 | # immediate verification 14 | Invoke-PASCPMOperation -AccountID $ID -VerifyTask 15 | ``` 16 | 17 | ## Change 18 | 19 | - Change passwords for accounts or account groups 20 | 21 | ```powershell 22 | # immediate change 23 | Invoke-PASCPMOperation -AccountID $ID -ChangeTask 24 | 25 | # immediate change to a specific password value 26 | Invoke-PASCPMOperation -AccountID $ID -ChangeTask -ChangeImmediately $true -NewCredentials $SecureString 27 | 28 | # change password in the Vault only 29 | Invoke-PASCPMOperation -AccountID $ID -ChangeTask -NewCredentials $SecureString 30 | 31 | # change password for account group 32 | Invoke-PASCPMOperation -AccountID $ID -ChangeTask -ChangeEntireGroup $true 33 | 34 | # change password for account group to a specific password value 35 | Invoke-PASCPMOperation -AccountID $ID -ChangeTask -ChangeEntireGroup $true -NewCredentials $SecureString 36 | ``` 37 | 38 | ## Reconcile 39 | 40 | - Reconcile passwords 41 | 42 | ```powershell 43 | # immediate reconcile 44 | Invoke-PASCPMOperation -AccountID $ID -ReconcileTask 45 | ``` 46 | -------------------------------------------------------------------------------- /docs/collections/_docs/34-psm-sessions.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: "PSM Sessions" 3 | permalink: /docs/psm-sessions/ 4 | excerpt: "psPAS PSM Sessions" 5 | last_modified_at: 2019-09-01T01:33:52-00:00 6 | --- 7 | 8 | ## Terminate all Active PSM Sessions on a PSM Server 9 | 10 | ````powershell 11 | #Find Active Sessions for a PSM Server IP 12 | #Terminate the Sessions 13 | Get-PASPSMSession | Where-Object{ 14 | ($_.RawProperties.ProviderID -eq $(Get-PASComponentDetail -ComponentID SessionManagement | 15 | Where-Object{$_.ComponentIP -eq "192.168.60.20"} | 16 | Select -ExpandProperty ComponentUserName)) 17 | -and ($_.IsLive) -and ($_.CanTerminate)} | Stop-PASPSMSession 18 | ```` 19 | -------------------------------------------------------------------------------- /docs/collections/_docs/36-update-accounts.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: "Update Accounts" 3 | permalink: /docs/update-accounts/ 4 | excerpt: "psPAS Update Accounts" 5 | last_modified_at: 2019-09-01T01:33:52-00:00 6 | --- 7 | 8 | ## Updating Multiple Properties of an Account 9 | 10 | - Multiple updates can be performed in a single request: 11 | 12 | ````powershell 13 | [array]$operations += @{"op"="remove";"path"="/platformAccountProperties/LogonDomain"} 14 | [array]$operations += @{"op"="replace";"path"="/name";"value"="SomeNewName"} 15 | [array]$operations += @{"op"="replace";"path"="/address";"value"="domain.co.uk"} 16 | 17 | Set-PASAccount -AccountID 286_4 -operations $operations 18 | 19 | AccountID : 286_4 20 | Safe : 3_TestSafe_028_XYJ 21 | address : domain.co.uk 22 | userName : sbwudlov 23 | name : SomeNewName 24 | platformId : Z_WINDOMAIN_OFF 25 | secretType : password 26 | secretManagement : @{automaticManagementEnabled=True; lastModifiedTime=1559864222} 27 | createdTime : 06/06/2019 23:37:02 28 | ```` 29 | -------------------------------------------------------------------------------- /docs/collections/_docs/38-methods.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: "Methods" 3 | permalink: /docs/methods/ 4 | excerpt: "psPAS Methods" 5 | last_modified_at: 2019-09-01T01:33:52-00:00 6 | --- 7 | 8 | ## Using Methods 9 | 10 | Methods present on objects returned from psPAS functions can be leveraged to get the data you need with ease. 11 | 12 | - The `psPAS.CyberArk.Vault.Safe` object returned by `Get-PASSafe` has a ScriptMethod (`SafeMembers()`), which will run a query for the members of the safe: 13 | 14 | ```powershell 15 | #List all safes where AppUser is not a member 16 | Get-PASSafe | Where-Object{ ($_.safemembers() | Select-Object -ExpandProperty UserName) -notcontains "AppUser"} 17 | ``` 18 | 19 | - Retrieved credentials can be immediately converted into Secure Strings: 20 | 21 | ```powershell 22 | (Get-PASAccount -id 330_5 | Get-PASAccountPassword).ToSecureString() 23 | ``` 24 | -------------------------------------------------------------------------------- /docs/collections/_drafts/####-##-##-pspas-release-#-#.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: "psPAS Release #.#" 3 | date: 2022-02-12 00:00:00 4 | tags: 5 | - Release Notes 6 | --- 7 | 8 | ## #.#.# (Month ## ####) 9 | 10 | Content -------------------------------------------------------------------------------- /docs/collections/_drafts/2024-01-27-pspas-release-6-1.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: "psPAS Release 6.1" 3 | date: 2024-01-27 00:00:00 4 | tags: 5 | - Release Notes 6 | --- 7 | 8 | ## 6.1.0 (January 27 2024) 9 | 10 | ### Module update to cover all CyberArk 14.0 API features 11 | 12 | ### Added 13 | - N/A 14 | 15 | ### Changed 16 | - N/A 17 | 18 | ### Fixed 19 | - N/A 20 | 21 | -------------------------------------------------------------------------------- /docs/collections/_pages/articles.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: "psPAS Articles" 3 | permalink: /articles/ 4 | layout: posts 5 | author_profile: true 6 | --- 7 | -------------------------------------------------------------------------------- /docs/collections/_pages/category-archive.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: "Posts by Category" 3 | layout: categories 4 | permalink: /categories/ 5 | author_profile: true 6 | --- -------------------------------------------------------------------------------- /docs/collections/_pages/tag-archive.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: "Posts by Tag" 3 | permalink: /tags/ 4 | layout: tags 5 | author_profile: true 6 | --- -------------------------------------------------------------------------------- /docs/collections/_posts/2018-02-12-pspas-release-1-0.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: "psPAS Release 1.0" 3 | date: 2018-02-12 00:00:00 4 | tags: 5 | - Release Notes 6 | - PowerShell Gallery 7 | --- 8 | 9 | ## 1.0.6 (February 12 2018) 10 | 11 | Published to [PowerShell Gallery](http://powershellgallery.com/packages/psPAS) 12 | -------------------------------------------------------------------------------- /docs/collections/_posts/2018-03-09-pspas-release-1-1.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: "psPAS Release 1.1" 3 | date: 2018-02-12 00:00:00 4 | tags: 5 | - Release Notes 6 | - Add-PASAccountGroupMember 7 | - New-PASAccountGroup 8 | - Get-PASOnboardingRule 9 | - New-PASOnboardingRule 10 | - Remove-PASOnboardingRule 11 | --- 12 | 13 | ## 1.1.8 (March 09 2018) 14 | 15 | - Bug Fixes: 16 | - `Add-PASAccountGroupMember` now sends AccountID with request. 17 | - `New-PASAccountGroup` fixed an incorrect parameter name (_GroupPlatformID_). 18 | - `New-PASSAMLSession` - basic authentication token now sent in request header. 19 | - `Get-PASOnboardingRule`, `New-PASOnboardingRule` & `Remove-PASOnboardingRule`, 20 | parameters updated to allow specification of alternate PVWA application name 21 | (in-line with the rest of the module's functions). 22 | -------------------------------------------------------------------------------- /docs/collections/_posts/2018-06-05-pspas-release-1-3.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: "psPAS Release 1.3" 3 | date: 2018-06-05 00:00:00 4 | tags: 5 | - Release Notes 6 | - Import-PASConnectionComponent 7 | --- 8 | 9 | ## 1.3.0 (June 5 2018) 10 | 11 | ### Module update to cover CyberArk 10.3 API features ~~(part 1)~~ 12 | 13 | - New Function 14 | - `Import-PASConnectionComponent` function added, allows import of connection component from zip file. 15 | 16 | - Bug Fixes 17 | - Updates to some functions and test scripts to fix Pester & PSScriptAnalyzer failures/violations/errors 18 | - Updates to some pester tests to allow them to run & pass in PowerShell Core 19 | 20 | - Other Updates 21 | - Build, Test, Deploy process updated to run in PowerShell Core instead of Windows PowerShell 5 22 | - Removed about_psPAS_Versions.help.txt - an unhelpful help file. 23 | -------------------------------------------------------------------------------- /docs/collections/_posts/2018-07-18-pspas-release-2-1.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: "psPAS Release 2.1" 3 | date: 2018-07-18 00:00:00 4 | tags: 5 | - Release Notes 6 | - Get-PASPTAEvent 7 | - Get-PASPTARule 8 | - Get-PASPTARemediation 9 | - Add-PASPTARule 10 | - Set-PASPTARule 11 | - Set-PASPTARemediation 12 | --- 13 | 14 | ## 2.1.0 (July 18th 2018) 15 | 16 | - New Functions 17 | - `Get-PASPTAEvent` - function added, returns security events from PTA. 18 | - `Get-PASPTARule` - function added, returns rules from PTA. 19 | - `Get-PASPTARemediation` - function added, returns automatic remediation settings frm PTA. 20 | - `Add-PASPTARule` - function added, adds a new rule to PTA. 21 | - `Set-PASPTARule` - function added, updates a rule in PTA. 22 | - `Set-PASPTARemediation` - function added, updates automatic remediation.settings in PTA. 23 | -------------------------------------------------------------------------------- /docs/collections/_posts/2018-10-21-pspas-release-2-2.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: "psPAS Release 2.2" 3 | date: 2018-10-21 00:00:00 4 | tags: 5 | - Release Notes 6 | - New-PASSession 7 | - Get-PASAccountPassword 8 | - Get-PASAccount 9 | - Export-PASPlatform 10 | --- 11 | 12 | ## 2.2.22 (October 21st 2018) 13 | 14 | - Update 15 | - `New-PASSession` 16 | - Option added to use Windows integrated authentication with default credentials 17 | - Thanks [steveredden](https://github.com/steveredden)! 18 | 19 | ## 2.2.10 (September 23rd 2018) 20 | 21 | - Bug Fix 22 | - `Get-PASAccountPassword` 23 | - Fix applied to allow accountID from version 10 to be accepted from pipeline object. 24 | - `Get-PASAccount` 25 | - Validation added to `limit` parameter. 26 | 27 | ## 2.2.2 (September 12th 2018) 28 | 29 | - Bug Fix 30 | - `Get-PASAccountPassword` 31 | - Backward compatibility for retrieving password values from CyberArk version 9 restored. 32 | 33 | ## 2.2.0 (July 27th 2018) 34 | 35 | - Bug Fix 36 | - `Export-PASPlatform` 37 | - Exported files were invalid, now fixed. 38 | - Thanks [jmk-foofus](https://github.com/jmk-foofus)! 39 | -------------------------------------------------------------------------------- /docs/collections/_posts/2019-05-16-pspas-release-2-6.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: "psPAS Release 2.6" 3 | date: 2019-05-16 00:00:00 4 | tags: 5 | - Release Notes 6 | - Add-PASDirectory 7 | - New-PASUser 8 | - Get-PASUser 9 | 10 | --- 11 | 12 | ## 2.6.17 (May 16th 2019) 13 | 14 | - Fix 15 | - `Add-PASDirectory` 16 | - Parameter `SSLConnect` added (required if adding LDAPS hosts) 17 | - Thanks (again) [jmk-foofus](https://github.com/jmk-foofus)! 18 | 19 | ## 2.6.15 (May 2nd 2019) 20 | 21 | ### Module update to cover CyberArk 10.9 API features 22 | 23 | - Updated Functions 24 | - `New-PASUser` 25 | - Added support for the updated Add User API method for v10.9 26 | - `Get-PASUser` 27 | - Added support for the updated Get Users API method for v10.9 28 | -------------------------------------------------------------------------------- /docs/collections/_posts/2019-09-17-pspas-release-3-2.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: "psPAS Release 3.2" 3 | date: 2019-09-17 00:00:00 4 | tags: 5 | - Release Notes 6 | - New-PASSession 7 | - Get-PASAccountPassword 8 | - Add-PASSafeMember 9 | --- 10 | 11 | ## 3.2.37 (Sept 17th 2019) 12 | 13 | - Update Format for `psPAS.CyberArk.Vault.User` 14 | - Change default displayed properties when searching users with V10 API. 15 | 16 | ## 3.2.34 (Sept 11th 2019) 17 | 18 | - Minor updates to Help Text. 19 | - Clarified version requirements for parameters & api capabilities. 20 | 21 | ## 3.2.32 (Sept 5th 2019) 22 | 23 | - Fixes 24 | - `Add-PASSafeMember` 25 | - Update validation of MemberName parameter to not accept values containing `&` symbol. 26 | 27 | ## 3.2.30 (Sept 1st 2019) 28 | 29 | - Update 30 | - Raise minimum required PowerShell version to 5.0. 31 | 32 | ## 3.2.27 (Sept 1st 2019) 33 | 34 | - Updates 35 | - `New-PASSession` 36 | - Adds support for sending OTP in response to RADIUS Challenge 37 | - Adds support to skip certificate validation 38 | 39 | - Fixes 40 | - `Get-PASAccountPassword` 41 | - Parameter name corrected to `TicketingSystem` from `TicketingSystemName` 42 | -------------------------------------------------------------------------------- /docs/collections/_posts/2020-08-24-pspas-release-4-4.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: "psPAS Release 4.4" 3 | date: 2020-08-24 00:00:00 4 | tags: 5 | - Release Notes 6 | - Set-PASUser 7 | - New-PASUser 8 | - Add-PASAccount 9 | - Get-PASAccount 10 | - Get-PASDiscoveredAccount 11 | - New-PASAccountObject 12 | - Get-PASAccountImportJob 13 | - Start-PASAccountImportJob 14 | --- 15 | 16 | ## **4.4.71** (August 24th 2020) 17 | 18 | ### Module update to cover all CyberArk 11.6 API features 19 | 20 | - New Functions 21 | - `Start-PASAccountImportJob` 22 | - Add multiple accounts to existing safes 23 | - `Get-PASAccountImportJob` 24 | - Get status of bulk account import jobs 25 | - `New-PASAccountObject` 26 | - Formats an object to include in the list of accounts to be added using `Start-PASAccountImportJob`. 27 | - `Get-PASDiscoveredAccount` 28 | - Search for and list discovered accounts. 29 | - Updated Functions 30 | - `Get-PASAccount` 31 | - Updated to remove repeated code 32 | - `Add-PASAccount` 33 | - Updated to use `New-PASAccountObject` to create required request object. 34 | - `New-PASUser` 35 | - Updated to remove repeated code 36 | - `Set-PASUser` 37 | - Updated to remove repeated code 38 | -------------------------------------------------------------------------------- /docs/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pspete/psPAS/4f44ad552862c4b0b8de333993f058a1b394c40c/docs/favicon.ico -------------------------------------------------------------------------------- /docs/index.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: "psPAS" 3 | layout: splash 4 | excerpt: "The Community Developed PowerShell Module for the CyberArk REST API." 5 | header: 6 | overlay_image: /assets/images/shop_banner_symbol.png 7 | overlay_filter: rgba(40, 106, 205, 0.9) 8 | actions: 9 | - label: "GitHub" 10 | url: "https://github.com/pspete/psPAS" 11 | - label: "PowerShell Gallery" 12 | url: "https://www.powershellgallery.com/packages/psPAS/" 13 | - label: "GitHub Sponsors" 14 | url: "https://github.com/sponsors/pspete" 15 | feature_row: 16 | - image_path: /assets/images/install.png 17 | title: "Install Options" 18 | excerpt: "Read about the installation options currently available for psPAS." 19 | url: "/docs/install/" 20 | btn_label: "Read More" 21 | btn_class: "btn--light-outline" 22 | - image_path: /assets/images/import.png 23 | title: "Module Guide" 24 | excerpt: "An overview of the psPAS module & how to use it to make your life easier." 25 | url: "/docs/authentication/" 26 | btn_label: "Read More" 27 | btn_class: "btn--light-outline" 28 | - image_path: /assets/images/help.png 29 | title: "Command Reference" 30 | excerpt: "Detailed documentation to help you understand the syntax of psPAS commands." 31 | url: "/commands/New-PASSession" 32 | btn_label: "Read More" 33 | btn_class: "btn--light-outline" 34 | --- 35 | 36 | {% include feature_row %} 37 | -------------------------------------------------------------------------------- /docs/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "minimal-mistakes", 3 | "version": "4.16.5", 4 | "description": "Minimal Mistakes 2 column Jekyll theme.", 5 | "repository": { 6 | "type": "git", 7 | "url": "git://github.com/mmistakes/minimal-mistakes.git" 8 | }, 9 | "keywords": [ 10 | "jekyll", 11 | "theme", 12 | "minimal" 13 | ], 14 | "author": "Michael Rose", 15 | "license": "MIT", 16 | "bugs": { 17 | "url": "https://github.com/mmistakes/minimal-mistakes/issues" 18 | }, 19 | "homepage": "https://mmistakes.github.io/minimal-mistakes/", 20 | "engines": { 21 | "node": ">= 0.10.0" 22 | }, 23 | "devDependencies": { 24 | "npm-run-all": "^4.1.5", 25 | "onchange": "^5.1.3", 26 | "uglify-js": "^3.4.9" 27 | }, 28 | "scripts": { 29 | "uglify": "uglifyjs assets/js/vendor/jquery/jquery-3.4.1.js assets/js/plugins/jquery.fitvids.js assets/js/plugins/jquery.greedy-navigation.js assets/js/plugins/jquery.magnific-popup.js assets/js/plugins/jquery.ba-throttle-debounce.js assets/js/plugins/smooth-scroll.js assets/js/plugins/gumshoe.js assets/js/_main.js -c -m -o assets/js/main.min.js", 30 | "add-banner": "node banner.js", 31 | "watch:js": "onchange \"assets/js/**/*.js\" -e \"assets/js/main.min.js\" -- npm run build:js", 32 | "build:js": "npm run uglify && npm run add-banner" 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /psPAS/Functions/AccountACL/Get-PASAccountACL.ps1: -------------------------------------------------------------------------------- 1 | # .ExternalHelp psPAS-help.xml 2 | function Get-PASAccountACL { 3 | [CmdletBinding()] 4 | param( 5 | [parameter( 6 | Mandatory = $true, 7 | ValueFromPipelinebyPropertyName = $true 8 | )] 9 | [Alias('PolicyID')] 10 | [string]$AccountPolicyId, 11 | 12 | [parameter( 13 | Mandatory = $true, 14 | ValueFromPipelinebyPropertyName = $true 15 | )] 16 | [Alias('Address')] 17 | [ValidateNotNullOrEmpty()] 18 | [string]$AccountAddress, 19 | 20 | [parameter( 21 | Mandatory = $true, 22 | ValueFromPipelinebyPropertyName = $true 23 | )] 24 | [Alias('UserName')] 25 | [ValidateNotNullOrEmpty()] 26 | [string]$AccountUserName 27 | ) 28 | 29 | BEGIN { 30 | Assert-VersionRequirement -SelfHosted 31 | }#begin 32 | 33 | PROCESS { 34 | 35 | #Create URL for request 36 | $URI = "$($psPASSession.BaseURI)/WebServices/PIMServices.svc/Account/$($AccountAddress | 37 | 38 | Get-EscapedString)|$($AccountUserName | 39 | 40 | Get-EscapedString)|$($AccountPolicyId | 41 | 42 | Get-EscapedString)/PrivilegedCommands/" 43 | 44 | #Send request to Web Service 45 | $result = Invoke-PASRestMethod -Uri $URI -Method GET #DevSkim: ignore DS104456 46 | 47 | If ($null -ne $result) { 48 | 49 | $result.ListAccountPrivilegedCommandsResult | 50 | 51 | Add-ObjectDetail -typename psPAS.CyberArk.Vault.ACL.Account 52 | 53 | } 54 | 55 | }#process 56 | 57 | END { }#end 58 | 59 | } -------------------------------------------------------------------------------- /psPAS/Functions/AccountGroups/Add-PASAccountGroupMember.ps1: -------------------------------------------------------------------------------- 1 | # .ExternalHelp psPAS-help.xml 2 | function Add-PASAccountGroupMember { 3 | [CmdletBinding()] 4 | param( 5 | [parameter( 6 | Mandatory = $true, 7 | ValueFromPipelinebyPropertyName = $true 8 | )] 9 | [ValidateNotNullOrEmpty()] 10 | [string]$GroupID, 11 | 12 | [parameter( 13 | Mandatory = $true, 14 | ValueFromPipelinebyPropertyName = $true 15 | )] 16 | [string]$AccountID 17 | ) 18 | 19 | BEGIN { 20 | Assert-VersionRequirement -RequiredVersion 9.9.5 21 | }#begin 22 | 23 | PROCESS { 24 | 25 | #Create URL for Request 26 | $URI = "$($psPASSession.BaseURI)/API/AccountGroups/$($GroupID | 27 | 28 | Get-EscapedString)/Members" 29 | 30 | #Create body of request 31 | $body = $PSBoundParameters | 32 | 33 | Get-PASParameter -ParametersToRemove GroupID | ConvertTo-Json 34 | 35 | #send request to PAS web service 36 | Invoke-PASRestMethod -Uri $URI -Method POST -Body $Body 37 | 38 | }#process 39 | 40 | END { }#end 41 | 42 | } -------------------------------------------------------------------------------- /psPAS/Functions/AccountGroups/Get-PASAccountGroupMember.ps1: -------------------------------------------------------------------------------- 1 | # .ExternalHelp psPAS-help.xml 2 | function Get-PASAccountGroupMember { 3 | [CmdletBinding()] 4 | param( 5 | [parameter( 6 | Mandatory = $true, 7 | ValueFromPipelinebyPropertyName = $true 8 | )] 9 | [string]$GroupID 10 | ) 11 | 12 | BEGIN { 13 | Assert-VersionRequirement -RequiredVersion 9.10 14 | }#begin 15 | 16 | PROCESS { 17 | 18 | #Create URL for Request 19 | $URI = "$($psPASSession.BaseURI)/API/AccountGroups/$GroupID/Members" 20 | 21 | #send request to PAS web service 22 | $result = Invoke-PASRestMethod -Uri $URI -Method GET 23 | 24 | If ($null -ne $result) { 25 | 26 | $result | Add-ObjectDetail -typename psPAS.CyberArk.Vault.Account.Group.Member 27 | 28 | } 29 | 30 | }#process 31 | 32 | END { }#end 33 | 34 | } -------------------------------------------------------------------------------- /psPAS/Functions/AccountGroups/New-PASAccountGroup.ps1: -------------------------------------------------------------------------------- 1 | # .ExternalHelp psPAS-help.xml 2 | function New-PASAccountGroup { 3 | [CmdletBinding(SupportsShouldProcess)] 4 | param( 5 | [parameter( 6 | Mandatory = $true, 7 | ValueFromPipelinebyPropertyName = $true 8 | )] 9 | [ValidateNotNullOrEmpty()] 10 | [string]$GroupName, 11 | 12 | [parameter( 13 | Mandatory = $true, 14 | ValueFromPipelinebyPropertyName = $true 15 | )] 16 | [string]$GroupPlatformID, 17 | 18 | [parameter( 19 | Mandatory = $true, 20 | ValueFromPipelinebyPropertyName = $true 21 | )] 22 | [string]$Safe 23 | ) 24 | 25 | BEGIN { 26 | Assert-VersionRequirement -RequiredVersion 9.9.5 27 | }#begin 28 | 29 | PROCESS { 30 | 31 | #Create URL for Request 32 | $URI = "$($psPASSession.BaseURI)/API/AccountGroups/" 33 | 34 | #Create body of request 35 | $body = $PSBoundParameters | Get-PASParameter | ConvertTo-Json 36 | 37 | if ($PSCmdlet.ShouldProcess($GroupName, 'Define New Account Group')) { 38 | 39 | #send request to PAS web service 40 | Invoke-PASRestMethod -Uri $URI -Method POST -Body $Body 41 | 42 | } 43 | 44 | }#process 45 | 46 | END { }#end 47 | 48 | } -------------------------------------------------------------------------------- /psPAS/Functions/AccountGroups/Remove-PASAccountGroupMember.ps1: -------------------------------------------------------------------------------- 1 | # .ExternalHelp psPAS-help.xml 2 | function Remove-PASAccountGroupMember { 3 | [CmdletBinding(SupportsShouldProcess)] 4 | param( 5 | [parameter( 6 | Mandatory = $true, 7 | ValueFromPipelinebyPropertyName = $true 8 | )] 9 | [string]$AccountID, 10 | 11 | [parameter( 12 | Mandatory = $true, 13 | ValueFromPipelinebyPropertyName = $true 14 | )] 15 | [string]$GroupID 16 | ) 17 | 18 | BEGIN { 19 | Assert-VersionRequirement -RequiredVersion 9.10 20 | }#begin 21 | 22 | PROCESS { 23 | 24 | #Create URL for Request 25 | $URI = "$($psPASSession.BaseURI)/API/AccountGroups/$GroupID/Members/$AccountID" 26 | 27 | if ($PSCmdlet.ShouldProcess($AccountID, "Delete Member from Account Group $($GroupID)")) { 28 | 29 | #send request to PAS web service 30 | Invoke-PASRestMethod -Uri $URI -Method DELETE 31 | 32 | } 33 | 34 | }#process 35 | 36 | END { }#end 37 | 38 | } -------------------------------------------------------------------------------- /psPAS/Functions/Accounts/Clear-PASDiscoveredAccountList.ps1: -------------------------------------------------------------------------------- 1 | # .ExternalHelp psPAS-help.xml 2 | function Clear-PASDiscoveredAccountList { 3 | [CmdletBinding(SupportsShouldProcess)] 4 | param() 5 | 6 | BEGIN { 7 | 8 | Assert-VersionRequirement -RequiredVersion 12.1 9 | 10 | }#begin 11 | 12 | PROCESS { 13 | 14 | $URI = "$($psPASSession.BaseURI)/api/DiscoveredAccounts" 15 | 16 | if ($PSCmdlet.ShouldProcess('Discovered/Pending Account List', 'Delete')) { 17 | 18 | Invoke-PASRestMethod -Uri $URI -Method DELETE 19 | 20 | } 21 | 22 | }#process 23 | 24 | END { }#end 25 | } -------------------------------------------------------------------------------- /psPAS/Functions/Accounts/Clear-PASDiscoveredLocalAccount.ps1: -------------------------------------------------------------------------------- 1 | # .ExternalHelp psPAS-help.xml 2 | function Clear-PASDiscoveredLocalAccount { 3 | [CmdletBinding(SupportsShouldProcess)] 4 | param() 5 | 6 | BEGIN { 7 | 8 | Assert-VersionRequirement -PrivilegeCloud 9 | 10 | }#begin 11 | 12 | PROCESS { 13 | 14 | $URI = "$($psPASSession.ApiURI)/api/discovered-accounts/clear" 15 | 16 | if ($PSCmdlet.ShouldProcess('Discovered Local Account List', 'Delete')) { 17 | 18 | Invoke-PASRestMethod -Uri $URI -Method DELETE 19 | 20 | } 21 | 22 | }#process 23 | 24 | END { }#end 25 | } -------------------------------------------------------------------------------- /psPAS/Functions/Accounts/Clear-PASLinkedAccount.ps1: -------------------------------------------------------------------------------- 1 | # .ExternalHelp psPAS-help.xml 2 | Function Clear-PASLinkedAccount { 3 | [CmdletBinding(SupportsShouldProcess)] 4 | param( 5 | [parameter( 6 | Mandatory = $true, 7 | ValueFromPipelinebyPropertyName = $true 8 | )] 9 | [Alias('id')] 10 | [string]$AccountID, 11 | 12 | [parameter( 13 | Mandatory = $true, 14 | ValueFromPipelinebyPropertyName = $true 15 | )] 16 | [int]$extraPasswordIndex 17 | 18 | ) 19 | 20 | BEGIN { 21 | 22 | Assert-VersionRequirement -RequiredVersion 12.2 23 | 24 | }#begin 25 | 26 | PROCESS { 27 | 28 | #Create URL for Request 29 | $URI = "$($psPASSession.BaseURI)/api/Accounts/$AccountID/LinkAccount/$extraPasswordIndex" 30 | 31 | if ($PSCmdlet.ShouldProcess($AccountID, "Clear extraPass$extraPasswordIndex Linked Account")) { 32 | 33 | #Send request to web service 34 | Invoke-PASRestMethod -Uri $URI -Method DELETE 35 | 36 | } 37 | 38 | }#process 39 | 40 | END { }#end 41 | 42 | } -------------------------------------------------------------------------------- /psPAS/Functions/Accounts/Disable-PASCPMAutoManagement.ps1: -------------------------------------------------------------------------------- 1 | # .ExternalHelp psPAS-help.xml 2 | function Disable-PASCPMAutoManagement { 3 | [CmdletBinding()] 4 | param( 5 | [parameter( 6 | Mandatory = $true, 7 | ValueFromPipelinebyPropertyName = $true 8 | )] 9 | [Alias('id')] 10 | [string]$AccountID, 11 | 12 | [parameter( 13 | Mandatory = $false, 14 | ValueFromPipelinebyPropertyName = $true, 15 | ParameterSetName = 'manualManagementReason' 16 | )] 17 | [string]$Reason 18 | 19 | ) 20 | 21 | BEGIN { 22 | 23 | Assert-VersionRequirement -RequiredVersion 10.4 24 | 25 | $ops = [Collections.Generic.List[Object]]@( 26 | @{ 27 | 'path' = '/secretManagement/automaticManagementEnabled' 28 | 'op' = 'replace' 29 | 'value' = $false 30 | } 31 | ) 32 | 33 | }#begin 34 | 35 | PROCESS { 36 | 37 | if ($PSCmdlet.ParameterSetName -eq 'manualManagementReason') { 38 | 39 | $null = $ops.Add(@{ 40 | 'path' = '/secretManagement/manualManagementReason' 41 | 'op' = 'replace' 42 | 'value' = $Reason 43 | }) 44 | } 45 | 46 | Set-PASAccount -AccountID $AccountID -operations $ops 47 | 48 | }#process 49 | 50 | END { }#end 51 | 52 | } -------------------------------------------------------------------------------- /psPAS/Functions/Accounts/Enable-PASCPMAutoManagement.ps1: -------------------------------------------------------------------------------- 1 | # .ExternalHelp psPAS-help.xml 2 | function Enable-PASCPMAutoManagement { 3 | [CmdletBinding()] 4 | param( 5 | [parameter( 6 | Mandatory = $true, 7 | ValueFromPipelinebyPropertyName = $true 8 | )] 9 | [Alias('id')] 10 | [string]$AccountID 11 | 12 | ) 13 | 14 | BEGIN { 15 | 16 | Assert-VersionRequirement -RequiredVersion 10.4 17 | 18 | $ops = [Collections.Generic.List[Object]]@( 19 | @{ 20 | 'path' = '/secretManagement/automaticManagementEnabled' 21 | 'op' = 'replace' 22 | 'value' = $true 23 | }, 24 | @{ 25 | 'path' = '/secretManagement/manualManagementReason' 26 | 'op' = 'replace' 27 | 'value' = '' 28 | } 29 | ) 30 | 31 | }#begin 32 | 33 | PROCESS { 34 | 35 | Set-PASAccount -AccountID $AccountID -operations $ops 36 | 37 | }#process 38 | 39 | END { }#end 40 | 41 | } -------------------------------------------------------------------------------- /psPAS/Functions/Accounts/Get-PASAccountDetail.ps1: -------------------------------------------------------------------------------- 1 | # .ExternalHelp psPAS-help.xml 2 | function Get-PASAccountDetail { 3 | [CmdletBinding()] 4 | param( 5 | [parameter( 6 | Mandatory = $true, 7 | ValueFromPipelinebyPropertyName = $true, 8 | ParameterSetName = 'Gen2ID' 9 | )] 10 | [Alias('AccountID')] 11 | [string]$id 12 | ) 13 | 14 | BEGIN { 15 | #check minimum version (10.4 assumed) 16 | Assert-VersionRequirement -RequiredVersion 10.4 17 | }#begin 18 | 19 | PROCESS { 20 | 21 | #define base URL 22 | $URI = "$($psPASSession.BaseURI)/api/ExtendedAccounts/$id/overview" 23 | 24 | #Send request to web service 25 | $result = Invoke-PASRestMethod -Uri $URI -Method GET 26 | 27 | If ($null -ne $result) { 28 | $result 29 | } 30 | 31 | }#process 32 | 33 | END { }#end 34 | 35 | } -------------------------------------------------------------------------------- /psPAS/Functions/Accounts/Get-PASAccountImportJob.ps1: -------------------------------------------------------------------------------- 1 | # .ExternalHelp psPAS-help.xml 2 | Function Get-PASAccountImportJob { 3 | [CmdletBinding()] 4 | param( 5 | [parameter( 6 | Mandatory = $false, 7 | ValueFromPipelinebyPropertyName = $true, 8 | ParameterSetName = 'byID' 9 | )] 10 | [string]$id 11 | ) 12 | 13 | Begin { 14 | 15 | Assert-VersionRequirement -RequiredVersion 11.6 16 | 17 | } 18 | 19 | Process { 20 | 21 | #Create URL for Request 22 | $URI = "$($psPASSession.BaseURI)/api/bulkactions/accounts" 23 | 24 | If ($PSCmdlet.ParameterSetName -eq 'byID') { 25 | 26 | $URI = "$URI/$id" 27 | 28 | } 29 | 30 | #send request 31 | $Result = Invoke-PASRestMethod -Uri $URI -Method GET 32 | 33 | If ($null -ne $Result) { 34 | 35 | If ($PSCmdlet.ParameterSetName -ne 'byID') { 36 | 37 | $Result = $Result.BulkActions 38 | 39 | } 40 | 41 | $Result | Add-ObjectDetail -typename 'psPAS.CyberArk.Vault.Account.Job' 42 | 43 | } 44 | 45 | } 46 | 47 | End {} 48 | 49 | } -------------------------------------------------------------------------------- /psPAS/Functions/Accounts/Get-PASDiscoveredLocalAccountActivity.ps1: -------------------------------------------------------------------------------- 1 | # .ExternalHelp psPAS-help.xml 2 | Function Get-PASDiscoveredLocalAccountActivity { 3 | [CmdletBinding()] 4 | param( 5 | [parameter( 6 | Mandatory = $true, 7 | ValueFromPipelinebyPropertyName = $true 8 | )] 9 | [string]$id 10 | ) 11 | 12 | Begin { 13 | 14 | Assert-VersionRequirement -PrivilegeCloud 15 | 16 | } 17 | 18 | Process { 19 | 20 | #Create URL for Request 21 | $URI = "$($psPASSession.ApiURI)/api/discovered-accounts/$id/activities" 22 | 23 | #Send request to web service 24 | $result = Invoke-PASRestMethod -Uri $URI -Method GET 25 | 26 | If ($null -ne $Result) { 27 | 28 | #Return result 29 | $Result 30 | 31 | } 32 | 33 | } 34 | 35 | End {} 36 | 37 | } -------------------------------------------------------------------------------- /psPAS/Functions/Accounts/Get-PASLinkedAccount.ps1: -------------------------------------------------------------------------------- 1 | # .ExternalHelp psPAS-help.xml 2 | Function Get-PASLinkedAccount { 3 | [CmdletBinding()] 4 | param( 5 | [parameter( 6 | Mandatory = $true, 7 | ValueFromPipelinebyPropertyName = $true 8 | )] 9 | [Alias('AccountID')] 10 | [string]$id 11 | 12 | ) 13 | 14 | BEGIN { 15 | 16 | #Assume this is possible since Link/Unlink account capability in the newer UI 17 | Assert-VersionRequirement -RequiredVersion 12.2 18 | 19 | }#begin 20 | 21 | PROCESS { 22 | 23 | #Create URL for Request 24 | $URI = "$($psPASSession.BaseURI)/api/ExtendedAccounts/$id/LinkedAccounts" 25 | 26 | #Send request to web service 27 | $result = Invoke-PASRestMethod -Uri $URI -Method GET 28 | 29 | If ($null -ne $result) { 30 | 31 | #Return Results 32 | $result.LinkedAccounts | Add-ObjectDetail -typename psPAS.CyberArk.Vault.Account.LinkedAccount 33 | 34 | } 35 | 36 | }#process 37 | 38 | END { }#end 39 | 40 | } -------------------------------------------------------------------------------- /psPAS/Functions/Accounts/Get-PASLinkedGroup.ps1: -------------------------------------------------------------------------------- 1 | # .ExternalHelp psPAS-help.xml 2 | Function Get-PASLinkedGroup { 3 | [CmdletBinding()] 4 | param( 5 | [parameter( 6 | Mandatory = $true, 7 | ValueFromPipelinebyPropertyName = $true 8 | )] 9 | [Alias('AccountID')] 10 | [string]$id 11 | 12 | ) 13 | 14 | BEGIN { 15 | 16 | #Assume this is possible since Link/Unlink account capability in the newer UI 17 | Assert-VersionRequirement -RequiredVersion 12.2 18 | 19 | }#begin 20 | 21 | PROCESS { 22 | 23 | #Create URL for Request 24 | $URI = "$($psPASSession.BaseURI)/api/ExtendedAccounts/$id/LinkedAccounts" 25 | 26 | #Send request to web service 27 | $result = Invoke-PASRestMethod -Uri $URI -Method GET 28 | 29 | If ($null -ne $result) { 30 | 31 | #Return Results 32 | $result | Select-Object -Property * -ExcludeProperty LinkedAccounts | Add-ObjectDetail -typename psPAS.CyberArk.Vault.Account.LinkedGroup 33 | 34 | } 35 | 36 | }#process 37 | 38 | END { }#end 39 | 40 | } -------------------------------------------------------------------------------- /psPAS/Functions/Accounts/New-PASAccountPassword.ps1: -------------------------------------------------------------------------------- 1 | # .ExternalHelp psPAS-help.xml 2 | function New-PASAccountPassword { 3 | [CmdletBinding(SupportsShouldProcess)] 4 | param( 5 | [parameter( 6 | Mandatory = $true, 7 | ValueFromPipelinebyPropertyName = $true 8 | )] 9 | [ValidateNotNullOrEmpty()] 10 | [Alias('id')] 11 | [string]$AccountID 12 | ) 13 | 14 | BEGIN { 15 | 16 | #check minimum version 17 | Assert-VersionRequirement -RequiredVersion 12.0 18 | 19 | }#begin 20 | 21 | PROCESS { 22 | 23 | #Create URL for request 24 | $URI = "$($psPASSession.BaseURI)/api/Accounts/$AccountID/Secret/Generate" 25 | 26 | if ($PSCmdlet.ShouldProcess($AccountID, 'Generate New Password')) { 27 | 28 | #Send request to webservice 29 | $result = Invoke-PASRestMethod -Uri $URI -Method POST 30 | 31 | if ($null -ne $result) { 32 | 33 | #Unescape returned string. 34 | $result = [System.Text.RegularExpressions.Regex]::Unescape($result.password) 35 | 36 | [PSCustomObject] @{'Password' = $result } | Add-ObjectDetail -typename psPAS.CyberArk.Vault.Credential 37 | 38 | } 39 | 40 | } 41 | 42 | }#process 43 | 44 | END { }#end 45 | 46 | } -------------------------------------------------------------------------------- /psPAS/Functions/Accounts/Remove-PASAccount.ps1: -------------------------------------------------------------------------------- 1 | # .ExternalHelp psPAS-help.xml 2 | function Remove-PASAccount { 3 | [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSReviewUnusedParameter', 'UseGen1API', Justification = 'False Positive')] 4 | [CmdletBinding(SupportsShouldProcess)] 5 | param( 6 | [parameter( 7 | Mandatory = $true, 8 | ValueFromPipelinebyPropertyName = $true 9 | )] 10 | [ValidateNotNullOrEmpty()] 11 | [Alias('id')] 12 | [string]$AccountID, 13 | 14 | [parameter( 15 | Mandatory = $false, 16 | ValueFromPipelinebyPropertyName = $false, 17 | ParameterSetName = 'Gen1' 18 | )] 19 | [Alias('UseClassicAPI')] 20 | [switch]$UseGen1API 21 | ) 22 | 23 | BEGIN { 24 | #check minimum version 25 | Assert-VersionRequirement -RequiredVersion 10.4 26 | }#begin 27 | 28 | PROCESS { 29 | 30 | switch ($PSCmdlet.ParameterSetName) { 31 | 32 | 'Gen1' { 33 | 34 | #Create URL for request (earlier than 10.4) 35 | $URI = "$($psPASSession.BaseURI)/WebServices/PIMServices.svc/Accounts/$AccountID" 36 | break 37 | 38 | } 39 | 40 | default { 41 | 42 | #Create URL for request (Version 10.4 onwards) 43 | $URI = "$($psPASSession.BaseURI)/api/Accounts/$AccountID" 44 | 45 | } 46 | 47 | } 48 | 49 | if ($PSCmdlet.ShouldProcess($AccountID, 'Delete Account')) { 50 | 51 | #Send request to webservice 52 | Invoke-PASRestMethod -Uri $URI -Method DELETE 53 | 54 | } 55 | 56 | }#process 57 | 58 | END { }#end 59 | 60 | } -------------------------------------------------------------------------------- /psPAS/Functions/Accounts/Remove-PASDiscoveredLocalAccount.ps1: -------------------------------------------------------------------------------- 1 | # .ExternalHelp psPAS-help.xml 2 | function Remove-PASDiscoveredLocalAccount { 3 | [CmdletBinding(SupportsShouldProcess)] 4 | param( 5 | [parameter( 6 | Mandatory = $true, 7 | ValueFromPipelinebyPropertyName = $true 8 | )] 9 | [string]$id 10 | ) 11 | 12 | BEGIN { 13 | 14 | Assert-VersionRequirement -PrivilegeCloud 15 | 16 | }#begin 17 | 18 | PROCESS { 19 | 20 | $URI = "$($psPASSession.ApiURI)/api/discovered-accounts/$id" 21 | 22 | if ($PSCmdlet.ShouldProcess("Discovered Local Account: $id", 'Delete')) { 23 | 24 | Invoke-PASRestMethod -Uri $URI -Method DELETE 25 | 26 | } 27 | 28 | }#process 29 | 30 | END { }#end 31 | } -------------------------------------------------------------------------------- /psPAS/Functions/Accounts/Request-PASJustInTimeAccess.ps1: -------------------------------------------------------------------------------- 1 | # .ExternalHelp psPAS-help.xml 2 | function Request-PASJustInTimeAccess { 3 | [CmdletBinding()] 4 | param( 5 | [parameter( 6 | Mandatory = $true, 7 | ValueFromPipelinebyPropertyName = $true 8 | )] 9 | [ValidateNotNullOrEmpty()] 10 | [Alias('id')] 11 | [string]$AccountID 12 | ) 13 | 14 | BEGIN { 15 | #check minimum version 16 | Assert-VersionRequirement -RequiredVersion 10.6 17 | }#begin 18 | 19 | PROCESS { 20 | 21 | #Create URL for request (Version 10.4 onwards) 22 | $URI = "$($psPASSession.BaseURI)/api/Accounts/$AccountID/grantAdministrativeAccess" 23 | 24 | #Send request to webservice 25 | Invoke-PASRestMethod -Uri $URI -Method POST 26 | 27 | }#process 28 | 29 | END { }#end 30 | 31 | } -------------------------------------------------------------------------------- /psPAS/Functions/Accounts/Revoke-PASJustInTimeAccess.ps1: -------------------------------------------------------------------------------- 1 | # .ExternalHelp psPAS-help.xml 2 | function Revoke-PASJustInTimeAccess { 3 | [CmdletBinding()] 4 | param( 5 | [parameter( 6 | Mandatory = $true, 7 | ValueFromPipelinebyPropertyName = $true 8 | )] 9 | [ValidateNotNullOrEmpty()] 10 | [Alias('id')] 11 | [string]$AccountID 12 | ) 13 | 14 | BEGIN { 15 | #check minimum version 16 | Assert-VersionRequirement -RequiredVersion 12.0 17 | }#begin 18 | 19 | PROCESS { 20 | 21 | #Create URL for request 22 | $URI = "$($psPASSession.BaseURI)/api/Accounts/$AccountID/RevokeAdministrativeAccess" 23 | 24 | #Send request to webservice 25 | Invoke-PASRestMethod -Uri $URI -Method POST 26 | 27 | }#process 28 | 29 | END { }#end 30 | 31 | } -------------------------------------------------------------------------------- /psPAS/Functions/Accounts/Start-PASAccountImportJob.ps1: -------------------------------------------------------------------------------- 1 | # .ExternalHelp psPAS-help.xml 2 | Function Start-PASAccountImportJob { 3 | [CmdletBinding(SupportsShouldProcess)] 4 | param( 5 | [parameter( 6 | Mandatory = $false, 7 | ValueFromPipelinebyPropertyName = $true 8 | )] 9 | [string]$source, 10 | 11 | [parameter( 12 | Mandatory = $true, 13 | ValueFromPipelinebyPropertyName = $true 14 | )] 15 | [object[]]$accountsList 16 | ) 17 | 18 | Begin { 19 | 20 | Assert-VersionRequirement -RequiredVersion 11.6 21 | 22 | #Create URL for Request 23 | $URI = "$($psPASSession.BaseURI)/api/bulkactions/accounts" 24 | 25 | } 26 | 27 | Process { 28 | 29 | #Get all parameters that will be sent in the request 30 | $boundParameters = $PSBoundParameters | Get-PASParameter 31 | 32 | #Create body of request 33 | $body = $boundParameters | Get-PASParameter | ConvertTo-Json -Depth 3 34 | 35 | if ($PSCmdlet.ShouldProcess("List of $($accountsList.count) account(s)", 'Start Bulk Account Import Job')) { 36 | 37 | #send request 38 | $Result = Invoke-PASRestMethod -Uri $URI -Method POST -Body $Body 39 | 40 | If ($null -ne $Result) { 41 | 42 | #Return Results 43 | try { 44 | 45 | #Query Import Job Status 46 | Get-PASAccountImportJob -id $Result 47 | 48 | } 49 | 50 | catch { 51 | 52 | #Return Import Job ID 53 | [PSCustomObject]@{'id' = $Result } 54 | 55 | } 56 | 57 | } 58 | 59 | } 60 | 61 | } 62 | 63 | End {} 64 | 65 | } -------------------------------------------------------------------------------- /psPAS/Functions/Applications/Get-PASApplicationAuthenticationMethod.ps1: -------------------------------------------------------------------------------- 1 | # .ExternalHelp psPAS-help.xml 2 | function Get-PASApplicationAuthenticationMethod { 3 | [CmdletBinding()] 4 | param( 5 | [parameter( 6 | Mandatory = $true, 7 | ValueFromPipelinebyPropertyName = $true 8 | )] 9 | [string]$AppID 10 | ) 11 | 12 | BEGIN { }#begin 13 | 14 | PROCESS { 15 | 16 | $URI = "$($psPASSession.BaseURI)/WebServices/PIMServices.svc/Applications/$($AppID | 17 | 18 | Get-EscapedString)/Authentications/" 19 | 20 | $result = Invoke-PASRestMethod -Uri $URI -Method GET 21 | 22 | If ($null -ne $result) { 23 | 24 | $result.authentication | Add-ObjectDetail -typename psPAS.CyberArk.Vault.ApplicationAuth 25 | 26 | } 27 | 28 | }#process 29 | 30 | END { }#end 31 | 32 | } -------------------------------------------------------------------------------- /psPAS/Functions/Applications/Remove-PASApplication.ps1: -------------------------------------------------------------------------------- 1 | # .ExternalHelp psPAS-help.xml 2 | function Remove-PASApplication { 3 | [CmdletBinding(SupportsShouldProcess)] 4 | param( 5 | [parameter( 6 | Mandatory = $true, 7 | ValueFromPipelinebyPropertyName = $true 8 | )] 9 | [ValidateNotNullOrEmpty()] 10 | [string]$AppID 11 | ) 12 | 13 | BEGIN { }#begin 14 | 15 | PROCESS { 16 | 17 | #Request URL 18 | $URI = "$($psPASSession.BaseURI)/WebServices/PIMServices.svc/Applications/$($AppID | Get-EscapedString)/" 19 | 20 | if ($PSCmdlet.ShouldProcess($AppID, 'Delete Application')) { 21 | 22 | #Send Request 23 | Invoke-PASRestMethod -Uri $URI -Method DELETE 24 | 25 | } 26 | 27 | }#process 28 | 29 | END { }#end 30 | 31 | } -------------------------------------------------------------------------------- /psPAS/Functions/Applications/Remove-PASApplicationAuthenticationMethod.ps1: -------------------------------------------------------------------------------- 1 | # .ExternalHelp psPAS-help.xml 2 | function Remove-PASApplicationAuthenticationMethod { 3 | [CmdletBinding(SupportsShouldProcess)] 4 | param( 5 | [parameter( 6 | Mandatory = $true, 7 | ValueFromPipelinebyPropertyName = $true 8 | )] 9 | [ValidateNotNullOrEmpty()] 10 | [string]$AppID, 11 | 12 | [parameter( 13 | Mandatory = $true, 14 | ValueFromPipelinebyPropertyName = $true 15 | )] 16 | [ValidateNotNullOrEmpty()] 17 | [string]$AuthID 18 | ) 19 | 20 | BEGIN { }#begin 21 | 22 | PROCESS { 23 | 24 | #request URL 25 | $URI = "$($psPASSession.BaseURI)/WebServices/PIMServices.svc/Applications/$($AppID | 26 | 27 | Get-EscapedString)/Authentications/$($AuthID | Get-EscapedString)" 28 | 29 | if ($PSCmdlet.ShouldProcess($AppID, "Delete Authentication Method '$AuthID'")) { 30 | 31 | #Send Request 32 | Invoke-PASRestMethod -Uri $URI -Method DELETE 33 | 34 | } 35 | 36 | }#process 37 | 38 | END { }#end 39 | 40 | } -------------------------------------------------------------------------------- /psPAS/Functions/Authentication/Add-PASPublicSSHKey.ps1: -------------------------------------------------------------------------------- 1 | # .ExternalHelp psPAS-help.xml 2 | function Add-PASPublicSSHKey { 3 | [CmdletBinding()] 4 | param( 5 | [parameter( 6 | Mandatory = $true, 7 | ValueFromPipelinebyPropertyName = $true 8 | )] 9 | [ValidateScript( { $_ -notmatch '.*(%|\&|\+).*' })] 10 | [string]$UserName, 11 | 12 | [parameter( 13 | Mandatory = $true, 14 | ValueFromPipelinebyPropertyName = $true 15 | )] 16 | [ValidateScript( { $_ -notmatch "`n" })] 17 | [string]$PublicSSHKey 18 | 19 | ) 20 | 21 | BEGIN { }#begin 22 | 23 | PROCESS { 24 | 25 | #Create URL to endpoint for request 26 | $URI = "$($psPASSession.BaseURI)/WebServices/PIMServices.svc/Users/$($UserName | 27 | 28 | Get-EscapedString)/AuthenticationMethods/SSHKeyAuthentication/AuthorizedKeys/" 29 | 30 | #create request body 31 | $Body = @{ 32 | 33 | 'PublicSSHKey' = $PublicSSHKey 34 | 35 | } | ConvertTo-Json 36 | 37 | #send request to webservice 38 | $result = Invoke-PASRestMethod -Uri $URI -Method POST -Body $Body 39 | 40 | If ($null -ne $result) { 41 | 42 | $result.AddUserAuthorizedKeyResult | 43 | 44 | Add-ObjectDetail -typename psPAS.CyberArk.Vault.PublicSSHKey -PropertyToAdd @{ 45 | 46 | 'UserName' = $UserName 47 | 48 | } 49 | 50 | } 51 | 52 | }#process 53 | 54 | END { }#end 55 | 56 | } -------------------------------------------------------------------------------- /psPAS/Functions/Authentication/Clear-PASPrivateSSHKey.ps1: -------------------------------------------------------------------------------- 1 | # .ExternalHelp psPAS-help.xml 2 | function Clear-PASPrivateSSHKey { 3 | [CmdletBinding()] 4 | param( ) 5 | 6 | BEGIN { 7 | 8 | Assert-VersionRequirement -RequiredVersion 12.1 9 | 10 | }#begin 11 | 12 | PROCESS { 13 | 14 | $URI = "$($psPASSession.BaseURI)/api/Users/Secret/SSHKeys/ClearCache" 15 | 16 | #send request to webservice 17 | Invoke-PASRestMethod -Uri $URI -Method DELETE 18 | 19 | }#process 20 | 21 | END { }#end 22 | } -------------------------------------------------------------------------------- /psPAS/Functions/Authentication/Get-PASAuthenticationMethod.ps1: -------------------------------------------------------------------------------- 1 | # .ExternalHelp psPAS-help.xml 2 | Function Get-PASAuthenticationMethod { 3 | [CmdletBinding()] 4 | param( 5 | [parameter( 6 | Mandatory = $false, 7 | ValueFromPipelinebyPropertyName = $true 8 | )] 9 | [ValidateNotNullOrEmpty()] 10 | [ValidateLength(1, 50)] 11 | [string]$ID 12 | 13 | ) 14 | 15 | BEGIN { 16 | 17 | Assert-VersionRequirement -RequiredVersion 11.5 18 | 19 | }#begin 20 | 21 | PROCESS { 22 | 23 | #Create URL for request 24 | $URI = "$($psPASSession.BaseURI)/api/Configuration/AuthenticationMethods/$($ID | Get-EscapedString)" 25 | 26 | #send request to web service 27 | $result = Invoke-PASRestMethod -Uri $URI -Method GET 28 | 29 | 30 | If ($null -ne $result) { 31 | 32 | if ($null -ne $result.Methods) { 33 | 34 | $result = $result | Select-Object -ExpandProperty Methods 35 | 36 | } 37 | 38 | $result 39 | 40 | } 41 | 42 | }#process 43 | 44 | END { }#end 45 | 46 | 47 | } -------------------------------------------------------------------------------- /psPAS/Functions/Authentication/Get-PASOpenIDConnectProvider.ps1: -------------------------------------------------------------------------------- 1 | # .ExternalHelp psPAS-help.xml 2 | Function Get-PASOpenIDConnectProvider { 3 | 4 | [CmdletBinding()] 5 | param( 6 | [parameter( 7 | Mandatory = $false, 8 | ValueFromPipelinebyPropertyName = $true 9 | )] 10 | [ValidateNotNullOrEmpty()] 11 | [string]$id 12 | 13 | ) 14 | 15 | BEGIN { 16 | 17 | Assert-VersionRequirement -RequiredVersion 11.7 18 | 19 | }#begin 20 | 21 | PROCESS { 22 | 23 | #Create URL for request 24 | $URI = "$($psPASSession.BaseURI)/api/Configuration/OIDC/Providers/$($id | Get-EscapedString)" 25 | 26 | #send request to web service 27 | $result = Invoke-PASRestMethod -Uri $URI -Method GET 28 | 29 | If ($null -ne $result) { 30 | 31 | if ($null -ne $result.Providers) { 32 | 33 | $result = $result | Select-Object -ExpandProperty Providers 34 | 35 | } 36 | 37 | $result 38 | 39 | } 40 | 41 | }#process 42 | 43 | END { }#end 44 | 45 | } -------------------------------------------------------------------------------- /psPAS/Functions/Authentication/Get-PASPublicSSHKey.ps1: -------------------------------------------------------------------------------- 1 | # .ExternalHelp psPAS-help.xml 2 | function Get-PASPublicSSHKey { 3 | [CmdletBinding()] 4 | param( 5 | [parameter( 6 | Mandatory = $true, 7 | ValueFromPipelinebyPropertyName = $true 8 | )] 9 | [ValidateScript( { $_ -notmatch '.*(%|\&|\+).*' })] 10 | [string]$UserName 11 | 12 | ) 13 | 14 | BEGIN { }#begin 15 | 16 | PROCESS { 17 | 18 | #Create URL for request 19 | $URI = "$($psPASSession.BaseURI)/WebServices/PIMServices.svc/Users/$($UserName | 20 | 21 | Get-EscapedString)/AuthenticationMethods/SSHKeyAuthentication/AuthorizedKeys/" 22 | 23 | #Send request to web service 24 | $result = Invoke-PASRestMethod -Uri $URI -Method GET 25 | 26 | If ($null -ne $result) { 27 | 28 | $result.GetUserAuthorizedKeysResult | 29 | 30 | Add-ObjectDetail -typename psPAS.CyberArk.Vault.PublicSSHKey -PropertyToAdd @{ 31 | 32 | 'UserName' = $UserName 33 | 34 | } 35 | 36 | } 37 | 38 | }#process 39 | 40 | END { }#end 41 | 42 | } -------------------------------------------------------------------------------- /psPAS/Functions/Authentication/Get-PASSession.ps1: -------------------------------------------------------------------------------- 1 | # .ExternalHelp psPAS-help.xml 2 | function Get-PASSession { 3 | [CmdletBinding()] 4 | param( ) 5 | 6 | BEGIN { }#begin 7 | 8 | PROCESS { 9 | 10 | #Calculate the time elapsed since the start of the session and include in return data 11 | if ($null -ne $psPASSession.StartTime) { 12 | $psPASSession.ElapsedTime = '{0:HH:mm:ss}' -f ([datetime]$($(Get-Date) - $($psPASSession.StartTime)).Ticks) 13 | } else { $psPASSession.ElapsedTime = $null } 14 | 15 | #Deep Copy the $psPASSession session object and return as psPAS Session type. 16 | Get-SessionClone -InputObject $psPASSession | Add-ObjectDetail -typename psPAS.CyberArk.Vault.Session 17 | 18 | }#process 19 | 20 | END { }#end 21 | 22 | } -------------------------------------------------------------------------------- /psPAS/Functions/Authentication/Remove-PASAuthenticationMethod.ps1: -------------------------------------------------------------------------------- 1 | # .ExternalHelp psPAS-help.xml 2 | Function Remove-PASAuthenticationMethod { 3 | 4 | [CmdletBinding(SupportsShouldProcess)] 5 | param( 6 | [parameter( 7 | Mandatory = $true, 8 | ValueFromPipelinebyPropertyName = $true 9 | )] 10 | [ValidateLength(1, 50)] 11 | [string]$id 12 | ) 13 | 14 | BEGIN { 15 | 16 | Assert-VersionRequirement -RequiredVersion 11.7 17 | 18 | }#begin 19 | 20 | PROCESS { 21 | 22 | #Create URL for request 23 | $URI = "$($psPASSession.BaseURI)/api/Configuration/AuthenticationMethods/$($id | Get-EscapedString)" 24 | 25 | if ($PSCmdlet.ShouldProcess($id, 'Delete Authentication Method')) { 26 | 27 | #send request to web service 28 | $result = Invoke-PASRestMethod -Uri $URI -Method DELETE 29 | 30 | If ($null -ne $result) { 31 | 32 | $result 33 | 34 | } 35 | 36 | } 37 | 38 | }#process 39 | 40 | END { }#end 41 | 42 | } -------------------------------------------------------------------------------- /psPAS/Functions/Authentication/Remove-PASOpenIDConnectProvider.ps1: -------------------------------------------------------------------------------- 1 | # .ExternalHelp psPAS-help.xml 2 | Function Remove-PASOpenIDConnectProvider { 3 | 4 | [CmdletBinding(SupportsShouldProcess)] 5 | param( 6 | [parameter( 7 | Mandatory = $false, 8 | ValueFromPipelinebyPropertyName = $true 9 | )] 10 | [ValidateNotNullOrEmpty()] 11 | [string]$id 12 | 13 | ) 14 | 15 | BEGIN { 16 | 17 | Assert-VersionRequirement -RequiredVersion 11.7 18 | 19 | }#begin 20 | 21 | PROCESS { 22 | 23 | #Create URL for request 24 | $URI = "$($psPASSession.BaseURI)/api/Configuration/OIDC/Providers/$($id | Get-EscapedString)" 25 | 26 | if ($PSCmdlet.ShouldProcess($id, 'Delete OIDC Provider')) { 27 | 28 | #Send request to web service 29 | Invoke-PASRestMethod -Uri $URI -Method DELETE 30 | 31 | } 32 | 33 | }#process 34 | 35 | END { }#end 36 | 37 | } -------------------------------------------------------------------------------- /psPAS/Functions/Authentication/Remove-PASPrivateSSHKey.ps1: -------------------------------------------------------------------------------- 1 | # .ExternalHelp psPAS-help.xml 2 | function Remove-PASPrivateSSHKey { 3 | [CmdletBinding(SupportsShouldProcess)] 4 | param( 5 | [parameter( 6 | Mandatory = $false, 7 | ValueFromPipelinebyPropertyName = $true 8 | )] 9 | [int]$UserID 10 | 11 | ) 12 | 13 | BEGIN { 14 | 15 | Assert-VersionRequirement -RequiredVersion 12.1 16 | 17 | }#begin 18 | 19 | PROCESS { 20 | 21 | $URI = "$($psPASSession.BaseURI)/api/Users" 22 | 23 | If ($PSBoundParameters.ContainsKey('UserID')) { 24 | 25 | $user = $UserID 26 | $URI = "$URI/$UserID/Secret/SSHKeys/Cache" 27 | 28 | 29 | } 30 | 31 | else { 32 | 33 | $user = 'Personal' 34 | $URI = "$URI/Secret/SSHKeys/Cache" 35 | 36 | } 37 | if ($PSCmdlet.ShouldProcess($user, 'Delete Private SSH Key')) { 38 | 39 | #send request to webservice 40 | Invoke-PASRestMethod -Uri $URI -Method DELETE 41 | 42 | } 43 | 44 | }#process 45 | 46 | END { }#end 47 | } -------------------------------------------------------------------------------- /psPAS/Functions/Authentication/Remove-PASPublicSSHKey.ps1: -------------------------------------------------------------------------------- 1 | # .ExternalHelp psPAS-help.xml 2 | function Remove-PASPublicSSHKey { 3 | [CmdletBinding(SupportsShouldProcess)] 4 | param( 5 | [parameter( 6 | Mandatory = $true, 7 | ValueFromPipelinebyPropertyName = $true 8 | )] 9 | [ValidateScript( { $_ -notmatch '.*(%|\&|\+).*' })] 10 | [string]$UserName, 11 | 12 | [parameter( 13 | Mandatory = $true, 14 | ValueFromPipelinebyPropertyName = $true 15 | )] 16 | [string]$KeyID 17 | 18 | ) 19 | 20 | BEGIN { }#begin 21 | 22 | PROCESS { 23 | 24 | #Create URL string for request 25 | $URI = "$($psPASSession.BaseURI)/WebServices/PIMServices.svc/Users/$($UserName | 26 | 27 | Get-EscapedString)/AuthenticationMethods/SSHKeyAuthentication/AuthorizedKeys/$KeyID/" 28 | 29 | if ($PSCmdlet.ShouldProcess($KeyID, 'Delete Public SSH Key')) { 30 | 31 | #Send Request to web service 32 | Invoke-PASRestMethod -Uri $URI -Method DELETE 33 | 34 | } 35 | 36 | }#process 37 | 38 | END { }#end 39 | 40 | } -------------------------------------------------------------------------------- /psPAS/Functions/Authentication/Use-PASSession.ps1: -------------------------------------------------------------------------------- 1 | # .ExternalHelp psPAS-help.xml 2 | function Use-PASSession { 3 | [CmdletBinding()] 4 | param( 5 | [parameter( 6 | Mandatory = $true, 7 | ValueFromPipeline = $true 8 | )] 9 | [psTypeName('psPAS.CyberArk.Vault.Session')]$Session 10 | 11 | ) 12 | 13 | BEGIN { }#begin 14 | 15 | PROCESS { 16 | 17 | New-Variable -Name psPASSession -Value $Session -Scope Script -Force 18 | 19 | }#process 20 | 21 | END { }#end 22 | 23 | } -------------------------------------------------------------------------------- /psPAS/Functions/BYOK/Get-PASBYOKConfig.ps1: -------------------------------------------------------------------------------- 1 | # .ExternalHelp psPAS-help.xml 2 | Function Get-PASBYOKConfig { 3 | [CmdletBinding()] 4 | param( ) 5 | 6 | Begin { 7 | Assert-VersionRequirement -PrivilegeCloud 8 | } 9 | 10 | Process { 11 | 12 | #Create URL for request 13 | $URI = "$($psPASSession.ApiURI)/api/byok" 14 | 15 | #send request to web service 16 | $result = Invoke-PASRestMethod -Uri $URI -Method GET 17 | 18 | If ($null -ne $result) { 19 | 20 | $result 21 | 22 | } 23 | 24 | } 25 | 26 | End {} 27 | 28 | } -------------------------------------------------------------------------------- /psPAS/Functions/Connections/Get-PASConnectionComponent.ps1: -------------------------------------------------------------------------------- 1 | # .ExternalHelp psPAS-help.xml 2 | Function Get-PASConnectionComponent { 3 | [CmdletBinding()] 4 | param( ) 5 | 6 | BEGIN { 7 | 8 | Assert-VersionRequirement -RequiredVersion 11.5 9 | 10 | }#begin 11 | 12 | PROCESS { 13 | 14 | 15 | #Create URL for request 16 | $URI = "$($psPASSession.BaseURI)/API/PSM/Connectors" 17 | 18 | #send request to web service 19 | $result = Invoke-PASRestMethod -Uri $URI -Method GET 20 | 21 | if ($null -ne $result.PSMConnectors) { 22 | 23 | $result | Select-Object -ExpandProperty PSMConnectors 24 | 25 | } 26 | 27 | }#process 28 | 29 | END { }#end 30 | 31 | } -------------------------------------------------------------------------------- /psPAS/Functions/Connections/Get-PASPSMServer.ps1: -------------------------------------------------------------------------------- 1 | # .ExternalHelp psPAS-help.xml 2 | Function Get-PASPSMServer { 3 | [CmdletBinding()] 4 | param( ) 5 | 6 | BEGIN { 7 | 8 | Assert-VersionRequirement -RequiredVersion 11.5 9 | 10 | }#begin 11 | 12 | PROCESS { 13 | 14 | 15 | #Create URL for request 16 | $URI = "$($psPASSession.BaseURI)/API/PSM/Servers" 17 | 18 | #send request to web service 19 | $result = Invoke-PASRestMethod -Uri $URI -Method GET 20 | 21 | if ($null -ne $result.PSMServers) { 22 | 23 | $result | Select-Object -ExpandProperty PSMServers 24 | 25 | } 26 | 27 | }#process 28 | 29 | END { }#end 30 | 31 | } -------------------------------------------------------------------------------- /psPAS/Functions/Connections/Import-PASConnectionComponent.ps1: -------------------------------------------------------------------------------- 1 | # .ExternalHelp psPAS-help.xml 2 | function Import-PASConnectionComponent { 3 | [CmdletBinding(SupportsShouldProcess)] 4 | param( 5 | [parameter( 6 | Mandatory = $true, 7 | ValueFromPipelinebyPropertyName = $true 8 | )] 9 | [ValidateNotNullOrEmpty()] 10 | [ValidateScript( { Test-Path -Path $_ -PathType Leaf })] 11 | [ValidatePattern( '\.zip$' )] 12 | [string]$ImportFile 13 | ) 14 | 15 | BEGIN { 16 | Assert-VersionRequirement -RequiredVersion 10.2 17 | }#begin 18 | 19 | PROCESS { 20 | 21 | #Create URL for request 22 | $URI = "$($psPASSession.BaseURI)/API/ConnectionComponents/Import" 23 | 24 | #Convert File to byte array 25 | $FileBytes = $ImportFile | Get-ByteArray 26 | 27 | #Create Request Body 28 | $Body = @{'ImportFile' = $FileBytes } | ConvertTo-Json 29 | 30 | if ($PSCmdlet.ShouldProcess($ImportFile, 'Imports Connection Component')) { 31 | 32 | #send request to web service 33 | Invoke-PASRestMethod -Uri $URI -Method POST -Body $Body -Debug:$false 34 | 35 | } 36 | 37 | }#process 38 | 39 | END { }#end 40 | 41 | } -------------------------------------------------------------------------------- /psPAS/Functions/EventSecurity/Add-PASPTAExcludedTarget.ps1: -------------------------------------------------------------------------------- 1 | # .ExternalHelp psPAS-help.xml 2 | Function Add-PASPTAExcludedTarget { 3 | [CmdletBinding(SupportsShouldProcess = $true)] 4 | param( 5 | [parameter( 6 | Mandatory = $true, 7 | ValueFromPipelinebyPropertyName = $true 8 | )] 9 | [string]$cidr 10 | ) 11 | 12 | BEGIN { 13 | Assert-VersionRequirement -SelfHosted 14 | Assert-VersionRequirement -RequiredVersion 14.0 15 | }#begin 16 | 17 | PROCESS { 18 | 19 | #Create request URL 20 | $URI = "$($psPASSession.BaseURI)/api/pta/API/Administration/properties/CidrExclusionList" 21 | 22 | #Create body of request 23 | $Body = $PSBoundParameters | Get-PASParameter | ConvertTo-Json 24 | 25 | if ($PSCmdlet.ShouldProcess($cidr, 'Add PTA Excluded Monitored Target')) { 26 | 27 | #send request to web service 28 | Invoke-PASRestMethod -Uri $URI -Method PATCH -Body $Body 29 | 30 | } 31 | 32 | }#process 33 | 34 | END { }#end 35 | 36 | } -------------------------------------------------------------------------------- /psPAS/Functions/EventSecurity/Add-PASPTAIncludedTarget.ps1: -------------------------------------------------------------------------------- 1 | # .ExternalHelp psPAS-help.xml 2 | Function Add-PASPTAIncludedTarget { 3 | [CmdletBinding(SupportsShouldProcess = $true)] 4 | param( 5 | [parameter( 6 | Mandatory = $true, 7 | ValueFromPipelinebyPropertyName = $true 8 | )] 9 | [string]$cidr 10 | ) 11 | 12 | BEGIN { 13 | Assert-VersionRequirement -SelfHosted 14 | Assert-VersionRequirement -RequiredVersion 14.0 15 | }#begin 16 | 17 | PROCESS { 18 | 19 | #Create request URL 20 | $URI = "$($psPASSession.BaseURI)/api/pta/API/Administration/properties/CidrInclusionList" 21 | 22 | #Create body of request 23 | $Body = $PSBoundParameters | Get-PASParameter | ConvertTo-Json 24 | 25 | if ($PSCmdlet.ShouldProcess($cidr, 'Add PTA Included Monitored Target')) { 26 | 27 | #send request to web service 28 | Invoke-PASRestMethod -Uri $URI -Method PATCH -Body $Body 29 | 30 | } 31 | 32 | }#process 33 | 34 | END { }#end 35 | 36 | } -------------------------------------------------------------------------------- /psPAS/Functions/EventSecurity/Add-PASPTAPrivilegedGroup.ps1: -------------------------------------------------------------------------------- 1 | # .ExternalHelp psPAS-help.xml 2 | Function Add-PASPTAPrivilegedGroup { 3 | [CmdletBinding(SupportsShouldProcess = $true)] 4 | param( 5 | [parameter( 6 | Mandatory = $true, 7 | ValueFromPipelinebyPropertyName = $true 8 | )] 9 | [string]$domain, 10 | 11 | [parameter( 12 | Mandatory = $true, 13 | ValueFromPipelinebyPropertyName = $true 14 | )] 15 | [string]$group 16 | ) 17 | 18 | BEGIN { 19 | Assert-VersionRequirement -SelfHosted 20 | Assert-VersionRequirement -RequiredVersion 14.0 21 | }#begin 22 | 23 | PROCESS { 24 | 25 | #Create request URL 26 | $URI = "$($psPASSession.BaseURI)/API/pta/API/configuration/properties/PrivilegedDomainGroupsList" 27 | 28 | #Create body of request 29 | $Body = $PSBoundParameters | Get-PASParameter | ConvertTo-Json 30 | 31 | if ($PSCmdlet.ShouldProcess($group, 'Add PTA Privileged Domain Group Configuration')) { 32 | 33 | #send request to web service 34 | Invoke-PASRestMethod -Uri $URI -Method PATCH -Body $Body 35 | 36 | } 37 | 38 | }#process 39 | 40 | END { }#end 41 | 42 | } -------------------------------------------------------------------------------- /psPAS/Functions/EventSecurity/Add-PASPTAPrivilegedUser.ps1: -------------------------------------------------------------------------------- 1 | # .ExternalHelp psPAS-help.xml 2 | Function Add-PASPTAPrivilegedUser { 3 | [CmdletBinding(SupportsShouldProcess = $true)] 4 | param( 5 | [parameter( 6 | Mandatory = $true, 7 | ValueFromPipelinebyPropertyName = $true 8 | )] 9 | [ValidateSet('UNIX', 'WINDOWS', 'ORACLE', 'CLOUD_AWS', 'CLOUD_AZURE', 'APPLICATION')] 10 | [string]$platform, 11 | 12 | [parameter( 13 | Mandatory = $true, 14 | ValueFromPipelinebyPropertyName = $true 15 | )] 16 | [string]$user 17 | ) 18 | 19 | BEGIN { 20 | Assert-VersionRequirement -SelfHosted 21 | Assert-VersionRequirement -RequiredVersion 14.0 22 | }#begin 23 | 24 | PROCESS { 25 | 26 | #Create request URL 27 | $URI = "$($psPASSession.BaseURI)/API/pta/API/configuration/properties/PrivilegedUsersList" 28 | 29 | #Create body of request 30 | $Body = $PSBoundParameters | Get-PASParameter | ConvertTo-Json 31 | 32 | if ($PSCmdlet.ShouldProcess($user, 'Add PTA Privileged User Configuration')) { 33 | 34 | #send request to web service 35 | Invoke-PASRestMethod -Uri $URI -Method PATCH -Body $Body 36 | 37 | } 38 | 39 | }#process 40 | 41 | END { }#end 42 | 43 | } -------------------------------------------------------------------------------- /psPAS/Functions/EventSecurity/Get-PASPTAExcludedTarget.ps1: -------------------------------------------------------------------------------- 1 | # .ExternalHelp psPAS-help.xml 2 | Function Get-PASPTAExcludedTarget { 3 | [CmdletBinding()] 4 | param( ) 5 | 6 | BEGIN { 7 | Assert-VersionRequirement -SelfHosted 8 | Assert-VersionRequirement -RequiredVersion 14.0 9 | }#begin 10 | 11 | PROCESS { 12 | 13 | #Create request URL 14 | $URI = "$($psPASSession.BaseURI)/API/pta/API/administration" 15 | 16 | #Send request to web service 17 | $result = Invoke-PASRestMethod -Uri $URI -Method GET 18 | 19 | If ($null -ne $result) { 20 | 21 | #Return Results 22 | $result | Where-Object { ($PSItem.propertykey -eq 'CidrExclusionList') -and ($PSItem.categorykey -eq 'MonitoredTargets') } | 23 | Select-Object -ExpandProperty 'ActualValue' | 24 | Add-ObjectDetail -typename psPAS.CyberArk.Vault.PTA.MonitoredTarget 25 | 26 | } 27 | 28 | }#process 29 | 30 | END { }#end 31 | 32 | } -------------------------------------------------------------------------------- /psPAS/Functions/EventSecurity/Get-PASPTAGlobalCatalog.ps1: -------------------------------------------------------------------------------- 1 | # .ExternalHelp psPAS-help.xml 2 | Function Get-PASPTAGlobalCatalog { 3 | [CmdletBinding()] 4 | param( ) 5 | 6 | BEGIN { 7 | Assert-VersionRequirement -SelfHosted 8 | Assert-VersionRequirement -RequiredVersion 13.0 9 | }#begin 10 | 11 | PROCESS { 12 | 13 | #Create request URL 14 | $URI = "$($psPASSession.BaseURI)/API/pta/API/Administration/GCConnectivity" 15 | 16 | #Send request to web service 17 | $result = Invoke-PASRestMethod -Uri $URI -Method GET 18 | 19 | If ($null -ne $result) { 20 | 21 | #Return Results 22 | $result 23 | 24 | } 25 | 26 | }#process 27 | 28 | END { }#end 29 | 30 | } -------------------------------------------------------------------------------- /psPAS/Functions/EventSecurity/Get-PASPTAIncludedTarget.ps1: -------------------------------------------------------------------------------- 1 | # .ExternalHelp psPAS-help.xml 2 | Function Get-PASPTAIncludedTarget { 3 | [CmdletBinding()] 4 | param( ) 5 | 6 | BEGIN { 7 | Assert-VersionRequirement -SelfHosted 8 | Assert-VersionRequirement -RequiredVersion 14.0 9 | }#begin 10 | 11 | PROCESS { 12 | 13 | #Create request URL 14 | $URI = "$($psPASSession.BaseURI)/API/pta/API/administration" 15 | 16 | #Send request to web service 17 | $result = Invoke-PASRestMethod -Uri $URI -Method GET 18 | 19 | If ($null -ne $result) { 20 | 21 | #Return Results 22 | $result | Where-Object { ($PSItem.propertykey -eq 'CidrInclusionList') -and ($PSItem.categorykey -eq 'MonitoredTargets') } | 23 | Select-Object -ExpandProperty 'actualValue' | 24 | Add-ObjectDetail -typename psPAS.CyberArk.Vault.PTA.MonitoredTarget 25 | 26 | } 27 | 28 | }#process 29 | 30 | END { }#end 31 | 32 | } -------------------------------------------------------------------------------- /psPAS/Functions/EventSecurity/Get-PASPTAPrivilegedGroup.ps1: -------------------------------------------------------------------------------- 1 | # .ExternalHelp psPAS-help.xml 2 | Function Get-PASPTAPrivilegedGroup { 3 | [CmdletBinding()] 4 | param( ) 5 | 6 | BEGIN { 7 | Assert-VersionRequirement -SelfHosted 8 | Assert-VersionRequirement -RequiredVersion 14.0 9 | }#begin 10 | 11 | PROCESS { 12 | 13 | #Create request URL 14 | $URI = "$($psPASSession.BaseURI)/API/pta/API/configuration" 15 | 16 | #Send request to web service 17 | $result = Invoke-PASRestMethod -Uri $URI -Method GET 18 | 19 | If ($null -ne $result) { 20 | 21 | #Return Results 22 | $result | Where-Object { $PSItem.propertykey -eq 'PrivilegedDomainGroupsList' } | 23 | Select-Object -ExpandProperty 'ActualValue' | 24 | Add-ObjectDetail -typename psPAS.CyberArk.Vault.PTA.PrivilegedDomainGroupsList 25 | 26 | } 27 | 28 | }#process 29 | 30 | END { }#end 31 | 32 | } -------------------------------------------------------------------------------- /psPAS/Functions/EventSecurity/Get-PASPTAPrivilegedUser.ps1: -------------------------------------------------------------------------------- 1 | # .ExternalHelp psPAS-help.xml 2 | Function Get-PASPTAPrivilegedUser { 3 | [CmdletBinding()] 4 | param( 5 | [parameter( 6 | Mandatory = $false, 7 | ValueFromPipelinebyPropertyName = $true 8 | )] 9 | [ValidateSet('ActualValue', 'DefaultValue')] 10 | [string]$ValueType 11 | ) 12 | 13 | BEGIN { 14 | Assert-VersionRequirement -SelfHosted 15 | Assert-VersionRequirement -RequiredVersion 14.0 16 | $ReturnValue = 'ActualValue' 17 | }#begin 18 | 19 | PROCESS { 20 | 21 | If ($PSBoundParameters.ContainsKey('ValueType')) { 22 | $ReturnValue = $ValueType 23 | } 24 | #Create request URL 25 | $URI = "$($psPASSession.BaseURI)/API/pta/API/configuration" 26 | 27 | #Send request to web service 28 | $result = Invoke-PASRestMethod -Uri $URI -Method GET 29 | 30 | If ($null -ne $result) { 31 | 32 | #Return Results 33 | $result | Where-Object { $PSItem.propertykey -eq 'PrivilegedUsersList' } | 34 | Select-Object -ExpandProperty $ReturnValue | 35 | Add-ObjectDetail -typename psPAS.CyberArk.Vault.PTA.PrivilegedUsersList 36 | 37 | } 38 | 39 | }#process 40 | 41 | END { }#end 42 | 43 | } -------------------------------------------------------------------------------- /psPAS/Functions/EventSecurity/Get-PASPTARemediation.ps1: -------------------------------------------------------------------------------- 1 | # .ExternalHelp psPAS-help.xml 2 | Function Get-PASPTARemediation { 3 | [CmdletBinding()] 4 | param( ) 5 | 6 | BEGIN { 7 | Assert-VersionRequirement -SelfHosted 8 | Assert-VersionRequirement -RequiredVersion 10.4 9 | }#begin 10 | 11 | PROCESS { 12 | 13 | #Create request URL 14 | $URI = "$($psPASSession.BaseURI)/API/pta/API/Settings" 15 | 16 | #Send request to web service 17 | $result = Invoke-PASRestMethod -Uri $URI -Method GET 18 | 19 | If ($null -ne $result) { 20 | 21 | #Return Results 22 | $result.automaticRemediation | Add-ObjectDetail -typename psPAS.CyberArk.Vault.PTA.Remediation 23 | 24 | } 25 | 26 | }#process 27 | 28 | END { }#end 29 | 30 | } -------------------------------------------------------------------------------- /psPAS/Functions/EventSecurity/Get-PASPTARiskSummary.ps1: -------------------------------------------------------------------------------- 1 | # .ExternalHelp psPAS-help.xml 2 | Function Get-PASPTARiskSummary { 3 | [CmdletBinding()] 4 | param( ) 5 | 6 | BEGIN { 7 | Assert-VersionRequirement -SelfHosted 8 | Assert-VersionRequirement -RequiredVersion 13.2 9 | }#begin 10 | 11 | PROCESS { 12 | 13 | #Create request URL 14 | $URI = "$($psPASSession.BaseURI)/API/pta/API/Risks/Summary/" 15 | 16 | #Send request to web service 17 | $result = Invoke-PASRestMethod -Uri $URI -Method GET 18 | 19 | If ($null -ne $result) { 20 | 21 | #Return Results 22 | $result | Add-ObjectDetail -typename psPAS.CyberArk.Vault.PTA.Event.Risk.Summary 23 | 24 | } 25 | 26 | }#process 27 | 28 | END { }#end 29 | 30 | } -------------------------------------------------------------------------------- /psPAS/Functions/EventSecurity/Get-PASPTARule.ps1: -------------------------------------------------------------------------------- 1 | # .ExternalHelp psPAS-help.xml 2 | Function Get-PASPTARule { 3 | [CmdletBinding()] 4 | param( ) 5 | 6 | BEGIN { 7 | Assert-VersionRequirement -SelfHosted 8 | Assert-VersionRequirement -RequiredVersion 10.4 9 | }#begin 10 | 11 | PROCESS { 12 | 13 | #Create request URL 14 | $URI = "$($psPASSession.BaseURI)/API/pta/API/Settings" 15 | 16 | #Send request to web service 17 | $result = Invoke-PASRestMethod -Uri $URI -Method GET 18 | 19 | If ($null -ne $result) { 20 | 21 | #Return Results 22 | $result.riskyActivities | Add-ObjectDetail -typename psPAS.CyberArk.Vault.PTA.Rule 23 | 24 | } 25 | 26 | }#process 27 | 28 | END { }#end 29 | 30 | } -------------------------------------------------------------------------------- /psPAS/Functions/EventSecurity/Remove-PASPTAExcludedTarget.ps1: -------------------------------------------------------------------------------- 1 | # .ExternalHelp psPAS-help.xml 2 | Function Remove-PASPTAExcludedTarget { 3 | [CmdletBinding(SupportsShouldProcess = $true)] 4 | param( 5 | [parameter( 6 | Mandatory = $true, 7 | ValueFromPipelinebyPropertyName = $true 8 | )] 9 | [string]$ID 10 | ) 11 | 12 | BEGIN { 13 | Assert-VersionRequirement -SelfHosted 14 | Assert-VersionRequirement -RequiredVersion 14.0 15 | }#begin 16 | 17 | PROCESS { 18 | 19 | #Create request URL 20 | $URI = "$($psPASSession.BaseURI)/api/pta/API/Administration/properties/CidrExclusionList/$ID" 21 | 22 | if ($PSCmdlet.ShouldProcess($ID, 'Delete PTA Excluded Monitored Target')) { 23 | 24 | #send request to web service 25 | Invoke-PASRestMethod -Uri $URI -Method DELETE 26 | 27 | } 28 | 29 | }#process 30 | 31 | END { }#end 32 | 33 | } -------------------------------------------------------------------------------- /psPAS/Functions/EventSecurity/Remove-PASPTAIncludedTarget.ps1: -------------------------------------------------------------------------------- 1 | # .ExternalHelp psPAS-help.xml 2 | Function Remove-PASPTAIncludedTarget { 3 | [CmdletBinding(SupportsShouldProcess = $true)] 4 | param( 5 | [parameter( 6 | Mandatory = $true, 7 | ValueFromPipelinebyPropertyName = $true 8 | )] 9 | [string]$ID 10 | ) 11 | 12 | BEGIN { 13 | Assert-VersionRequirement -SelfHosted 14 | Assert-VersionRequirement -RequiredVersion 14.0 15 | }#begin 16 | 17 | PROCESS { 18 | 19 | #Create request URL 20 | $URI = "$($psPASSession.BaseURI)/api/pta/API/Administration/properties/CidrInclusionList/$ID" 21 | 22 | if ($PSCmdlet.ShouldProcess($ID, 'Delete PTA Included Monitored Target')) { 23 | 24 | #send request to web service 25 | Invoke-PASRestMethod -Uri $URI -Method DELETE 26 | 27 | } 28 | 29 | }#process 30 | 31 | END { }#end 32 | 33 | } -------------------------------------------------------------------------------- /psPAS/Functions/EventSecurity/Remove-PASPTAPrivilegedGroup.ps1: -------------------------------------------------------------------------------- 1 | # .ExternalHelp psPAS-help.xml 2 | Function Remove-PASPTAPrivilegedGroup { 3 | [CmdletBinding(SupportsShouldProcess = $true)] 4 | param( 5 | [parameter( 6 | Mandatory = $true, 7 | ValueFromPipelinebyPropertyName = $true 8 | )] 9 | [string]$ID 10 | ) 11 | 12 | BEGIN { 13 | Assert-VersionRequirement -SelfHosted 14 | Assert-VersionRequirement -RequiredVersion 14.0 15 | }#begin 16 | 17 | PROCESS { 18 | 19 | #Create request URL 20 | $URI = "$($psPASSession.BaseURI)/API/pta/API/configuration/properties/PrivilegedDomainGroupsList/$ID" 21 | 22 | if ($PSCmdlet.ShouldProcess($ID, 'Delete PTA Privileged Domain Group Configuration')) { 23 | 24 | #send request to web service 25 | Invoke-PASRestMethod -Uri $URI -Method DELETE 26 | 27 | } 28 | 29 | }#process 30 | 31 | END { }#end 32 | 33 | } -------------------------------------------------------------------------------- /psPAS/Functions/EventSecurity/Remove-PASPTAPrivilegedUser.ps1: -------------------------------------------------------------------------------- 1 | # .ExternalHelp psPAS-help.xml 2 | Function Remove-PASPTAPrivilegedUser { 3 | [CmdletBinding(SupportsShouldProcess = $true)] 4 | param( 5 | [parameter( 6 | Mandatory = $true, 7 | ValueFromPipelinebyPropertyName = $true 8 | )] 9 | [string]$ID 10 | ) 11 | 12 | BEGIN { 13 | Assert-VersionRequirement -SelfHosted 14 | Assert-VersionRequirement -RequiredVersion 14.0 15 | }#begin 16 | 17 | PROCESS { 18 | 19 | #Create request URL 20 | $URI = "$($psPASSession.BaseURI)/API/pta/API/configuration/properties/PrivilegedUsersList/$ID" 21 | 22 | if ($PSCmdlet.ShouldProcess($ID, 'Delete PTA Privileged User Configuration')) { 23 | 24 | #send request to web service 25 | Invoke-PASRestMethod -Uri $URI -Method DELETE 26 | 27 | } 28 | 29 | }#process 30 | 31 | END { }#end 32 | 33 | } -------------------------------------------------------------------------------- /psPAS/Functions/EventSecurity/Set-PASPTAEvent.ps1: -------------------------------------------------------------------------------- 1 | # .ExternalHelp psPAS-help.xml 2 | Function Set-PASPTAEvent { 3 | [CmdletBinding(SupportsShouldProcess)] 4 | param( 5 | [parameter( 6 | Mandatory = $true, 7 | ValueFromPipelinebyPropertyName = $true 8 | )] 9 | [string]$EventID, 10 | 11 | [parameter( 12 | Mandatory = $false, 13 | ValueFromPipelinebyPropertyName = $true 14 | )] 15 | [ValidateSet('OPEN', 'CLOSED')] 16 | [string]$mStatus 17 | 18 | ) 19 | 20 | BEGIN { 21 | Assert-VersionRequirement -SelfHosted 22 | Assert-VersionRequirement -RequiredVersion 11.3 23 | }#begin 24 | 25 | PROCESS { 26 | 27 | #Create request URL 28 | $URI = "$($psPASSession.BaseURI)/API/pta/API/Events/$EventID" 29 | 30 | #Get Parameters to include in request 31 | $Body = $PSBoundParameters | Get-PASParameter -ParametersToRemove EventID | ConvertTo-Json 32 | 33 | if ($PSCmdlet.ShouldProcess($EventID, 'Update Event Status')) { 34 | 35 | #Send request to web service 36 | $result = Invoke-PASRestMethod -Uri $URI -Method PATCH -Body $Body 37 | 38 | } 39 | 40 | If ($null -ne $result) { 41 | 42 | #Return Results 43 | $result | Add-ObjectDetail -typename psPAS.CyberArk.Vault.PTA.Event 44 | 45 | } 46 | 47 | }#process 48 | 49 | END { }#end 50 | 51 | } -------------------------------------------------------------------------------- /psPAS/Functions/General/Add-PASAllowedReferrer.ps1: -------------------------------------------------------------------------------- 1 | # .ExternalHelp psPAS-help.xml 2 | Function Add-PASAllowedReferrer { 3 | [CmdletBinding()] 4 | param( 5 | [parameter( 6 | Mandatory = $true, 7 | ValueFromPipelinebyPropertyName = $true 8 | )] 9 | [string]$referrerURL, 10 | 11 | [parameter( 12 | Mandatory = $false, 13 | ValueFromPipelinebyPropertyName = $true 14 | )] 15 | [boolean]$regularExpression 16 | ) 17 | 18 | BEGIN { 19 | 20 | Assert-VersionRequirement -RequiredVersion 11.5 21 | 22 | }#begin 23 | 24 | PROCESS { 25 | 26 | #Create URL for request 27 | $URI = "$($psPASSession.BaseURI)/api/Configuration/AccessRestriction/AllowedReferrers" 28 | 29 | #Create request body 30 | $body = $PSBoundParameters | Get-PASParameter | ConvertTo-Json 31 | 32 | #send request to web service 33 | $result = Invoke-PASRestMethod -Uri $URI -Method POST -Body $Body 34 | 35 | If ($null -ne $result) { 36 | 37 | $result 38 | 39 | } 40 | 41 | }#process 42 | 43 | END { }#end 44 | 45 | } -------------------------------------------------------------------------------- /psPAS/Functions/General/Get-PASAllowedReferrer.ps1: -------------------------------------------------------------------------------- 1 | # .ExternalHelp psPAS-help.xml 2 | Function Get-PASAllowedReferrer { 3 | [CmdletBinding()] 4 | param( ) 5 | 6 | BEGIN { 7 | 8 | Assert-VersionRequirement -RequiredVersion 11.5 9 | 10 | }#begin 11 | 12 | PROCESS { 13 | 14 | #Create URL for request 15 | $URI = "$($psPASSession.BaseURI)/api/Configuration/AccessRestriction/AllowedReferrers" 16 | 17 | #send request to web service 18 | $result = Invoke-PASRestMethod -Uri $URI -Method GET 19 | 20 | If ($null -ne $result) { 21 | 22 | $result 23 | 24 | } 25 | 26 | }#process 27 | 28 | END { }#end 29 | 30 | } -------------------------------------------------------------------------------- /psPAS/Functions/IPAllowlist/Get-PASIPAllowList.ps1: -------------------------------------------------------------------------------- 1 | # .ExternalHelp psPAS-help.xml 2 | Function Get-PASIPAllowList { 3 | [CmdletBinding()] 4 | param( ) 5 | 6 | Begin { 7 | Assert-VersionRequirement -PrivilegeCloud 8 | } 9 | 10 | Process { 11 | 12 | #Create URL for request 13 | $URI = "$($psPASSession.ApiURI)/api/advanced-settings/ip-allowlist" 14 | 15 | #send request to web service 16 | $result = Invoke-PASRestMethod -Uri $URI -Method GET 17 | 18 | If ($null -ne $result) { 19 | 20 | $result 21 | 22 | } 23 | 24 | } 25 | 26 | End {} 27 | 28 | } -------------------------------------------------------------------------------- /psPAS/Functions/IPAllowlist/Set-PASIPAllowList.ps1: -------------------------------------------------------------------------------- 1 | # .ExternalHelp psPAS-help.xml 2 | Function Set-PASIPAllowList { 3 | [CmdletBinding(SupportsShouldProcess)] 4 | param( 5 | [parameter( 6 | Mandatory = $true, 7 | ValueFromPipelinebyPropertyName = $true 8 | )] 9 | [AllowEmptyCollection()] 10 | [ValidatePattern('^(?:(25[0-5]|(2[0-4]|1\d|[1-9]|)\d)\.?\b){4}\/(?:2[2-9]|3[0-2])$')] 11 | [string[]]$customerPublicIPs 12 | ) 13 | 14 | Begin { 15 | Assert-VersionRequirement -PrivilegeCloud 16 | } 17 | 18 | Process { 19 | 20 | #Create URL for request 21 | $URI = "$($psPASSession.ApiURI)/api/advanced-settings/ip-allowlist" 22 | 23 | $body = $PSBoundParameters | Get-PASParameter | ConvertTo-Json 24 | 25 | if ($PSCmdlet.ShouldProcess($($customerPublicIPs -join ','), 'Set IP AllowList Properties')) { 26 | 27 | #send request to web service 28 | $result = Invoke-PASRestMethod -Uri $URI -Method PUT -Body $body 29 | 30 | If ($null -ne $result) { 31 | 32 | $result 33 | 34 | } 35 | 36 | } 37 | 38 | } 39 | 40 | End {} 41 | 42 | } -------------------------------------------------------------------------------- /psPAS/Functions/LDAPDirectories/Get-PASDirectory.ps1: -------------------------------------------------------------------------------- 1 | # .ExternalHelp psPAS-help.xml 2 | function Get-PASDirectory { 3 | [CmdletBinding()] 4 | param( 5 | [parameter( 6 | Mandatory = $false, 7 | ValueFromPipelinebyPropertyName = $true, 8 | ParameterSetName = 'id' 9 | )] 10 | [Alias('DomainName')] 11 | [string]$id 12 | 13 | ) 14 | 15 | BEGIN { 16 | Assert-VersionRequirement -SelfHosted 17 | Assert-VersionRequirement -RequiredVersion 10.4 18 | 19 | }#begin 20 | 21 | PROCESS { 22 | 23 | #Create URL for request 24 | $URI = "$($psPASSession.BaseURI)/api/Configuration/LDAP/Directories" 25 | 26 | switch ($PSCmdlet.ParameterSetName) { 27 | 28 | 'id' { 29 | 30 | Assert-VersionRequirement -RequiredVersion 10.5 31 | 32 | #Update URL for request 33 | $URI = "$URI/$id/" 34 | 35 | $type = 'psPAS.CyberArk.Vault.Directory.Extended' 36 | 37 | break 38 | 39 | } 40 | 41 | default { 42 | 43 | $type = 'psPAS.CyberArk.Vault.Directory' 44 | 45 | break 46 | 47 | } 48 | 49 | } 50 | 51 | #send request to web service 52 | $result = Invoke-PASRestMethod -Uri $URI -Method GET 53 | 54 | If ($null -ne $result) { 55 | 56 | #Return Results 57 | $result | Add-ObjectDetail -typename $type 58 | 59 | } 60 | 61 | }#process 62 | 63 | END { }#end 64 | 65 | } -------------------------------------------------------------------------------- /psPAS/Functions/LDAPDirectories/Get-PASDirectoryMapping.ps1: -------------------------------------------------------------------------------- 1 | # .ExternalHelp psPAS-help.xml 2 | function Get-PASDirectoryMapping { 3 | [CmdletBinding(DefaultParameterSetName = 'All')] 4 | param( 5 | [parameter( 6 | Mandatory = $true, 7 | ValueFromPipelinebyPropertyName = $true, 8 | ParameterSetName = 'All' 9 | )] 10 | [parameter( 11 | Mandatory = $true, 12 | ValueFromPipelinebyPropertyName = $true, 13 | ParameterSetName = 'Mapping' 14 | )] 15 | [Alias('DomainName')] 16 | [string]$DirectoryName, 17 | 18 | [parameter( 19 | Mandatory = $true, 20 | ValueFromPipelinebyPropertyName = $true, 21 | ParameterSetName = 'Mapping' 22 | )] 23 | [string]$MappingID 24 | 25 | ) 26 | 27 | BEGIN { 28 | Assert-VersionRequirement -SelfHosted 29 | Assert-VersionRequirement -RequiredVersion 10.7 30 | }#begin 31 | 32 | PROCESS { 33 | 34 | #Create URL for request 35 | $URI = "$($psPASSession.BaseURI)/api/Configuration/LDAP/Directories/$DirectoryName/Mappings/" 36 | 37 | if ($PSCmdlet.ParameterSetName -eq 'Mapping') { 38 | 39 | #Update URL for request 40 | $URI = "$URI$MappingID/" 41 | 42 | } 43 | 44 | #send request to web service 45 | $result = Invoke-PASRestMethod -Uri $URI -Method GET 46 | 47 | If ($null -ne $result) { 48 | 49 | #Return Results 50 | $result | Add-ObjectDetail -typename psPAS.CyberArk.Vault.Directory.Mapping 51 | 52 | } 53 | 54 | }#process 55 | 56 | END { }#end 57 | 58 | } -------------------------------------------------------------------------------- /psPAS/Functions/LDAPDirectories/Remove-PASDirectory.ps1: -------------------------------------------------------------------------------- 1 | # .ExternalHelp psPAS-help.xml 2 | function Remove-PASDirectory { 3 | [CmdletBinding(SupportsShouldProcess = $true)] 4 | param( 5 | [parameter( 6 | Mandatory = $true, 7 | ValueFromPipelinebyPropertyName = $true 8 | )] 9 | [Alias('DomainName')] 10 | [string]$id 11 | 12 | ) 13 | 14 | BEGIN { 15 | Assert-VersionRequirement -SelfHosted 16 | Assert-VersionRequirement -RequiredVersion 10.7 17 | }#begin 18 | 19 | PROCESS { 20 | 21 | #Create URL for request 22 | $URI = "$($psPASSession.BaseURI)/api/Configuration/LDAP/Directories/$id/" 23 | 24 | if ($PSCmdlet.ShouldProcess($id, 'Delete Directory')) { 25 | 26 | #send request to web service 27 | Invoke-PASRestMethod -Uri $URI -Method DELETE 28 | 29 | } 30 | 31 | }#process 32 | 33 | END { }#end 34 | 35 | } -------------------------------------------------------------------------------- /psPAS/Functions/LDAPDirectories/Remove-PASDirectoryMapping.ps1: -------------------------------------------------------------------------------- 1 | # .ExternalHelp psPAS-help.xml 2 | function Remove-PASDirectoryMapping { 3 | [CmdletBinding(SupportsShouldProcess = $true)] 4 | param( 5 | [parameter( 6 | Mandatory = $true, 7 | ValueFromPipelinebyPropertyName = $true 8 | )] 9 | [string]$DirectoryName, 10 | 11 | [parameter( 12 | Mandatory = $true, 13 | ValueFromPipelinebyPropertyName = $true 14 | )] 15 | [string]$MappingID 16 | ) 17 | 18 | BEGIN { 19 | Assert-VersionRequirement -SelfHosted 20 | Assert-VersionRequirement -RequiredVersion 11.1 21 | }#begin 22 | 23 | PROCESS { 24 | 25 | #Create URL for request 26 | $URI = "$($psPASSession.BaseURI)/api/Configuration/LDAP/Directories/$DirectoryName/Mappings/$MappingID/" 27 | 28 | if ($PSCmdlet.ShouldProcess($MappingID, 'Delete Directory Mapping')) { 29 | 30 | #send request to web service 31 | Invoke-PASRestMethod -Uri $URI -Method DELETE 32 | 33 | } 34 | 35 | }#process 36 | 37 | END { }#end 38 | 39 | } -------------------------------------------------------------------------------- /psPAS/Functions/LDAPDirectories/Set-PASDirectoryMappingOrder.ps1: -------------------------------------------------------------------------------- 1 | # .ExternalHelp psPAS-help.xml 2 | function Set-PASDirectoryMappingOrder { 3 | [CmdletBinding(SupportsShouldProcess)] 4 | param( 5 | [parameter( 6 | Mandatory = $true, 7 | ValueFromPipelinebyPropertyName = $true 8 | )] 9 | [string]$DirectoryName, 10 | 11 | [parameter( 12 | Mandatory = $true, 13 | ValueFromPipelinebyPropertyName = $true 14 | )] 15 | [int[]]$MappingsOrder 16 | ) 17 | 18 | BEGIN { 19 | 20 | Assert-VersionRequirement -SelfHosted 21 | Assert-VersionRequirement -RequiredVersion 10.10 22 | 23 | }#begin 24 | 25 | PROCESS { 26 | 27 | #Create URL for request 28 | $URI = "$($psPASSession.BaseURI)/api/Configuration/LDAP/Directories/$DirectoryName/Mappings/Reorder/" 29 | 30 | #Get request parameters 31 | $body = $($PSBoundParameters | Get-PASParameter -ParametersToRemove DirectoryName) | ConvertTo-Json 32 | 33 | if ($PSCmdlet.ShouldProcess($DirectoryName, 'Update Directory Mapping Order')) { 34 | 35 | #send request to web service 36 | Invoke-PASRestMethod -Uri $URI -Method POST -Body $Body 37 | 38 | } 39 | 40 | }#process 41 | 42 | END { }#end 43 | 44 | } -------------------------------------------------------------------------------- /psPAS/Functions/Monitoring/Export-PASPSMRecording.ps1: -------------------------------------------------------------------------------- 1 | # .ExternalHelp psPAS-help.xml 2 | function Export-PASPSMRecording { 3 | [CmdletBinding()] 4 | param( 5 | [parameter( 6 | Mandatory = $true, 7 | ValueFromPipelinebyPropertyName = $true 8 | )] 9 | [string]$RecordingID, 10 | 11 | [parameter( 12 | Mandatory = $true, 13 | ValueFromPipelinebyPropertyName = $true 14 | )] 15 | [ValidateNotNullOrEmpty()] 16 | [ValidateScript( { Test-Path -Path $_ -IsValid })] 17 | [string]$path 18 | ) 19 | 20 | BEGIN { 21 | Assert-VersionRequirement -RequiredVersion 10.6 22 | }#begin 23 | 24 | PROCESS { 25 | 26 | #Create URL for Request 27 | $URI = "$($psPASSession.BaseURI)/API/Recordings/$($RecordingID | Get-EscapedString)/Play" 28 | 29 | #send request to PAS web service 30 | $result = Invoke-PASRestMethod -Uri $URI -Method POST 31 | 32 | #if we get a byte array 33 | If ($null -ne $result) { 34 | 35 | Out-PASFile -InputObject $result -Path $path 36 | 37 | } 38 | 39 | } #process 40 | 41 | END { }#end 42 | 43 | } -------------------------------------------------------------------------------- /psPAS/Functions/Monitoring/Get-PASPSMRecordingActivity.ps1: -------------------------------------------------------------------------------- 1 | # .ExternalHelp psPAS-help.xml 2 | function Get-PASPSMRecordingActivity { 3 | [CmdletBinding()] 4 | param( 5 | [parameter( 6 | Mandatory = $true, 7 | ValueFromPipelinebyPropertyName = $true 8 | )] 9 | [Alias('SessionID')] 10 | [string]$RecordingID 11 | ) 12 | 13 | BEGIN { 14 | Assert-VersionRequirement -RequiredVersion 10.6 15 | }#begin 16 | 17 | PROCESS { 18 | 19 | #Create URL for Request 20 | $URI = "$($psPASSession.BaseURI)/API/Recordings/$($RecordingID | Get-EscapedString)/activities" 21 | 22 | #send request to PAS web service 23 | $result = Invoke-PASRestMethod -Uri $URI -Method GET 24 | 25 | If ($null -ne $result) { 26 | 27 | #Return Results 28 | $result.Activities | Add-ObjectDetail -typename psPAS.CyberArk.Vault.PSM.Recording.Activity 29 | 30 | } #process 31 | 32 | } 33 | 34 | END { }#end 35 | 36 | } -------------------------------------------------------------------------------- /psPAS/Functions/Monitoring/Get-PASPSMRecordingProperty.ps1: -------------------------------------------------------------------------------- 1 | # .ExternalHelp psPAS-help.xml 2 | function Get-PASPSMRecordingProperty { 3 | [CmdletBinding()] 4 | param( 5 | [parameter( 6 | Mandatory = $true, 7 | ValueFromPipelinebyPropertyName = $true 8 | )] 9 | [Alias('SessionID')] 10 | [string]$RecordingID 11 | ) 12 | 13 | BEGIN { 14 | Assert-VersionRequirement -RequiredVersion 10.6 15 | }#begin 16 | 17 | PROCESS { 18 | 19 | #Create URL for Request 20 | $URI = "$($psPASSession.BaseURI)/API/Recordings/$($RecordingID | Get-EscapedString)/properties" 21 | 22 | #send request to PAS web service 23 | $result = Invoke-PASRestMethod -Uri $URI -Method GET 24 | 25 | If ($null -ne $result) { 26 | 27 | #Return Results 28 | $result | Add-ObjectDetail -typename psPAS.CyberArk.Vault.PSM.Recording.Property 29 | 30 | } #process 31 | 32 | } 33 | 34 | END { }#end 35 | 36 | } -------------------------------------------------------------------------------- /psPAS/Functions/Monitoring/Get-PASPSMSessionActivity.ps1: -------------------------------------------------------------------------------- 1 | # .ExternalHelp psPAS-help.xml 2 | function Get-PASPSMSessionActivity { 3 | [CmdletBinding()] 4 | param( 5 | [parameter( 6 | Mandatory = $true, 7 | ValueFromPipelinebyPropertyName = $true 8 | )] 9 | [Alias('SessionID')] 10 | [string]$liveSessionId 11 | ) 12 | 13 | BEGIN { 14 | Assert-VersionRequirement -RequiredVersion 10.6 15 | }#begin 16 | 17 | PROCESS { 18 | 19 | #Create URL for Request 20 | $URI = "$($psPASSession.BaseURI)/API/LiveSessions/$($LiveSessionId | Get-EscapedString)/activities" 21 | 22 | #send request to PAS web service 23 | $result = Invoke-PASRestMethod -Uri $URI -Method GET 24 | 25 | If ($null -ne $result) { 26 | 27 | #Return Results 28 | $result.Activities | Add-ObjectDetail -typename psPAS.CyberArk.Vault.PSM.Session.Activity 29 | 30 | } #process 31 | 32 | } 33 | 34 | END { }#end 35 | 36 | } -------------------------------------------------------------------------------- /psPAS/Functions/Monitoring/Get-PASPSMSessionProperty.ps1: -------------------------------------------------------------------------------- 1 | # .ExternalHelp psPAS-help.xml 2 | function Get-PASPSMSessionProperty { 3 | [CmdletBinding()] 4 | param( 5 | [parameter( 6 | Mandatory = $true, 7 | ValueFromPipelinebyPropertyName = $true 8 | )] 9 | [Alias('SessionID')] 10 | [string]$liveSessionId 11 | ) 12 | 13 | BEGIN { 14 | Assert-VersionRequirement -RequiredVersion 10.6 15 | }#begin 16 | 17 | PROCESS { 18 | 19 | #Create URL for Request 20 | $URI = "$($psPASSession.BaseURI)/API/LiveSessions/$($liveSessionId | Get-EscapedString)/properties" 21 | 22 | #send request to PAS web service 23 | $result = Invoke-PASRestMethod -Uri $URI -Method GET 24 | 25 | If ($null -ne $result) { 26 | 27 | #Return Results 28 | $result | Add-ObjectDetail -typename psPAS.CyberArk.Vault.PSM.Session.Property 29 | 30 | } #process 31 | 32 | } 33 | 34 | END { }#end 35 | 36 | } -------------------------------------------------------------------------------- /psPAS/Functions/Monitoring/Resume-PASPSMSession.ps1: -------------------------------------------------------------------------------- 1 | # .ExternalHelp psPAS-help.xml 2 | function Resume-PASPSMSession { 3 | [CmdletBinding(SupportsShouldProcess)] 4 | param( 5 | [parameter( 6 | Mandatory = $true, 7 | ValueFromPipelinebyPropertyName = $true 8 | )] 9 | [ValidateNotNullOrEmpty()] 10 | [Alias('SessionGuid')] 11 | [string]$LiveSessionId 12 | ) 13 | 14 | BEGIN { 15 | Assert-VersionRequirement -RequiredVersion 10.2 16 | }#begin 17 | 18 | PROCESS { 19 | 20 | #Create URL for Request 21 | $URI = "$($psPASSession.BaseURI)/api/LiveSessions/$($LiveSessionId | Get-EscapedString)/Resume" 22 | 23 | if ($PSCmdlet.ShouldProcess($LiveSessionId, 'Resume PSM Session')) { 24 | 25 | #send request to PAS web service 26 | Invoke-PASRestMethod -Uri $URI -Method POST 27 | 28 | } 29 | 30 | } #process 31 | 32 | END { }#end 33 | 34 | } -------------------------------------------------------------------------------- /psPAS/Functions/Monitoring/Stop-PASPSMSession.ps1: -------------------------------------------------------------------------------- 1 | # .ExternalHelp psPAS-help.xml 2 | function Stop-PASPSMSession { 3 | [CmdletBinding(SupportsShouldProcess)] 4 | param( 5 | [parameter( 6 | Mandatory = $true, 7 | ValueFromPipelinebyPropertyName = $true 8 | )] 9 | [ValidateNotNullOrEmpty()] 10 | [Alias('SessionGuid')] 11 | [string]$LiveSessionId 12 | ) 13 | 14 | BEGIN { 15 | Assert-VersionRequirement -RequiredVersion 10.1 16 | }#begin 17 | 18 | PROCESS { 19 | 20 | #Create URL for Request 21 | $URI = "$($psPASSession.BaseURI)/api/LiveSessions/$($LiveSessionId | Get-EscapedString)/Terminate" 22 | 23 | if ($PSCmdlet.ShouldProcess($LiveSessionId, 'Terminate PSM Session')) { 24 | 25 | #send request to PAS web service 26 | Invoke-PASRestMethod -Uri $URI -Method POST 27 | 28 | } 29 | 30 | } #process 31 | 32 | END { }#end 33 | 34 | } -------------------------------------------------------------------------------- /psPAS/Functions/Monitoring/Suspend-PASPSMSession.ps1: -------------------------------------------------------------------------------- 1 | # .ExternalHelp psPAS-help.xml 2 | function Suspend-PASPSMSession { 3 | [CmdletBinding(SupportsShouldProcess)] 4 | param( 5 | [parameter( 6 | Mandatory = $true, 7 | ValueFromPipelinebyPropertyName = $true 8 | )] 9 | [ValidateNotNullOrEmpty()] 10 | [Alias('SessionGuid')] 11 | [string]$LiveSessionId 12 | ) 13 | 14 | BEGIN { 15 | Assert-VersionRequirement -RequiredVersion 10.2 16 | }#begin 17 | 18 | PROCESS { 19 | 20 | #Create URL for Request 21 | $URI = "$($psPASSession.BaseURI)/api/LiveSessions/$($LiveSessionId | Get-EscapedString)/Suspend" 22 | 23 | if ($PSCmdlet.ShouldProcess($LiveSessionId, 'Suspend PSM Session')) { 24 | 25 | #send request to PAS web service 26 | Invoke-PASRestMethod -Uri $URI -Method POST 27 | 28 | } 29 | 30 | } #process 31 | 32 | END { }#end 33 | 34 | } -------------------------------------------------------------------------------- /psPAS/Functions/Monitoring/Test-PASPSMRecording.ps1: -------------------------------------------------------------------------------- 1 | # .ExternalHelp psPAS-help.xml 2 | function Test-PASPSMRecording { 3 | [CmdletBinding()] 4 | param( 5 | [parameter( 6 | Mandatory = $true, 7 | ValueFromPipelinebyPropertyName = $true 8 | )] 9 | [string]$SessionID 10 | ) 11 | 12 | BEGIN { 13 | Assert-VersionRequirement -RequiredVersion 11.2 14 | }#begin 15 | 16 | PROCESS { 17 | 18 | #Create URL for Request 19 | $URI = "$($psPASSession.BaseURI)/API/Recordings/$SessionID/valid" 20 | 21 | #send request to PAS web service 22 | Invoke-PASRestMethod -Uri $URI -Method GET 23 | 24 | } #process 25 | 26 | END { }#end 27 | 28 | } -------------------------------------------------------------------------------- /psPAS/Functions/OnboardingRules/Get-PASOnboardingRule.ps1: -------------------------------------------------------------------------------- 1 | # .ExternalHelp psPAS-help.xml 2 | function Get-PASOnboardingRule { 3 | [CmdletBinding()] 4 | param( 5 | [parameter( 6 | Mandatory = $false, 7 | ValueFromPipelinebyPropertyName = $true, 8 | ParameterSetName = 'Names' 9 | )] 10 | [ValidateNotNullOrEmpty()] 11 | [string]$Names 12 | ) 13 | 14 | BEGIN { 15 | 16 | }#begin 17 | 18 | PROCESS { 19 | 20 | #Create URL for request 21 | $URI = "$($psPASSession.BaseURI)/api/AutomaticOnboardingRules" 22 | 23 | If ($PSBoundParameters.ContainsKey('Names')) { 24 | 25 | Assert-VersionRequirement -RequiredVersion 10.2 26 | 27 | #Get Parameters to include in request 28 | $boundParameters = $PSBoundParameters | Get-PASParameter 29 | 30 | #Create Query String, escaped for inclusion in request URL 31 | #!This must be unescaped - send a comma separated string for the value of `Names` 32 | $queryString = $boundParameters | ConvertTo-QueryString -NoEscape 33 | 34 | if ($null -ne $queryString) { 35 | 36 | #Build URL from base URL 37 | $URI = "$URI`?$queryString" 38 | 39 | } 40 | 41 | } 42 | 43 | #send request to web service 44 | $result = Invoke-PASRestMethod -Uri $URI -Method GET 45 | 46 | If ($null -ne $result) { 47 | 48 | $result.AutomaticOnboardingRules | Add-ObjectDetail -typename psPAS.CyberArk.Vault.OnboardingRule 49 | 50 | } 51 | 52 | }#process 53 | 54 | END { }#end 55 | 56 | } -------------------------------------------------------------------------------- /psPAS/Functions/OnboardingRules/Remove-PASOnboardingRule.ps1: -------------------------------------------------------------------------------- 1 | # .ExternalHelp psPAS-help.xml 2 | function Remove-PASOnboardingRule { 3 | [CmdletBinding(SupportsShouldProcess)] 4 | param( 5 | [parameter( 6 | Mandatory = $true, 7 | ValueFromPipelinebyPropertyName = $true 8 | )] 9 | [string]$RuleID 10 | ) 11 | 12 | BEGIN { }#begin 13 | 14 | PROCESS { 15 | 16 | #Create URL for request 17 | $URI = "$($psPASSession.BaseURI)/api/AutomaticOnboardingRules/$($RuleID | Get-EscapedString)/" 18 | 19 | if ($PSCmdlet.ShouldProcess($RuleID, 'Delete On-boarding Rule')) { 20 | 21 | #Send request to web service 22 | Invoke-PASRestMethod -Uri $URI -Method DELETE 23 | 24 | } 25 | 26 | }#process 27 | 28 | END { }#end 29 | 30 | } -------------------------------------------------------------------------------- /psPAS/Functions/Platforms/Export-PASPlatform.ps1: -------------------------------------------------------------------------------- 1 | # .ExternalHelp psPAS-help.xml 2 | function Export-PASPlatform { 3 | [CmdletBinding(SupportsShouldProcess)] 4 | param( 5 | [parameter( 6 | Mandatory = $true, 7 | ValueFromPipelinebyPropertyName = $true 8 | )] 9 | [string]$PlatformID, 10 | 11 | [parameter( 12 | Mandatory = $true, 13 | ValueFromPipelinebyPropertyName = $true 14 | )] 15 | [ValidateScript( { Test-Path -Path $_ -IsValid })] 16 | [string]$path 17 | ) 18 | 19 | BEGIN { 20 | Assert-VersionRequirement -RequiredVersion 10.4 21 | }#begin 22 | 23 | PROCESS { 24 | 25 | #Create URL for request 26 | $URI = "$($psPASSession.BaseURI)/API/Platforms/$PlatformID/Export?platformID=$PlatformID" 27 | 28 | if ($PSCmdlet.ShouldProcess($PlatformID, 'Exports Platform Package')) { 29 | 30 | #send request to web service 31 | $result = Invoke-PASRestMethod -Uri $URI -Method POST -Debug:$false 32 | 33 | #if we get a platform byte array 34 | If ($null -ne $result) { 35 | 36 | Out-PASFile -InputObject $result -Path $path 37 | 38 | } 39 | 40 | } 41 | 42 | }#process 43 | 44 | END { }#end 45 | 46 | } -------------------------------------------------------------------------------- /psPAS/Functions/Platforms/Get-PASPlatformPSMConfig.ps1: -------------------------------------------------------------------------------- 1 | # .ExternalHelp psPAS-help.xml 2 | Function Get-PASPlatformPSMConfig { 3 | [CmdletBinding()] 4 | param( 5 | [parameter( 6 | Mandatory = $true, 7 | ValueFromPipelinebyPropertyName = $true 8 | )] 9 | [int]$ID 10 | ) 11 | 12 | BEGIN { 13 | 14 | Assert-VersionRequirement -RequiredVersion 11.5 15 | 16 | }#begin 17 | 18 | PROCESS { 19 | 20 | #Create URL for request 21 | $URI = "$($psPASSession.BaseURI)/API/Platforms/Targets/$ID/PrivilegedSessionManagement" 22 | 23 | #send request to web service 24 | $result = Invoke-PASRestMethod -Uri $URI -Method GET 25 | 26 | If ($null -ne $result) { 27 | 28 | $result 29 | 30 | } 31 | 32 | }#process 33 | 34 | END { }#end 35 | 36 | } -------------------------------------------------------------------------------- /psPAS/Functions/Platforms/Get-PASPlatformSafe.ps1: -------------------------------------------------------------------------------- 1 | # .ExternalHelp psPAS-help.xml 2 | function Get-PASPlatformSafe { 3 | [CmdletBinding()] 4 | param( 5 | [parameter( 6 | Mandatory = $true, 7 | ValueFromPipelinebyPropertyName = $true 8 | )] 9 | [string]$PlatformID 10 | ) 11 | 12 | BEGIN { 13 | Assert-VersionRequirement -RequiredVersion 11.1 14 | }#begin 15 | 16 | PROCESS { 17 | 18 | #Create request URL 19 | $URI = "$($psPASSession.BaseURI)/API/Platforms/$($PlatformID | Get-EscapedString)/Safes/" 20 | 21 | #Send request to web service 22 | $result = Invoke-PASRestMethod -Uri $URI -Method GET 23 | 24 | If ($result.count -gt 0) { 25 | 26 | #Return Results 27 | $result.value | ForEach-Object { [pscustomobject]@{'SafeName' = $PSItem } } 28 | 29 | } 30 | 31 | }#process 32 | 33 | END { }#end 34 | 35 | } -------------------------------------------------------------------------------- /psPAS/Functions/Platforms/Get-PASPlatformSummary.ps1: -------------------------------------------------------------------------------- 1 | # .ExternalHelp psPAS-help.xml 2 | function Get-PASPlatformSummary { 3 | [CmdletBinding()] 4 | param() 5 | 6 | BEGIN { 7 | Assert-VersionRequirement -RequiredVersion 12.2 8 | }#begin 9 | 10 | PROCESS { 11 | 12 | #Create request URL 13 | $URI = "$($psPASSession.BaseURI)/API/Platforms/Targets/SystemTypes" 14 | 15 | #Send request to web service 16 | $result = Invoke-PASRestMethod -Uri $URI -Method GET 17 | 18 | #$result 19 | If ($null -ne $result) { 20 | 21 | #Return Results 22 | $result.SystemTypes 23 | 24 | } 25 | 26 | }#process 27 | 28 | END { }#end 29 | 30 | } -------------------------------------------------------------------------------- /psPAS/Functions/Platforms/Import-PASPlatform.ps1: -------------------------------------------------------------------------------- 1 | # .ExternalHelp psPAS-help.xml 2 | function Import-PASPlatform { 3 | [CmdletBinding(SupportsShouldProcess)] 4 | param( 5 | [parameter( 6 | Mandatory = $true, 7 | ValueFromPipelinebyPropertyName = $true 8 | )] 9 | [ValidateNotNullOrEmpty()] 10 | [ValidateScript( { Test-Path -Path $_ -PathType Leaf })] 11 | [ValidatePattern( '\.zip$' )] 12 | [string]$ImportFile 13 | ) 14 | 15 | BEGIN { 16 | Assert-VersionRequirement -RequiredVersion 10.2 17 | }#begin 18 | 19 | PROCESS { 20 | 21 | #Create URL for request 22 | $URI = "$($psPASSession.BaseURI)/API/Platforms/Import" 23 | 24 | #Convert File to byte array 25 | $FileBytes = $ImportFile | Get-ByteArray 26 | 27 | $Body = @{'ImportFile' = $FileBytes } | ConvertTo-Json 28 | 29 | if ($PSCmdlet.ShouldProcess($ImportFile, 'Imports Platform Package')) { 30 | 31 | #send request to web service 32 | Invoke-PASRestMethod -Uri $URI -Method POST -Body $Body -Debug:$false 33 | 34 | } 35 | 36 | }#process 37 | 38 | END { }#end 39 | 40 | } -------------------------------------------------------------------------------- /psPAS/Functions/PolicyACL/Get-PASPolicyACL.ps1: -------------------------------------------------------------------------------- 1 | # .ExternalHelp psPAS-help.xml 2 | function Get-PASPolicyACL { 3 | [CmdletBinding()] 4 | param( 5 | [parameter( 6 | Mandatory = $true, 7 | ValueFromPipelinebyPropertyName = $true 8 | )] 9 | [ValidateNotNullOrEmpty()] 10 | [string]$PolicyID 11 | 12 | ) 13 | 14 | BEGIN { 15 | Assert-VersionRequirement -SelfHosted 16 | }#begin 17 | 18 | PROCESS { 19 | 20 | #Create URL for request 21 | $URI = "$($psPASSession.BaseURI)/WebServices/PIMServices.svc/Policy/$($PolicyID | 22 | 23 | Get-EscapedString)/PrivilegedCommands/" 24 | 25 | #Send Request to web service 26 | $result = Invoke-PASRestMethod -Uri $URI -Method GET 27 | 28 | If ($null -ne $result) { 29 | 30 | $result.ListPolicyPrivilegedCommandsResult | 31 | 32 | Add-ObjectDetail -typename psPAS.CyberArk.Vault.ACL.Policy 33 | 34 | } 35 | 36 | }#process 37 | 38 | END { }#end 39 | 40 | } -------------------------------------------------------------------------------- /psPAS/Functions/PolicyACL/Remove-PASPolicyACL.ps1: -------------------------------------------------------------------------------- 1 | # .ExternalHelp psPAS-help.xml 2 | function Remove-PASPolicyACL { 3 | [CmdletBinding(SupportsShouldProcess)] 4 | param( 5 | [parameter( 6 | Mandatory = $true, 7 | ValueFromPipelinebyPropertyName = $true 8 | )] 9 | [ValidateNotNullOrEmpty()] 10 | [string]$PolicyID, 11 | 12 | [parameter( 13 | Mandatory = $true, 14 | ValueFromPipelinebyPropertyName = $true 15 | )] 16 | [string]$Id 17 | 18 | ) 19 | 20 | BEGIN { 21 | Assert-VersionRequirement -SelfHosted 22 | }#begin 23 | 24 | PROCESS { 25 | 26 | #Create base URL for request 27 | $URI = "$($psPASSession.BaseURI)/WebServices/PIMServices.svc/Policy/$($PolicyID | 28 | 29 | Get-EscapedString)/PrivilegedCommands/$($Id | Get-EscapedString)/" 30 | 31 | if ($PSCmdlet.ShouldProcess($PolicyID, "Delete Rule $Id")) { 32 | 33 | #send request to web service 34 | Invoke-PASRestMethod -Uri $URI -Method DELETE 35 | 36 | } 37 | 38 | }#process 39 | 40 | END { }#end 41 | 42 | } -------------------------------------------------------------------------------- /psPAS/Functions/Requests/Approve-PASRequest.ps1: -------------------------------------------------------------------------------- 1 | # .ExternalHelp psPAS-help.xml 2 | function Approve-PASRequest { 3 | [CmdletBinding(SupportsShouldProcess)] 4 | param( 5 | [parameter( 6 | Mandatory = $true, 7 | ValueFromPipelinebyPropertyName = $true 8 | )] 9 | [ValidateNotNullOrEmpty()] 10 | [string]$RequestId, 11 | 12 | [parameter( 13 | Mandatory = $false, 14 | ValueFromPipelinebyPropertyName = $true 15 | )] 16 | [string]$Reason 17 | ) 18 | 19 | BEGIN { 20 | Assert-VersionRequirement -RequiredVersion 9.10 21 | }#begin 22 | 23 | PROCESS { 24 | 25 | #Create URL for Request 26 | $URI = "$($psPASSession.BaseURI)/API/IncomingRequests/$($RequestID)/Confirm" 27 | 28 | #Create body of request 29 | $body = $PSBoundParameters | Get-PASParameter -ParametersToRemove RequestId | ConvertTo-Json 30 | 31 | if ($PSCmdlet.ShouldProcess($RequestId, 'Confirm Request for Account Access')) { 32 | 33 | #send request to PAS web service 34 | Invoke-PASRestMethod -Uri $URI -Method POST -Body $Body 35 | 36 | } 37 | 38 | }#process 39 | 40 | END { }#end 41 | 42 | } -------------------------------------------------------------------------------- /psPAS/Functions/Requests/Deny-PASRequest.ps1: -------------------------------------------------------------------------------- 1 | # .ExternalHelp psPAS-help.xml 2 | function Deny-PASRequest { 3 | [CmdletBinding(SupportsShouldProcess)] 4 | param( 5 | [parameter( 6 | Mandatory = $true, 7 | ValueFromPipelinebyPropertyName = $true 8 | )] 9 | [ValidateNotNullOrEmpty()] 10 | [string]$RequestId, 11 | 12 | [parameter( 13 | Mandatory = $false, 14 | ValueFromPipelinebyPropertyName = $true 15 | )] 16 | [string]$Reason 17 | ) 18 | 19 | BEGIN { 20 | Assert-VersionRequirement -RequiredVersion 9.10 21 | }#begin 22 | 23 | PROCESS { 24 | 25 | #Create URL for Request 26 | $URI = "$($psPASSession.BaseURI)/API/IncomingRequests/$($RequestID)/Reject" 27 | 28 | #Create body of request 29 | $body = $PSBoundParameters | Get-PASParameter -ParametersToRemove RequestId | ConvertTo-Json 30 | 31 | if ($PSCmdlet.ShouldProcess($RequestId, 'Reject Request for Account Access')) { 32 | 33 | #send request to PAS web service 34 | Invoke-PASRestMethod -Uri $URI -Method POST -Body $Body 35 | 36 | } 37 | 38 | }#process 39 | 40 | END { }#end 41 | 42 | } -------------------------------------------------------------------------------- /psPAS/Functions/Requests/Get-PASRequestDetail.ps1: -------------------------------------------------------------------------------- 1 | # .ExternalHelp psPAS-help.xml 2 | function Get-PASRequestDetail { 3 | [CmdletBinding()] 4 | param( 5 | [parameter( 6 | Mandatory = $true, 7 | ValueFromPipelinebyPropertyName = $true 8 | )] 9 | [ValidateNotNullOrEmpty()] 10 | [ValidateSet('MyRequests', 'IncomingRequests')] 11 | [string]$RequestType, 12 | 13 | [parameter( 14 | Mandatory = $true, 15 | ValueFromPipelinebyPropertyName = $true 16 | )] 17 | [string]$RequestID 18 | ) 19 | 20 | BEGIN { 21 | Assert-VersionRequirement -RequiredVersion 9.10 22 | }#begin 23 | 24 | PROCESS { 25 | 26 | #Create URL for Request 27 | $URI = "$($psPASSession.BaseURI)/API/$($RequestType)/$($RequestID)" 28 | 29 | #send request to PAS web service 30 | $result = Invoke-PASRestMethod -Uri $URI -Method GET 31 | 32 | If ($null -ne $result) { 33 | 34 | #Return Results 35 | $result | Add-ObjectDetail -typename psPAS.CyberArk.Vault.Request.Extended 36 | 37 | } 38 | 39 | }#process 40 | 41 | END { }#end 42 | 43 | } -------------------------------------------------------------------------------- /psPAS/Functions/Requests/Remove-PASRequest.ps1: -------------------------------------------------------------------------------- 1 | # .ExternalHelp psPAS-help.xml 2 | function Remove-PASRequest { 3 | [CmdletBinding(SupportsShouldProcess)] 4 | param( 5 | [parameter( 6 | Mandatory = $true, 7 | ValueFromPipelinebyPropertyName = $true 8 | )] 9 | [ValidateNotNullOrEmpty()] 10 | [string]$RequestID 11 | ) 12 | 13 | BEGIN { 14 | Assert-VersionRequirement -RequiredVersion 9.10 15 | }#begin 16 | 17 | PROCESS { 18 | 19 | #Create URL for request 20 | $URI = "$($psPASSession.BaseURI)/API/MyRequests/$($RequestID)" 21 | 22 | if ($PSCmdlet.ShouldProcess($RequestID, 'Delete Request')) { 23 | 24 | #Send request to web service 25 | Invoke-PASRestMethod -Uri $URI -Method DELETE 26 | 27 | } 28 | 29 | }#process 30 | 31 | END { }#end 32 | 33 | } -------------------------------------------------------------------------------- /psPAS/Functions/Safes/Find-PASSafe.ps1: -------------------------------------------------------------------------------- 1 | # .ExternalHelp psPAS-help.xml 2 | function Find-PASSafe { 3 | [CmdletBinding()] 4 | param( 5 | [parameter( 6 | Mandatory = $false, 7 | ValueFromPipelinebyPropertyName = $false 8 | )] 9 | [string]$search, 10 | 11 | [parameter( 12 | Mandatory = $false, 13 | ValueFromPipelineByPropertyName = $false 14 | )] 15 | [int]$TimeoutSec 16 | 17 | ) 18 | 19 | BEGIN { 20 | 21 | Assert-VersionRequirement -RequiredVersion 10.1 -MaximumVersion 11.7 22 | 23 | #Create base URL for request 24 | $URI = "$($psPASSession.BaseURI)/api/Safes" 25 | $SearchQuery = $null 26 | $Limit = 25 #default if you call the API with no value 27 | 28 | }#begin 29 | 30 | PROCESS { 31 | 32 | If ( -Not [string]::IsNullOrEmpty($search) ) { 33 | 34 | $SearchQuery = "&$($PSBoundParameters | Get-PASParameter | ConvertTo-QueryString)" 35 | 36 | } 37 | 38 | $InitialResponse = Invoke-PASRestMethod -Uri "$URI`?limit=$Limit$SearchQuery" -Method GET -TimeoutSec $TimeoutSec 39 | 40 | $Total = $InitialResponse.Total 41 | 42 | If ($Total -gt 0) { 43 | 44 | $Safes = [Collections.Generic.List[Object]]::New(($InitialResponse.Safes)) 45 | 46 | For ( $Offset = $Limit ; $Offset -lt $Total ; $Offset += $Limit ) { 47 | 48 | $Null = $Safes.AddRange((Invoke-PASRestMethod -Uri "$URI`?limit=$Limit&OffSet=$Offset$searchQuery" -Method GET -TimeoutSec $TimeoutSec).Safes) 49 | 50 | } 51 | 52 | $Safes 53 | 54 | } 55 | 56 | }#process 57 | 58 | END { }#end 59 | 60 | } -------------------------------------------------------------------------------- /psPAS/Functions/ServerWebServices/Get-PASSafeShareLogo.ps1: -------------------------------------------------------------------------------- 1 | # .ExternalHelp psPAS-help.xml 2 | function Get-PASSafeShareLogo { 3 | [CmdletBinding()] 4 | param( 5 | [parameter( 6 | Mandatory = $true 7 | )] 8 | [ValidateSet('Square', 'Watermark')] 9 | [String]$ImageType 10 | ) 11 | 12 | BEGIN { 13 | #!Depracated above 13.2 14 | Assert-VersionRequirement -MaximumVersion 13.2 15 | }#begin 16 | 17 | PROCESS { 18 | 19 | #Create URL for request 20 | $URI = "$($psPASSession.BaseURI)/WebServices/PIMServices.svc/Logo?type=$ImageType" 21 | 22 | #send request to web service 23 | $result = Invoke-PASRestMethod -Uri $URI -Method GET 24 | 25 | 26 | If ($null -ne $result) { 27 | 28 | $result 29 | 30 | } 31 | 32 | }#process 33 | 34 | END { }#end 35 | 36 | } -------------------------------------------------------------------------------- /psPAS/Functions/ServerWebServices/Get-PASServer.ps1: -------------------------------------------------------------------------------- 1 | # .ExternalHelp psPAS-help.xml 2 | function Get-PASServer { 3 | [CmdletBinding()] 4 | param( ) 5 | 6 | BEGIN { }#begin 7 | 8 | PROCESS { 9 | 10 | #Create URL for request 11 | $URI = "$($psPASSession.BaseURI)/WebServices/PIMServices.svc/Server" 12 | 13 | #send request to web service 14 | $result = Invoke-PASRestMethod -Uri $URI -Method GET 15 | 16 | If ($null -ne $result) { 17 | 18 | $result 19 | 20 | } 21 | 22 | }#process 23 | 24 | END { }#end 25 | 26 | } -------------------------------------------------------------------------------- /psPAS/Functions/SystemHealth/Get-PASComponentDetail.ps1: -------------------------------------------------------------------------------- 1 | # .ExternalHelp psPAS-help.xml 2 | Function Get-PASComponentDetail { 3 | [CmdletBinding()] 4 | param( 5 | [parameter( 6 | Mandatory = $true, 7 | ValueFromPipelinebyPropertyName = $true 8 | )] 9 | [ValidateNotNullOrEmpty()] 10 | [ValidateSet('PVWA', 'SessionManagement', 'CPM', 'AIM', 'PTA')] 11 | [string]$ComponentID 12 | 13 | ) 14 | 15 | BEGIN { 16 | Assert-VersionRequirement -RequiredVersion 10.1 17 | }#begin 18 | 19 | PROCESS { 20 | 21 | if ($PSBoundParameters['ComponentID'] -eq 'PTA') { 22 | 23 | Assert-VersionRequirement -RequiredVersion 12.0 24 | Assert-VersionRequirement -SelfHosted 25 | 26 | } 27 | 28 | #Create URL for request 29 | $URI = "$($psPASSession.BaseURI)/api/ComponentsMonitoringDetails/$ComponentID" 30 | 31 | #send request to web service 32 | $result = Invoke-PASRestMethod -Uri $URI -Method GET 33 | 34 | If ($null -ne $result) { 35 | 36 | #output returned data 37 | $result | Select-Object -ExpandProperty ComponentsDetails 38 | 39 | } 40 | 41 | }#process 42 | 43 | END { }#end 44 | 45 | } -------------------------------------------------------------------------------- /psPAS/Functions/SystemHealth/Get-PASComponentSummary.ps1: -------------------------------------------------------------------------------- 1 | # .ExternalHelp psPAS-help.xml 2 | Function Get-PASComponentSummary { 3 | [CmdletBinding()] 4 | param( 5 | 6 | ) 7 | 8 | BEGIN { 9 | Assert-VersionRequirement -RequiredVersion 10.1 10 | }#begin 11 | 12 | PROCESS { 13 | 14 | #Create URL for request 15 | $URI = "$($psPASSession.BaseURI)/api/ComponentsMonitoringSummary" 16 | 17 | #send request to web service 18 | $result = Invoke-PASRestMethod -Uri $URI -Method GET 19 | 20 | If ($null -ne $result) { 21 | 22 | $result | Select-Object -ExpandProperty Components 23 | 24 | $result | Select-Object -ExpandProperty Vaults | Add-ObjectDetail -PropertyToAdd @{ 25 | 'ComponentID' = 'EPV' 26 | 'ComponentName' = 'EPV' 27 | } | Select-Object ComponentID, ComponentName, Role, IP, IsLoggedOn 28 | 29 | } 30 | 31 | }#process 32 | 33 | END { }#end 34 | 35 | } -------------------------------------------------------------------------------- /psPAS/Functions/User/Disable-PASUser.ps1: -------------------------------------------------------------------------------- 1 | # .ExternalHelp psPAS-help.xml 2 | function Disable-PASUser { 3 | 4 | [CmdletBinding(SupportsShouldProcess)] 5 | param( 6 | [parameter( 7 | Mandatory = $true, 8 | ValueFromPipelinebyPropertyName = $true 9 | )] 10 | [int]$id 11 | ) 12 | 13 | BEGIN { 14 | 15 | Assert-VersionRequirement -RequiredVersion 12.6 16 | 17 | }#begin 18 | 19 | PROCESS { 20 | 21 | $URI = "$($psPASSession.BaseURI)/API/Users/$id/disable/" 22 | 23 | if ($PSCmdlet.ShouldProcess($id, 'Disable User')) { 24 | 25 | #send request to web service 26 | Invoke-PASRestMethod -Uri $URI -Method POST 27 | 28 | } 29 | 30 | }#process 31 | 32 | END { }#end 33 | 34 | } -------------------------------------------------------------------------------- /psPAS/Functions/User/Enable-PASUser.ps1: -------------------------------------------------------------------------------- 1 | # .ExternalHelp psPAS-help.xml 2 | function Enable-PASUser { 3 | 4 | [CmdletBinding(SupportsShouldProcess)] 5 | param( 6 | [parameter( 7 | Mandatory = $true, 8 | ValueFromPipelinebyPropertyName = $true 9 | )] 10 | [int]$id 11 | ) 12 | 13 | BEGIN { 14 | 15 | Assert-VersionRequirement -RequiredVersion 12.6 16 | 17 | }#begin 18 | 19 | PROCESS { 20 | 21 | $URI = "$($psPASSession.BaseURI)/API/Users/$id/enable/" 22 | 23 | if ($PSCmdlet.ShouldProcess($id, 'Enable User')) { 24 | 25 | #send request to web service 26 | Invoke-PASRestMethod -Uri $URI -Method POST 27 | 28 | } 29 | 30 | }#process 31 | 32 | END { }#end 33 | 34 | } -------------------------------------------------------------------------------- /psPAS/Functions/User/Get-PASLoggedOnUser.ps1: -------------------------------------------------------------------------------- 1 | # .ExternalHelp psPAS-help.xml 2 | function Get-PASLoggedOnUser { 3 | [CmdletBinding()] 4 | param( 5 | 6 | ) 7 | 8 | BEGIN { 9 | Assert-VersionRequirement -SelfHosted 10 | }#begin 11 | 12 | PROCESS { 13 | 14 | #Create URL for request 15 | $URI = "$($psPASSession.BaseURI)/WebServices/PIMServices.svc/User" 16 | 17 | #send request to web service 18 | $result = Invoke-PASRestMethod -Uri $URI -Method GET 19 | 20 | If ($null -ne $result) { 21 | 22 | $result | Add-ObjectDetail -typename psPAS.CyberArk.Vault.User 23 | 24 | } 25 | 26 | }#process 27 | 28 | END { }#end 29 | 30 | } -------------------------------------------------------------------------------- /psPAS/Functions/User/Get-PASUserLoginInfo.ps1: -------------------------------------------------------------------------------- 1 | # .ExternalHelp psPAS-help.xml 2 | function Get-PASUserLoginInfo { 3 | [CmdletBinding()] 4 | param( ) 5 | 6 | BEGIN { 7 | Assert-VersionRequirement -RequiredVersion 10.4 8 | }#begin 9 | 10 | PROCESS { 11 | 12 | #Create URL for request 13 | $URI = "$($psPASSession.BaseURI)/api/LoginsInfo" 14 | 15 | #send request to web service 16 | $result = Invoke-PASRestMethod -Uri $URI -Method GET 17 | 18 | If ($null -ne $result) { 19 | 20 | #Return Results 21 | $result | Add-ObjectDetail -typename psPAS.CyberArk.Vault.User.Login 22 | 23 | } 24 | 25 | }#process 26 | 27 | END { }#end 28 | 29 | } -------------------------------------------------------------------------------- /psPAS/Functions/User/Get-PASUserTypeInfo.ps1: -------------------------------------------------------------------------------- 1 | # .ExternalHelp psPAS-help.xml 2 | function Get-PASUserTypeInfo { 3 | [CmdletBinding()] 4 | param( ) 5 | 6 | BEGIN { 7 | Assert-VersionRequirement -RequiredVersion 13.2 8 | }#begin 9 | 10 | PROCESS { 11 | 12 | #Create URL for request 13 | $URI = "$($psPASSession.BaseURI)/API/UserTypes/" 14 | 15 | #send request to web service 16 | $result = Invoke-PASRestMethod -Uri $URI -Method GET 17 | 18 | If ($null -ne $result) { 19 | 20 | #Return Results 21 | $result.UserTypes | Add-ObjectDetail -typename psPAS.CyberArk.Vault.User.Type 22 | 23 | } 24 | 25 | }#process 26 | 27 | END { }#end 28 | 29 | } -------------------------------------------------------------------------------- /psPAS/Functions/User/New-PASGroup.ps1: -------------------------------------------------------------------------------- 1 | # .ExternalHelp psPAS-help.xml 2 | function New-PASGroup { 3 | [CmdletBinding(SupportsShouldProcess)] 4 | param( 5 | [parameter( 6 | Mandatory = $true, 7 | ValueFromPipelinebyPropertyName = $true 8 | )] 9 | [string]$groupName, 10 | 11 | [parameter( 12 | Mandatory = $false, 13 | ValueFromPipelinebyPropertyName = $true 14 | )] 15 | [string]$description, 16 | 17 | [parameter( 18 | Mandatory = $false, 19 | ValueFromPipelinebyPropertyName = $true 20 | )] 21 | [string]$location 22 | ) 23 | 24 | BEGIN { 25 | Assert-VersionRequirement -RequiredVersion 11.1 26 | }#begin 27 | 28 | PROCESS { 29 | 30 | #Create URL for request 31 | $URI = "$($psPASSession.BaseURI)/API/UserGroups" 32 | 33 | #Construct Request Body 34 | $Body = $PSBoundParameters | Get-PASParameter | ConvertTo-Json 35 | 36 | if ($PSCmdlet.ShouldProcess($groupName, 'Create Group')) { 37 | 38 | #send request to web service 39 | $result = Invoke-PASRestMethod -Uri $URI -Method POST -Body $Body 40 | 41 | } 42 | 43 | If ($null -ne $result) { 44 | 45 | $result | Add-ObjectDetail -typename psPAS.CyberArk.Vault.Group 46 | 47 | } 48 | 49 | }#process 50 | 51 | END { }#end 52 | 53 | } -------------------------------------------------------------------------------- /psPAS/Functions/User/Remove-PASGroup.ps1: -------------------------------------------------------------------------------- 1 | # .ExternalHelp psPAS-help.xml 2 | Function Remove-PASGroup { 3 | [CmdletBinding(SupportsShouldProcess)] 4 | param( 5 | [parameter( 6 | Mandatory = $true, 7 | ValueFromPipelinebyPropertyName = $true 8 | )] 9 | [Alias('GroupID')] 10 | [int]$ID 11 | ) 12 | 13 | BEGIN { 14 | 15 | Assert-VersionRequirement -RequiredVersion 11.5 16 | 17 | }#begin 18 | 19 | Process { 20 | 21 | #Create URL for request 22 | $URI = "$($psPASSession.BaseURI)/API/UserGroups/$ID" 23 | 24 | if ($PSCmdlet.ShouldProcess($ID, 'Delete Group')) { 25 | 26 | #send request to web service 27 | Invoke-PASRestMethod -Uri $URI -Method DELETE 28 | 29 | } 30 | 31 | } 32 | 33 | End { } 34 | 35 | } -------------------------------------------------------------------------------- /psPAS/Functions/User/Remove-PASGroupMember.ps1: -------------------------------------------------------------------------------- 1 | # .ExternalHelp psPAS-help.xml 2 | function Remove-PASGroupMember { 3 | [CmdletBinding(SupportsShouldProcess)] 4 | param( 5 | [parameter( 6 | Mandatory = $true, 7 | ValueFromPipelinebyPropertyName = $true 8 | )] 9 | [Alias('ID')] 10 | [string]$GroupID, 11 | 12 | [parameter( 13 | Mandatory = $true, 14 | ValueFromPipelinebyPropertyName = $true 15 | )] 16 | [Alias('UserName')] 17 | [string]$Member 18 | ) 19 | 20 | BEGIN { 21 | Assert-VersionRequirement -RequiredVersion 10.5 22 | }#begin 23 | 24 | PROCESS { 25 | 26 | #Create URL for request 27 | $URI = "$($psPASSession.BaseURI)/API/UserGroups/$GroupID/members/$Member/" 28 | 29 | if ($PSCmdlet.ShouldProcess($GroupID, "Remove Group Member $Member")) { 30 | 31 | #send request to web service 32 | Invoke-PASRestMethod -Uri $URI -Method DELETE 33 | 34 | } 35 | 36 | }#process 37 | 38 | END { }#end 39 | 40 | } -------------------------------------------------------------------------------- /psPAS/Functions/User/Remove-PASUser.ps1: -------------------------------------------------------------------------------- 1 | # .ExternalHelp psPAS-help.xml 2 | function Remove-PASUser { 3 | [CmdletBinding(SupportsShouldProcess, DefaultParameterSetName = 'Gen2')] 4 | param( 5 | 6 | [parameter( 7 | Mandatory = $true, 8 | ValueFromPipelinebyPropertyName = $true, 9 | ParameterSetName = 'Gen2' 10 | )] 11 | [int]$id, 12 | 13 | [parameter( 14 | Mandatory = $true, 15 | ValueFromPipelinebyPropertyName = $true, 16 | ParameterSetName = 'Gen1' 17 | )] 18 | [string]$UserName 19 | ) 20 | 21 | BEGIN { 22 | 23 | If ($PSCmdlet.ParameterSetName -eq 'Gen2') { 24 | 25 | Assert-VersionRequirement -RequiredVersion 11.1 26 | 27 | } 28 | 29 | }#begin 30 | 31 | PROCESS { 32 | 33 | switch ($PSCmdlet.ParameterSetName) { 34 | 35 | 'Gen2' { 36 | 37 | $URI = "$($psPASSession.BaseURI)/api/Users/$id" 38 | 39 | $User = $id 40 | 41 | break 42 | 43 | } 44 | 45 | default { 46 | 47 | Assert-VersionRequirement -MaximumVersion 12.3 48 | 49 | #Create URL for request 50 | $URI = "$($psPASSession.BaseURI)/WebServices/PIMServices.svc/Users/$($UserName | Get-EscapedString)" 51 | 52 | $User = $UserName 53 | 54 | break 55 | 56 | } 57 | 58 | } 59 | 60 | if ($PSCmdlet.ShouldProcess($User, 'Delete User')) { 61 | 62 | #send request to web service 63 | Invoke-PASRestMethod -Uri $URI -Method DELETE 64 | 65 | } 66 | 67 | }#process 68 | 69 | END { }#end 70 | 71 | } -------------------------------------------------------------------------------- /psPAS/Functions/User/Set-PASGroup.ps1: -------------------------------------------------------------------------------- 1 | # .ExternalHelp psPAS-help.xml 2 | Function Set-PASGroup { 3 | [CmdletBinding(SupportsShouldProcess)] 4 | param( 5 | [parameter( 6 | Mandatory = $true, 7 | ValueFromPipelinebyPropertyName = $true 8 | )] 9 | [Alias('GroupID')] 10 | [int]$ID, 11 | 12 | [parameter( 13 | Mandatory = $true, 14 | ValueFromPipelinebyPropertyName = $true 15 | )] 16 | [string]$GroupName 17 | ) 18 | 19 | BEGIN { 20 | 21 | Assert-VersionRequirement -RequiredVersion 12.0 22 | 23 | }#begin 24 | 25 | Process { 26 | 27 | #Create URL for request 28 | $URI = "$($psPASSession.BaseURI)/API/UserGroups/$ID" 29 | 30 | #Get request parameters 31 | $boundParameters = $PSBoundParameters | Get-PASParameter -ParametersToRemove ID 32 | 33 | #Construct Request Body 34 | $Body = $boundParameters | ConvertTo-Json 35 | 36 | if ($PSCmdlet.ShouldProcess($ID, 'Update Group')) { 37 | 38 | #send request to web service 39 | $result = Invoke-PASRestMethod -Uri $URI -Method PUT -Body $Body 40 | 41 | } 42 | 43 | if ($null -ne $result) { 44 | 45 | $result | Add-ObjectDetail -typename psPAS.CyberArk.Vault.Group 46 | 47 | } 48 | 49 | } 50 | 51 | End { } 52 | 53 | } -------------------------------------------------------------------------------- /psPAS/Functions/User/Set-PASUserPassword.ps1: -------------------------------------------------------------------------------- 1 | # .ExternalHelp psPAS-help.xml 2 | function Set-PASUserPassword { 3 | [CmdletBinding(SupportsShouldProcess)] 4 | param( 5 | [parameter( 6 | Mandatory = $true, 7 | ValueFromPipelinebyPropertyName = $true 8 | )] 9 | [int]$id, 10 | 11 | [parameter( 12 | Mandatory = $true, 13 | ValueFromPipelinebyPropertyName = $true 14 | )] 15 | [securestring]$NewPassword 16 | ) 17 | 18 | BEGIN { 19 | Assert-VersionRequirement -RequiredVersion 10.10 20 | }#begin 21 | 22 | PROCESS { 23 | 24 | #Get request parameters 25 | $boundParameters = $PSBoundParameters | Get-PASParameter -ParametersToRemove id 26 | 27 | $Password = ConvertTo-InsecureString -SecureString $NewPassword 28 | 29 | If ($Password.length -gt 39) { 30 | throw 'Password must not exceed 39 characters' 31 | } 32 | 33 | #Include decoded password in request 34 | $boundParameters['NewPassword'] = $Password 35 | 36 | #Create URL for request 37 | $URI = "$($psPASSession.BaseURI)/api/Users/$id/ResetPassword" 38 | 39 | #create request body 40 | $body = $boundParameters | ConvertTo-Json 41 | 42 | if ($PSCmdlet.ShouldProcess($id, 'Reset Password')) { 43 | 44 | #send request to web service 45 | Invoke-PASRestMethod -Uri $URI -Method POST -Body $Body 46 | 47 | } 48 | 49 | }#process 50 | 51 | END { }#end 52 | 53 | } -------------------------------------------------------------------------------- /psPAS/Private/ConvertFrom-KeyValuePair.ps1: -------------------------------------------------------------------------------- 1 | function ConvertFrom-KeyValuePair { 2 | <# 3 | .SYNOPSIS 4 | Takes object containing key/value pair 5 | Returns Property=Value object 6 | 7 | .DESCRIPTION 8 | Converts: 9 | Key Value 10 | --- ----- 11 | PropertyName False 12 | 13 | Into: 14 | UnlockAccounts : False 15 | 16 | 17 | .PARAMETER KeyValue 18 | The object(s) containing the key / value pair data 19 | 20 | .EXAMPLE 21 | $object | ConvertFrom-KeyValuePair 22 | 23 | Returns Key=Value object members for each matching entry in $object 24 | 25 | #> 26 | [CmdletBinding()] 27 | param ( 28 | [parameter( 29 | Mandatory = $true, 30 | ValueFromPipeline = $true 31 | )] 32 | [ValidateNotNullOrEmpty()] 33 | [object[]]$KeyValue 34 | ) 35 | 36 | begin { 37 | 38 | $OutputObject = [PSCustomObject]@{ } 39 | 40 | } 41 | 42 | process { 43 | 44 | If ($null -ne $KeyValue) { 45 | 46 | $KeyValue | ForEach-Object { 47 | 48 | If ($null -ne $PSItem.key) { 49 | 50 | $OutputObject | Add-Member -Name $($PSItem.key) -Value $($PSItem.value) -MemberType NoteProperty 51 | 52 | } 53 | } 54 | } 55 | } 56 | 57 | end { 58 | $OutputObject 59 | } 60 | 61 | } -------------------------------------------------------------------------------- /psPAS/Private/ConvertTo-InsecureString.ps1: -------------------------------------------------------------------------------- 1 | Function ConvertTo-InsecureString { 2 | <# 3 | .SYNOPSIS 4 | Returns string value from SecureString input 5 | 6 | .DESCRIPTION 7 | Gets the decoded string value of an encoded SecureString 8 | 9 | .PARAMETER SecureString 10 | The SecureString to decode 11 | 12 | .EXAMPLE 13 | ConvertTo-InsecureString $SecureStringValue 14 | #> 15 | [CmdLetBinding()] 16 | [OutputType('System.String')] 17 | Param ( 18 | 19 | [Parameter( 20 | Mandatory = $True, 21 | ValueFromPipeline = $True 22 | )] 23 | [System.Security.SecureString]$SecureString 24 | ) 25 | 26 | Process { 27 | Try { 28 | 29 | $ptr = [System.Runtime.InteropServices.Marshal]::SecureStringToGlobalAllocUnicode($SecureString) 30 | [System.Runtime.InteropServices.Marshal]::PtrToStringUni($ptr) 31 | 32 | } 33 | 34 | Finally { 35 | 36 | [System.Runtime.InteropServices.Marshal]::ZeroFreeGlobalAllocUnicode($ptr) 37 | 38 | } 39 | } 40 | } -------------------------------------------------------------------------------- /psPAS/Private/ConvertTo-UnixTime.ps1: -------------------------------------------------------------------------------- 1 | Function ConvertTo-UnixTime { 2 | <# 3 | .SYNOPSIS 4 | Returns UnixTime of a given date. 5 | 6 | .DESCRIPTION 7 | Returns UnixTime as a whole number. 8 | 9 | .PARAMETER Date 10 | A DateTime object to return the UnixTime of. 11 | 12 | .EXAMPLE 13 | Get-Date | ConvertTo-UnixTime 14 | 15 | #> 16 | [CmdletBinding()] 17 | [OutputType('System.Integer')] 18 | Param( 19 | [Parameter( 20 | Mandatory = $true, 21 | ValueFromPipeline = $true 22 | )] 23 | [DateTime]$Date, 24 | 25 | [Parameter( 26 | Mandatory = $false, 27 | ValueFromPipeline = $false 28 | )] 29 | [switch]$Milliseconds 30 | ) 31 | begin { 32 | $currentCulture = [System.Threading.Thread]::CurrentThread.CurrentCulture 33 | $epoch = Get-Date 1/1/1970 34 | } 35 | process { 36 | [System.Threading.Thread]::CurrentThread.CurrentCulture = 'en-US' 37 | if ($Date -ne $epoch) { 38 | #Convert Date with timezone offset 39 | $UnixTime = [math]::Round($(Get-Date $Date.ToUniversalTime() -UFormat %s)) 40 | } Else { 41 | #no timezone offset for epoch date 42 | $UnixTime = [math]::Round($(Get-Date $Date -UFormat %s)) 43 | } 44 | If ($Milliseconds) { 45 | $UnixTime = $UnixTime * 1000 46 | } 47 | 48 | $UnixTime 49 | } 50 | end { 51 | [System.Threading.Thread]::CurrentThread.CurrentCulture = $currentCulture 52 | } 53 | } -------------------------------------------------------------------------------- /psPAS/Private/Get-ByteArray.ps1: -------------------------------------------------------------------------------- 1 | Function Get-ByteArray { 2 | <# 3 | .SYNOPSIS 4 | Get a file as a ByteArray 5 | 6 | .DESCRIPTION 7 | Outputs a file to a ByteArray 8 | 9 | .PARAMETER Path 10 | The File to Read as a ByteArray 11 | 12 | .EXAMPLE 13 | Get-ByteArray -Path "C:\SomeFile.zip" 14 | 15 | #> 16 | [CmdletBinding()] 17 | [OutputType('System.Byte[]')] 18 | Param( 19 | # The File to Convert to a ByteArray 20 | [Parameter( 21 | Mandatory = $true, 22 | ValueFromPipeline = $true 23 | )] 24 | [ValidateNotNullOrEmpty()] 25 | [ValidateScript( { Test-Path -Path $_ -PathType Leaf })] 26 | [String] 27 | $Path 28 | ) 29 | 30 | Begin {} 31 | 32 | Process { 33 | [System.IO.File]::ReadAllBytes($Path) 34 | } 35 | 36 | End {} 37 | 38 | } -------------------------------------------------------------------------------- /psPAS/Private/Get-EscapedString.ps1: -------------------------------------------------------------------------------- 1 | function Get-EscapedString { 2 | <# 3 | .SYNOPSIS 4 | Outputs escaped string value. 5 | 6 | .DESCRIPTION 7 | Wrapper for the System.Uri EscapeDataString method. 8 | When provided with an input string, an escaped string will be output. 9 | This can be used for forming URLs and query strings where spaces are not allowed. 10 | 11 | .PARAMETER inputString 12 | String to escape 13 | 14 | .EXAMPLE 15 | "Safe Name" | Get-EscapedString 16 | 17 | .INPUTS 18 | String Value 19 | 20 | .OUTPUTS 21 | Escaped String Value 22 | #> 23 | [CmdletBinding()] 24 | [OutputType('System.String')] 25 | param( 26 | [parameter( 27 | Mandatory = $false, 28 | ValueFromPipeline = $true 29 | )] 30 | [string]$inputString 31 | 32 | ) 33 | 34 | Begin {} 35 | 36 | Process { 37 | 38 | #Output escaped string 39 | [System.Uri]::EscapeDataString($inputString) 40 | 41 | } 42 | 43 | End {} 44 | 45 | } -------------------------------------------------------------------------------- /psPAS/Private/Get-PASSAMLResponse.ps1: -------------------------------------------------------------------------------- 1 | Function Get-PASSAMLResponse { 2 | <# 3 | .SYNOPSIS 4 | Get SAML Token for PAS SAML Auth 5 | 6 | .DESCRIPTION 7 | Get SAML IdP URl using a request the /auth/saml/ PVWA resource 8 | Authenticates to IdP and to obtain Saml Token 9 | 10 | .PARAMETER URL 11 | The PVWA URL 12 | 13 | .EXAMPLE 14 | Get-PASSAMLResponse -URL "https://pvwa.somecompany.com/PasswordVault" 15 | 16 | .NOTES 17 | https://gist.github.com/infamousjoeg/b44faa299ec3de65bdd1d3b8474b0649 18 | #> 19 | [CmdletBinding(SupportsShouldProcess)] 20 | param( 21 | [parameter( 22 | Mandatory = $true, 23 | ValueFromPipeline = $true, 24 | ValueFromPipelinebyPropertyName = $true 25 | )] 26 | $URL 27 | ) 28 | 29 | Process { 30 | 31 | Try { 32 | 33 | $Uri = "$URL/auth/saml/" 34 | 35 | if ($PSCmdlet.ShouldProcess($Uri, 'SAML Auth')) { 36 | 37 | $WebResponse = Invoke-WebRequest -Uri $Uri -MaximumRedirection 0 -ErrorAction SilentlyContinue -UseBasicParsing 38 | 39 | $SAMLResponse = Invoke-WebRequest -Uri $($WebResponse.links.href) -MaximumRedirection 1 -UseDefaultCredentials -UseBasicParsing 40 | 41 | If ($SAMLResponse.InputFields[0].name -eq 'SAMLResponse') { 42 | 43 | $SAMLResponse.InputFields[0].value 44 | 45 | } Else { Throw } 46 | 47 | } 48 | 49 | } 50 | 51 | Catch { Throw 'Failed to get SAMLResponse' } 52 | 53 | } 54 | 55 | } -------------------------------------------------------------------------------- /psPAS/Private/Get-SessionClone.ps1: -------------------------------------------------------------------------------- 1 | function Get-SessionClone { 2 | <# 3 | .SYNOPSIS 4 | Deep copy a hashtable 5 | 6 | .DESCRIPTION 7 | Deep copy a hashtable or ordered dictionary, and return an ordered dictionary 8 | 9 | .PARAMETER InputObject 10 | A hashtable or OrderedDictionary to clone 11 | 12 | .EXAMPLE 13 | Get-SessionClone -InputObject $Hashtable 14 | 15 | Returns a new ordered hashtable, which is a deep copy of $Hashtable 16 | 17 | .OUTPUTS 18 | System.Collections.Specialized.OrderedDictionary 19 | #> 20 | [cmdletbinding()] 21 | [OutputType('System.Collections.Specialized.OrderedDictionary')] 22 | param( 23 | [parameter( 24 | Mandatory = $true, 25 | ValueFromPipeline = $true 26 | )] 27 | $InputObject 28 | ) 29 | process { 30 | if (($InputObject -is [hashtable]) -or ($InputObject -is [System.Collections.Specialized.OrderedDictionary])) { 31 | $clone = [ordered]@{} 32 | foreach ($key in $InputObject.keys) { 33 | if ($null -ne $InputObject[$key]) { 34 | $clone[$key] = Get-SessionClone $InputObject[$key] 35 | } else { 36 | $clone[$key] = $null 37 | } 38 | } 39 | return $clone 40 | } else { 41 | 42 | return $InputObject 43 | 44 | } 45 | } 46 | } -------------------------------------------------------------------------------- /psPAS/Private/Test-IsCoreCLR.ps1: -------------------------------------------------------------------------------- 1 | Function Test-IsCoreCLR { 2 | <# 3 | .SYNOPSIS 4 | Tests for PWSH 5 | 6 | .DESCRIPTION 7 | Returns "$true" if run from PWSH 8 | Returns "$false" if run from PowerShell 9 | 10 | .EXAMPLE 11 | Test-IsCoreCLR 12 | 13 | Returns "$true" if run from PWSH 14 | Returns "$false" if run from PowerShell 15 | 16 | #> 17 | 18 | if ($IsCoreCLR -or $PSEdition -eq 'Core') { 19 | 20 | $true 21 | 22 | } else { 23 | 24 | $false 25 | 26 | } 27 | 28 | } -------------------------------------------------------------------------------- /psPAS/xml/psPAS.CyberArk.Vault.ACL.Type.ps1xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | psPAS.CyberArk.Vault.ACL.Policy 5 | 6 | 7 | Remove 8 | 23 | 24 | 25 | 26 | 27 | psPAS.CyberArk.Vault.ACL.Account 28 | 29 | 30 | Remove 31 | 46 | 47 | 48 | 49 | -------------------------------------------------------------------------------- /psPAS/xml/psPAS.CyberArk.Vault.Account.Type.ps1xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | psPAS.CyberArk.Vault.Account.V10 5 | 6 | 7 | GetActivity 8 | 11 | 12 | 13 | GetDetails 14 | 17 | 18 | 19 | GetPassword 20 | 23 | 24 | 25 | VerifyPassword 26 | 29 | 30 | 31 | ChangePassword 32 | 35 | 36 | 37 | ReconcilePassword 38 | 41 | 42 | 43 | Remove 44 | 59 | 60 | 61 | 62 | -------------------------------------------------------------------------------- /psPAS/xml/psPAS.CyberArk.Vault.Credential.Type.ps1xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | psPAS.CyberArk.Vault.Credential 5 | 6 | 7 | ToSecureString 8 | 11 | 12 | 13 | ToPsCredential 14 | 19 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /psPAS/xml/psPAS.CyberArk.Vault.User.Type.ps1xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | psPAS.CyberArk.Vault.User 5 | 6 | 7 | Activate 8 | 11 | 12 | 13 | Disable 14 | 17 | 18 | 19 | Enable 20 | 23 | 24 | 25 | Remove 26 | 41 | 42 | 43 | 44 | --------------------------------------------------------------------------------