PowerShell Announcements (with AtProtocol)
PSA is:
To connect to AtProtocol / BlueSky with PSA, simply use Connect-BlueSky:
$myCredential = Get-Credential # Provide your handle or email and an app-password
Connect-BlueSky -Authentication $myCredential
Once you're connected, you can talk to every part of the At Protocol.
In the At Protocol, users are called "Actors", so, to get a profile, we'd use:
Get-BskyActorProfile -Actor mrpowershell.bsky.social
You'll see a nice snapshot of a profile:
While this might look nice, it's actually a full object.
You can explore what that object can do by piping it to the PowerShell command, Get-Member
Get-BskyActorProfile -Actor mrpowershell.bsky.social -Cache | Get-Member
For instance, this would show the profile's first 50 posts.
(Get-BskyActorProfile -Actor mrpowershell.bsky.social -Cache).Posts
And this would show the first 50 liked posts.
(Get-BskyActorProfile -Actor mrpowershell.bsky.social -Cache).Likes
This shows us the first 50 followers
(Get-BskyActorProfile -Actor mrpowershell.bsky.social -Cache).Followers
This shows us the first 50 follows
(Get-BskyActorProfile -Actor mrpowershell.bsky.social -Cache).Follows
To get more of any of these results, simply get the .More property
# Get the profile
$BlueSkyProfile = (Get-BskyActorProfile -Actor mrpowershell.bsky.social -Cache)
# Get the first 50 posts
$BlueSkyProfile.Posts
# Get the next 50 posts
$BlueSkyProfile.Posts.More
PSA is primarily built automatically.
It uses PipeScript to generate PowerShell commands automatically for every lexicon in the At Protocol.
EZOut is used to add formatting, so that posts and profiles look nice and can be clicked.
PSA can be used as a GitHub Action! Just add these few lines to any job:
- name: Run PSA
uses: StartAutomating/PSA@main
id: PSA
This will import PSA and look thru the workspace for any *.PSA.ps1
files and run them.
Check out PSA's PSA Script for a useful example.
PSA exports 535 commands (118 functions and 417 aliases)
Name | Synopsis |
---|---|
Add-AtProtoModerationReport | com.atproto.moderation.createReport |
Add-AtProtoRepoRecord | com.atproto.repo.createRecord |
Add-AtProtoServerAccount | com.atproto.server.createAccount |
Add-AtProtoServerAppPassword | com.atproto.server.createAppPassword |
Add-AtProtoServerInviteCode | com.atproto.server.createInviteCode |
Add-AtProtoServerInviteCodes | com.atproto.server.createInviteCodes |
Add-AtProtoServerSession | com.atproto.server.createSession |
Block-BskyGraphActor | app.bsky.graph.muteActor |
Block-BskyGraphActorList | app.bsky.graph.muteActorList |
Connect-AtProto | Connects to the AtProtocol |
Disable-AtProtoAdminAccountInvites | com.atproto.admin.disableAccountInvites |
Disable-AtProtoAdminInviteCodes | com.atproto.admin.disableInviteCodes |
Enable-AtProtoAdminAccountInvites | com.atproto.admin.enableAccountInvites |
Get-AtProtoAdminDefinition | |
Get-AtProtoAdminInviteCodes | com.atproto.admin.getInviteCodes |
Get-AtProtoAdminModerationAction | com.atproto.admin.getModerationAction |
Get-AtProtoAdminModerationActions | com.atproto.admin.getModerationActions |
Get-AtProtoAdminModerationReport | com.atproto.admin.getModerationReport |
Get-AtProtoAdminModerationReports | com.atproto.admin.getModerationReports |
Get-AtProtoAdminRecord | com.atproto.admin.getRecord |
Get-AtProtoAdminRepo | com.atproto.admin.getRepo |
Get-AtProtoLabelDefinition | |
Get-AtProtoModerationDefinition | |
Get-AtProtoRepo | com.atproto.repo.describeRepo |
Get-AtProtoRepoRecord | com.atproto.repo.getRecord |
Get-AtProtoRepoRecords | com.atproto.repo.listRecords |
Get-AtProtoServer | com.atproto.server.describeServer |
Get-AtProtoServerAccountInviteCodes | com.atproto.server.getAccountInviteCodes |
Get-AtProtoServerAppPasswords | com.atproto.server.listAppPasswords |
Get-AtProtoServerDefinition | |
Get-AtProtoServerSession | com.atproto.server.getSession |
Get-AtProtoSyncBlob | com.atproto.sync.getBlob |
Get-AtProtoSyncBlobs | com.atproto.sync.listBlobs |
Get-AtProtoSyncBlocks | com.atproto.sync.getBlocks |
Get-AtProtoSyncCheckout | com.atproto.sync.getCheckout |
Get-AtProtoSyncHead | com.atproto.sync.getHead |
Get-AtProtoSyncLatestCommit | com.atproto.sync.getLatestCommit |
Get-AtProtoSyncRecord | com.atproto.sync.getRecord |
Get-AtProtoSyncRepo | com.atproto.sync.getRepo |
Get-AtProtoSyncRepos | com.atproto.sync.listRepos |
Get-BskyActorDefinition | |
Get-BskyActorPreferences | app.bsky.actor.getPreferences |
Get-BskyActorProfile | app.bsky.actor.getProfile |
Get-BskyActorProfiles | app.bsky.actor.getProfiles |
Get-BskyActorSuggestions | app.bsky.actor.getSuggestions |
Get-BskyFeed | app.bsky.feed.getFeed |
Get-BskyFeedActorFeeds | app.bsky.feed.getActorFeeds |
Get-BskyFeedActorLikes | app.bsky.feed.getActorLikes |
Get-BskyFeedAuthorFeed | app.bsky.feed.getAuthorFeed |
Get-BskyFeedDefinition | |
Get-BskyFeedGenerator | app.bsky.feed.getFeedGenerator |
Get-BskyFeedGenerators | app.bsky.feed.getFeedGenerators |
Get-BskyFeedLikes | app.bsky.feed.getLikes |
Get-BskyFeedListFeed | app.bsky.feed.getListFeed |
Get-BskyFeedPosts | app.bsky.feed.getPosts |
Get-BskyFeedPostThread | app.bsky.feed.getPostThread |
Get-BskyFeedRepostedBy | app.bsky.feed.getRepostedBy |
Get-BskyFeedSkeleton | app.bsky.feed.getFeedSkeleton |
Get-BskyFeedSuggestedFeeds | app.bsky.feed.getSuggestedFeeds |
Get-BskyFeedTimeline | app.bsky.feed.getTimeline |
Get-BskyGraphBlocks | app.bsky.graph.getBlocks |
Get-BskyGraphDefinition | |
Get-BskyGraphFollowers | app.bsky.graph.getFollowers |
Get-BskyGraphFollows | app.bsky.graph.getFollows |
Get-BskyGraphList | app.bsky.graph.getList |
Get-BskyGraphListBlocks | app.bsky.graph.getListBlocks |
Get-BskyGraphListMutes | app.bsky.graph.getListMutes |
Get-BskyGraphLists | app.bsky.graph.getLists |
Get-BskyGraphMutes | app.bsky.graph.getMutes |
Get-BskyGraphSuggestedFollowsByActor | app.bsky.graph.getSuggestedFollowsByActor |
Get-BskyNotifications | app.bsky.notification.listNotifications |
Get-BskyNotificationUnreadCount | app.bsky.notification.getUnreadCount |
Get-BskyUnspeccedDefinition | |
Get-BskyUnspeccedPopular | app.bsky.unspecced.getPopular |
Get-BskyUnspeccedPopularFeedGenerators | app.bsky.unspecced.getPopularFeedGenerators |
Get-BskyUnspeccedTimelineSkeleton | app.bsky.unspecced.getTimelineSkeleton |
Invoke-AtProto | Invokes the AT Protocol |
Invoke-AtProtoAdminModerationAction | com.atproto.admin.takeModerationAction |
Register-BskyNotificationPush | app.bsky.notification.registerPush |
Remove-AtProtoRepoRecord | com.atproto.repo.deleteRecord |
Remove-AtProtoServerAccount | com.atproto.server.deleteAccount |
Remove-AtProtoServerSession | com.atproto.server.deleteSession |
Request-AtProtoServerAccountDelete | com.atproto.server.requestAccountDelete |
Request-AtProtoServerEmailConfirmation | com.atproto.server.requestEmailConfirmation |
Request-AtProtoServerEmailUpdate | com.atproto.server.requestEmailUpdate |
Request-AtProtoServerPasswordReset | com.atproto.server.requestPasswordReset |
Request-AtProtoSyncCrawl | com.atproto.sync.requestCrawl |
Reset-AtProtoServerPassword | com.atproto.server.resetPassword |
Resolve-AtProtoAdminModerationReports | com.atproto.admin.resolveModerationReports |
Resolve-AtProtoIdentityHandle | com.atproto.identity.resolveHandle |
Revoke-AtProtoServerAppPassword | com.atproto.server.revokeAppPassword |
Search-AtProtoAdminRepos | com.atproto.admin.searchRepos |
Search-AtProtoLabels | com.atproto.label.queryLabels |
Search-BskyActors | app.bsky.actor.searchActors |
Search-BskyActorsTypeahead | app.bsky.actor.searchActorsTypeahead |
Search-BskyFeedPosts | app.bsky.feed.searchPosts |
Search-BskyUnspeccedActorsSkeleton | app.bsky.unspecced.searchActorsSkeleton |
Search-BskyUnspeccedPostsSkeleton | app.bsky.unspecced.searchPostsSkeleton |
Send-AtProto | Sends to the At Protocol |
Send-AtProtoAdminEmail | com.atproto.admin.sendEmail |
Set-AtProtoRepoBlob | com.atproto.repo.uploadBlob |
Set-AtProtoRepoRecord | com.atproto.repo.putRecord |
Set-AtProtoRepoWrites | com.atproto.repo.applyWrites |
Set-BskyActorPreferences | app.bsky.actor.putPreferences |
Set-BskyUnspeccedLabels | app.bsky.unspecced.applyLabels |
Sync-AtProtoServerSession | com.atproto.server.refreshSession |
Unblock-BskyGraphActor | app.bsky.graph.unmuteActor |
Unblock-BskyGraphActorList | app.bsky.graph.unmuteActorList |
Undo-AtProtoAdminModerationAction | com.atproto.admin.reverseModerationAction |
Update-AtProtoAdminAccountEmail | com.atproto.admin.updateAccountEmail |
Update-AtProtoAdminAccountHandle | com.atproto.admin.updateAccountHandle |
Update-AtProtoIdentityHandle | com.atproto.identity.updateHandle |
Update-AtProtoServerEmail | com.atproto.server.updateEmail |
Update-AtProtoTempRepoVersion | com.atproto.temp.upgradeRepoVersion |
Update-BskyNotificationSeen | app.bsky.notification.updateSeen |
Watch-AtProtoLabels | com.atproto.label.subscribeLabels |
Watch-AtProtoSyncRepos | com.atproto.sync.subscribeRepos |
Watch-AtProtoSyncUpdate | com.atproto.sync.notifyOfUpdate |
A set of PowerShell 7 commands that use the BlueSky API. You can skeet and upload images from a PowerShell prompt as well as view your feed and timeline.
A collection of bots for bluesky along with some systemd services to keep them running. Might include more devop-y stuff later
📦➔🦋 Store and retrieve files on the ATmosphere
Your Brand Here!
50K+ engaged viewers every month
Limited spots available!
📧 Contact us via email🦋 Contact us on Bluesky