microsoft powershell with icontrol

44 Topics
"}},"componentScriptGroups({\"componentId\":\"custom.widget.Beta_MetaNav\"})":{"__typename":"ComponentScriptGroups","scriptGroups":{"__typename":"ComponentScriptGroupsDefinition","afterInteractive":{"__typename":"PageScriptGroupDefinition","group":"AFTER_INTERACTIVE","scriptIds":[]},"lazyOnLoad":{"__typename":"PageScriptGroupDefinition","group":"LAZY_ON_LOAD","scriptIds":[]}},"componentScripts":[]},"component({\"componentId\":\"custom.widget.Beta_Footer\"})":{"__typename":"Component","render({\"context\":{\"component\":{\"entities\":[],\"props\":{}},\"page\":{\"entities\":[],\"name\":\"TagPage\",\"props\":{},\"url\":\"https://community.f5.com/tag/microsoft%20powershell%20with%20icontrol\"}}})":{"__typename":"ComponentRenderResult","html":"
 
 
 
 
 

\"F5 ©2024 F5, Inc. All rights reserved.
Trademarks Policies Privacy California Privacy Do Not Sell My Personal Information
"}},"componentScriptGroups({\"componentId\":\"custom.widget.Beta_Footer\"})":{"__typename":"ComponentScriptGroups","scriptGroups":{"__typename":"ComponentScriptGroupsDefinition","afterInteractive":{"__typename":"PageScriptGroupDefinition","group":"AFTER_INTERACTIVE","scriptIds":[]},"lazyOnLoad":{"__typename":"PageScriptGroupDefinition","group":"LAZY_ON_LOAD","scriptIds":[]}},"componentScripts":[]},"component({\"componentId\":\"custom.widget.Tag_Manager_Helper\"})":{"__typename":"Component","render({\"context\":{\"component\":{\"entities\":[],\"props\":{}},\"page\":{\"entities\":[],\"name\":\"TagPage\",\"props\":{},\"url\":\"https://community.f5.com/tag/microsoft%20powershell%20with%20icontrol\"}}})":{"__typename":"ComponentRenderResult","html":" "}},"componentScriptGroups({\"componentId\":\"custom.widget.Tag_Manager_Helper\"})":{"__typename":"ComponentScriptGroups","scriptGroups":{"__typename":"ComponentScriptGroupsDefinition","afterInteractive":{"__typename":"PageScriptGroupDefinition","group":"AFTER_INTERACTIVE","scriptIds":[]},"lazyOnLoad":{"__typename":"PageScriptGroupDefinition","group":"LAZY_ON_LOAD","scriptIds":[]}},"componentScripts":[]},"component({\"componentId\":\"custom.widget.Consent_Blackbar\"})":{"__typename":"Component","render({\"context\":{\"component\":{\"entities\":[],\"props\":{}},\"page\":{\"entities\":[],\"name\":\"TagPage\",\"props\":{},\"url\":\"https://community.f5.com/tag/microsoft%20powershell%20with%20icontrol\"}}})":{"__typename":"ComponentRenderResult","html":"
"}},"componentScriptGroups({\"componentId\":\"custom.widget.Consent_Blackbar\"})":{"__typename":"ComponentScriptGroups","scriptGroups":{"__typename":"ComponentScriptGroupsDefinition","afterInteractive":{"__typename":"PageScriptGroupDefinition","group":"AFTER_INTERACTIVE","scriptIds":[]},"lazyOnLoad":{"__typename":"PageScriptGroupDefinition","group":"LAZY_ON_LOAD","scriptIds":[]}},"componentScripts":[]},"cachedText({\"lastModified\":\"1745595729370\",\"locale\":\"en-US\",\"namespaces\":[\"components/community/NavbarDropdownToggle\"]})":[{"__ref":"CachedAsset:text:en_US-components/community/NavbarDropdownToggle-1745595729370"}],"cachedText({\"lastModified\":\"1745595729370\",\"locale\":\"en-US\",\"namespaces\":[\"components/messages/MessageListTabs\"]})":[{"__ref":"CachedAsset:text:en_US-components/messages/MessageListTabs-1745595729370"}],"cachedText({\"lastModified\":\"1745595729370\",\"locale\":\"en-US\",\"namespaces\":[\"components/messages/MessageView/MessageViewInline\"]})":[{"__ref":"CachedAsset:text:en_US-components/messages/MessageView/MessageViewInline-1745595729370"}],"cachedText({\"lastModified\":\"1745595729370\",\"locale\":\"en-US\",\"namespaces\":[\"shared/client/components/common/Pager/PagerLoadMore\"]})":[{"__ref":"CachedAsset:text:en_US-shared/client/components/common/Pager/PagerLoadMore-1745595729370"}],"cachedText({\"lastModified\":\"1745595729370\",\"locale\":\"en-US\",\"namespaces\":[\"components/customComponent/CustomComponent\"]})":[{"__ref":"CachedAsset:text:en_US-components/customComponent/CustomComponent-1745595729370"}],"cachedText({\"lastModified\":\"1745595729370\",\"locale\":\"en-US\",\"namespaces\":[\"shared/client/components/common/OverflowNav\"]})":[{"__ref":"CachedAsset:text:en_US-shared/client/components/common/OverflowNav-1745595729370"}],"cachedText({\"lastModified\":\"1745595729370\",\"locale\":\"en-US\",\"namespaces\":[\"components/users/UserLink\"]})":[{"__ref":"CachedAsset:text:en_US-components/users/UserLink-1745595729370"}],"cachedText({\"lastModified\":\"1745595729370\",\"locale\":\"en-US\",\"namespaces\":[\"components/messages/MessageSubject\"]})":[{"__ref":"CachedAsset:text:en_US-components/messages/MessageSubject-1745595729370"}],"cachedText({\"lastModified\":\"1745595729370\",\"locale\":\"en-US\",\"namespaces\":[\"components/messages/MessageBody\"]})":[{"__ref":"CachedAsset:text:en_US-components/messages/MessageBody-1745595729370"}],"cachedText({\"lastModified\":\"1745595729370\",\"locale\":\"en-US\",\"namespaces\":[\"components/messages/MessageTime\"]})":[{"__ref":"CachedAsset:text:en_US-components/messages/MessageTime-1745595729370"}],"cachedText({\"lastModified\":\"1745595729370\",\"locale\":\"en-US\",\"namespaces\":[\"shared/client/components/nodes/NodeIcon\"]})":[{"__ref":"CachedAsset:text:en_US-shared/client/components/nodes/NodeIcon-1745595729370"}],"cachedText({\"lastModified\":\"1745595729370\",\"locale\":\"en-US\",\"namespaces\":[\"components/messages/MessageUnreadCount\"]})":[{"__ref":"CachedAsset:text:en_US-components/messages/MessageUnreadCount-1745595729370"}],"cachedText({\"lastModified\":\"1745595729370\",\"locale\":\"en-US\",\"namespaces\":[\"components/messages/MessageViewCount\"]})":[{"__ref":"CachedAsset:text:en_US-components/messages/MessageViewCount-1745595729370"}],"cachedText({\"lastModified\":\"1745595729370\",\"locale\":\"en-US\",\"namespaces\":[\"components/kudos/KudosCount\"]})":[{"__ref":"CachedAsset:text:en_US-components/kudos/KudosCount-1745595729370"}],"cachedText({\"lastModified\":\"1745595729370\",\"locale\":\"en-US\",\"namespaces\":[\"components/messages/MessageRepliesCount\"]})":[{"__ref":"CachedAsset:text:en_US-components/messages/MessageRepliesCount-1745595729370"}],"cachedText({\"lastModified\":\"1745595729370\",\"locale\":\"en-US\",\"namespaces\":[\"shared/client/components/users/UserAvatar\"]})":[{"__ref":"CachedAsset:text:en_US-shared/client/components/users/UserAvatar-1745595729370"}]},"Theme:customTheme1":{"__typename":"Theme","id":"customTheme1"},"User:user:-1":{"__typename":"User","id":"user:-1","uid":-1,"login":"Former Member","email":"","avatar":null,"rank":null,"kudosWeight":1,"registrationData":{"__typename":"RegistrationData","status":"ANONYMOUS","registrationTime":null,"confirmEmailStatus":false,"registrationAccessLevel":"VIEW","ssoRegistrationFields":[]},"ssoId":null,"profileSettings":{"__typename":"ProfileSettings","dateDisplayStyle":{"__typename":"InheritableStringSettingWithPossibleValues","key":"layout.friendly_dates_enabled","value":"false","localValue":"true","possibleValues":["true","false"]},"dateDisplayFormat":{"__typename":"InheritableStringSetting","key":"layout.format_pattern_date","value":"dd-MMM-yyyy","localValue":"MM-dd-yyyy"},"language":{"__typename":"InheritableStringSettingWithPossibleValues","key":"profile.language","value":"en-US","localValue":null,"possibleValues":["en-US","es-ES"]},"repliesSortOrder":{"__typename":"InheritableStringSettingWithPossibleValues","key":"config.user_replies_sort_order","value":"DEFAULT","localValue":"DEFAULT","possibleValues":["DEFAULT","LIKES","PUBLISH_TIME","REVERSE_PUBLISH_TIME"]}},"deleted":false},"CachedAsset:pages-1745595724052":{"__typename":"CachedAsset","id":"pages-1745595724052","value":[{"lastUpdatedTime":1745595724052,"localOverride":null,"page":{"id":"BlogViewAllPostsPage","type":"BLOG","urlPath":"/category/:categoryId/blog/:boardId/all-posts/(/:after|/:before)?","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1745595724052,"localOverride":null,"page":{"id":"CasePortalPage","type":"CASE_PORTAL","urlPath":"/caseportal","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1745595724052,"localOverride":null,"page":{"id":"CreateGroupHubPage","type":"GROUP_HUB","urlPath":"/groups/create","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1745595724052,"localOverride":null,"page":{"id":"CaseViewPage","type":"CASE_DETAILS","urlPath":"/case/:caseId/:caseNumber","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1745595724052,"localOverride":null,"page":{"id":"InboxPage","type":"COMMUNITY","urlPath":"/inbox","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1745595724052,"localOverride":null,"page":{"id":"HelpFAQPage","type":"COMMUNITY","urlPath":"/help","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1745595724052,"localOverride":null,"page":{"id":"IdeaMessagePage","type":"IDEA_POST","urlPath":"/idea/:boardId/:messageSubject/:messageId","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1745595724052,"localOverride":null,"page":{"id":"IdeaViewAllIdeasPage","type":"IDEA","urlPath":"/category/:categoryId/ideas/:boardId/all-ideas/(/:after|/:before)?","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1745595724052,"localOverride":null,"page":{"id":"LoginPage","type":"USER","urlPath":"/signin","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1745595724052,"localOverride":null,"page":{"id":"BlogPostPage","type":"BLOG","urlPath":"/category/:categoryId/blogs/:boardId/create","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1739501733000,"localOverride":null,"page":{"id":"Test","type":"CUSTOM","urlPath":"/custom-test-2","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1745595724052,"localOverride":null,"page":{"id":"ThemeEditorPage","type":"COMMUNITY","urlPath":"/designer/themes","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1745595724052,"localOverride":null,"page":{"id":"TkbViewAllArticlesPage","type":"TKB","urlPath":"/category/:categoryId/kb/:boardId/all-articles/(/:after|/:before)?","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1745595724052,"localOverride":null,"page":{"id":"OccasionEditPage","type":"EVENT","urlPath":"/event/:boardId/:messageSubject/:messageId/edit","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1745595724052,"localOverride":null,"page":{"id":"OAuthAuthorizationAllowPage","type":"USER","urlPath":"/auth/authorize/allow","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1745595724052,"localOverride":null,"page":{"id":"PageEditorPage","type":"COMMUNITY","urlPath":"/designer/pages","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1745595724052,"localOverride":null,"page":{"id":"PostPage","type":"COMMUNITY","urlPath":"/category/:categoryId/:boardId/create","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1745595724052,"localOverride":null,"page":{"id":"ForumBoardPage","type":"FORUM","urlPath":"/category/:categoryId/discussions/:boardId","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1745595724052,"localOverride":null,"page":{"id":"TkbBoardPage","type":"TKB","urlPath":"/category/:categoryId/kb/:boardId","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1745595724052,"localOverride":null,"page":{"id":"EventPostPage","type":"EVENT","urlPath":"/category/:categoryId/events/:boardId/create","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1745595724052,"localOverride":null,"page":{"id":"UserBadgesPage","type":"COMMUNITY","urlPath":"/users/:login/:userId/badges","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1745595724052,"localOverride":null,"page":{"id":"GroupHubMembershipAction","type":"GROUP_HUB","urlPath":"/membership/join/:nodeId/:membershipType","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1745595724052,"localOverride":null,"page":{"id":"MaintenancePage","type":"COMMUNITY","urlPath":"/maintenance","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1745595724052,"localOverride":null,"page":{"id":"IdeaReplyPage","type":"IDEA_REPLY","urlPath":"/idea/:boardId/:messageSubject/:messageId/comments/:replyId","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1745595724052,"localOverride":null,"page":{"id":"UserSettingsPage","type":"USER","urlPath":"/mysettings/:userSettingsTab","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1745595724052,"localOverride":null,"page":{"id":"GroupHubsPage","type":"GROUP_HUB","urlPath":"/groups","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1745595724052,"localOverride":null,"page":{"id":"ForumPostPage","type":"FORUM","urlPath":"/category/:categoryId/discussions/:boardId/create","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1745595724052,"localOverride":null,"page":{"id":"OccasionRsvpActionPage","type":"OCCASION","urlPath":"/event/:boardId/:messageSubject/:messageId/rsvp/:responseType","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1745595724052,"localOverride":null,"page":{"id":"VerifyUserEmailPage","type":"USER","urlPath":"/verifyemail/:userId/:verifyEmailToken","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1745595724052,"localOverride":null,"page":{"id":"AllOccasionsPage","type":"OCCASION","urlPath":"/category/:categoryId/events/:boardId/all-events/(/:after|/:before)?","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1745595724052,"localOverride":null,"page":{"id":"EventBoardPage","type":"EVENT","urlPath":"/category/:categoryId/events/:boardId","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1745595724052,"localOverride":null,"page":{"id":"TkbReplyPage","type":"TKB_REPLY","urlPath":"/kb/:boardId/:messageSubject/:messageId/comments/:replyId","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1745595724052,"localOverride":null,"page":{"id":"IdeaBoardPage","type":"IDEA","urlPath":"/category/:categoryId/ideas/:boardId","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1745595724052,"localOverride":null,"page":{"id":"CommunityGuideLinesPage","type":"COMMUNITY","urlPath":"/communityguidelines","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1745595724052,"localOverride":null,"page":{"id":"CaseCreatePage","type":"SALESFORCE_CASE_CREATION","urlPath":"/caseportal/create","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1745595724052,"localOverride":null,"page":{"id":"TkbEditPage","type":"TKB","urlPath":"/kb/:boardId/:messageSubject/:messageId/edit","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1745595724052,"localOverride":null,"page":{"id":"ForgotPasswordPage","type":"USER","urlPath":"/forgotpassword","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1745595724052,"localOverride":null,"page":{"id":"IdeaEditPage","type":"IDEA","urlPath":"/idea/:boardId/:messageSubject/:messageId/edit","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1745595724052,"localOverride":null,"page":{"id":"TagPage","type":"COMMUNITY","urlPath":"/tag/:tagName","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1745595724052,"localOverride":null,"page":{"id":"BlogBoardPage","type":"BLOG","urlPath":"/category/:categoryId/blog/:boardId","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1745595724052,"localOverride":null,"page":{"id":"OccasionMessagePage","type":"OCCASION_TOPIC","urlPath":"/event/:boardId/:messageSubject/:messageId","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1745595724052,"localOverride":null,"page":{"id":"ManageContentPage","type":"COMMUNITY","urlPath":"/managecontent","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1745595724052,"localOverride":null,"page":{"id":"ClosedMembershipNodeNonMembersPage","type":"GROUP_HUB","urlPath":"/closedgroup/:groupHubId","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1745595724052,"localOverride":null,"page":{"id":"CommunityPage","type":"COMMUNITY","urlPath":"/","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1745595724052,"localOverride":null,"page":{"id":"ForumMessagePage","type":"FORUM_TOPIC","urlPath":"/discussions/:boardId/:messageSubject/:messageId","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1745595724052,"localOverride":null,"page":{"id":"IdeaPostPage","type":"IDEA","urlPath":"/category/:categoryId/ideas/:boardId/create","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1745595724052,"localOverride":null,"page":{"id":"BlogMessagePage","type":"BLOG_ARTICLE","urlPath":"/blog/:boardId/:messageSubject/:messageId","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1745595724052,"localOverride":null,"page":{"id":"RegistrationPage","type":"USER","urlPath":"/register","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1745595724052,"localOverride":null,"page":{"id":"EditGroupHubPage","type":"GROUP_HUB","urlPath":"/group/:groupHubId/edit","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1745595724052,"localOverride":null,"page":{"id":"ForumEditPage","type":"FORUM","urlPath":"/discussions/:boardId/:messageSubject/:messageId/edit","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1745595724052,"localOverride":null,"page":{"id":"ResetPasswordPage","type":"USER","urlPath":"/resetpassword/:userId/:resetPasswordToken","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1745595724052,"localOverride":null,"page":{"id":"TkbMessagePage","type":"TKB_ARTICLE","urlPath":"/kb/:boardId/:messageSubject/:messageId","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1745595724052,"localOverride":null,"page":{"id":"BlogEditPage","type":"BLOG","urlPath":"/blog/:boardId/:messageSubject/:messageId/edit","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1745595724052,"localOverride":null,"page":{"id":"ManageUsersPage","type":"USER","urlPath":"/users/manage/:tab?/:manageUsersTab?","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1745595724052,"localOverride":null,"page":{"id":"ForumReplyPage","type":"FORUM_REPLY","urlPath":"/discussions/:boardId/:messageSubject/:messageId/replies/:replyId","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1745595724052,"localOverride":null,"page":{"id":"PrivacyPolicyPage","type":"COMMUNITY","urlPath":"/privacypolicy","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1745595724052,"localOverride":null,"page":{"id":"NotificationPage","type":"COMMUNITY","urlPath":"/notifications","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1745595724052,"localOverride":null,"page":{"id":"UserPage","type":"USER","urlPath":"/users/:login/:userId","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1745595724052,"localOverride":null,"page":{"id":"HealthCheckPage","type":"COMMUNITY","urlPath":"/health","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1745595724052,"localOverride":null,"page":{"id":"OccasionReplyPage","type":"OCCASION_REPLY","urlPath":"/event/:boardId/:messageSubject/:messageId/comments/:replyId","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1745595724052,"localOverride":null,"page":{"id":"ManageMembersPage","type":"GROUP_HUB","urlPath":"/group/:groupHubId/manage/:tab?","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1745595724052,"localOverride":null,"page":{"id":"SearchResultsPage","type":"COMMUNITY","urlPath":"/search","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1745595724052,"localOverride":null,"page":{"id":"BlogReplyPage","type":"BLOG_REPLY","urlPath":"/blog/:boardId/:messageSubject/:messageId/replies/:replyId","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1745595724052,"localOverride":null,"page":{"id":"GroupHubPage","type":"GROUP_HUB","urlPath":"/group/:groupHubId","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1745595724052,"localOverride":null,"page":{"id":"TermsOfServicePage","type":"COMMUNITY","urlPath":"/termsofservice","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1745595724052,"localOverride":null,"page":{"id":"CategoryPage","type":"CATEGORY","urlPath":"/category/:categoryId","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1745595724052,"localOverride":null,"page":{"id":"ForumViewAllTopicsPage","type":"FORUM","urlPath":"/category/:categoryId/discussions/:boardId/all-topics/(/:after|/:before)?","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1745595724052,"localOverride":null,"page":{"id":"TkbPostPage","type":"TKB","urlPath":"/category/:categoryId/kbs/:boardId/create","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1745595724052,"localOverride":null,"page":{"id":"GroupHubPostPage","type":"GROUP_HUB","urlPath":"/group/:groupHubId/:boardId/create","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1745595724052,"localOverride":null,"page":{"id":"HowDoI","type":"COMMUNITY","urlPath":"/c/how-do-i","__typename":"PageDescriptor"},"__typename":"PageResource"}],"localOverride":false},"CachedAsset:text:en_US-components/context/AppContext/AppContextProvider-0":{"__typename":"CachedAsset","id":"text:en_US-components/context/AppContext/AppContextProvider-0","value":{"noCommunity":"Cannot find community","noUser":"Cannot find current user","noNode":"Cannot find node with id {nodeId}","noMessage":"Cannot find message with id {messageId}","userBanned":"We're sorry, but you have been banned from using this site.","userBannedReason":"You have been banned for the following reason: {reason}"},"localOverride":false},"CachedAsset:text:en_US-shared/client/components/common/Loading/LoadingDot-0":{"__typename":"CachedAsset","id":"text:en_US-shared/client/components/common/Loading/LoadingDot-0","value":{"title":"Loading..."},"localOverride":false},"CachedAsset:theme:customTheme1-1745595709926":{"__typename":"CachedAsset","id":"theme:customTheme1-1745595709926","value":{"id":"customTheme1","animation":{"fast":"150ms","normal":"250ms","slow":"500ms","slowest":"750ms","function":"cubic-bezier(0.07, 0.91, 0.51, 1)","__typename":"AnimationThemeSettings"},"avatar":{"borderRadius":"50%","collections":["custom"],"__typename":"AvatarThemeSettings"},"basics":{"browserIcon":{"imageAssetName":"JimmyPackets-512-1702592938213.png","imageLastModified":"1702592945815","__typename":"ThemeAsset"},"customerLogo":{"imageAssetName":"f5_logo_fix-1704824537976.svg","imageLastModified":"1704824540697","__typename":"ThemeAsset"},"maximumWidthOfPageContent":"1600px","oneColumnNarrowWidth":"800px","gridGutterWidthMd":"30px","gridGutterWidthXs":"10px","pageWidthStyle":"WIDTH_OF_PAGE_CONTENT","__typename":"BasicsThemeSettings"},"buttons":{"borderRadiusSm":"5px","borderRadius":"5px","borderRadiusLg":"5px","paddingY":"5px","paddingYLg":"7px","paddingYHero":"var(--lia-bs-btn-padding-y-lg)","paddingX":"12px","paddingXLg":"14px","paddingXHero":"42px","fontStyle":"NORMAL","fontWeight":"400","textTransform":"NONE","disabledOpacity":0.5,"primaryTextColor":"var(--lia-bs-white)","primaryTextHoverColor":"var(--lia-bs-white)","primaryTextActiveColor":"var(--lia-bs-white)","primaryBgColor":"var(--lia-bs-primary)","primaryBgHoverColor":"hsl(var(--lia-bs-primary-h), var(--lia-bs-primary-s), calc(var(--lia-bs-primary-l) * 0.85))","primaryBgActiveColor":"hsl(var(--lia-bs-primary-h), var(--lia-bs-primary-s), calc(var(--lia-bs-primary-l) * 0.7))","primaryBorder":"1px solid transparent","primaryBorderHover":"1px solid transparent","primaryBorderActive":"1px solid transparent","primaryBorderFocus":"1px solid var(--lia-bs-white)","primaryBoxShadowFocus":"0 0 0 1px var(--lia-bs-primary), 0 0 0 4px hsla(var(--lia-bs-primary-h), var(--lia-bs-primary-s), var(--lia-bs-primary-l), 0.2)","secondaryTextColor":"var(--lia-bs-gray-900)","secondaryTextHoverColor":"hsl(var(--lia-bs-gray-900-h), var(--lia-bs-gray-900-s), calc(var(--lia-bs-gray-900-l) * 0.95))","secondaryTextActiveColor":"hsl(var(--lia-bs-gray-900-h), var(--lia-bs-gray-900-s), calc(var(--lia-bs-gray-900-l) * 0.9))","secondaryBgColor":"var(--lia-bs-gray-400)","secondaryBgHoverColor":"hsl(var(--lia-bs-gray-400-h), var(--lia-bs-gray-400-s), calc(var(--lia-bs-gray-400-l) * 0.96))","secondaryBgActiveColor":"hsl(var(--lia-bs-gray-400-h), var(--lia-bs-gray-400-s), calc(var(--lia-bs-gray-400-l) * 0.92))","secondaryBorder":"1px solid transparent","secondaryBorderHover":"1px solid transparent","secondaryBorderActive":"1px solid transparent","secondaryBorderFocus":"1px solid transparent","secondaryBoxShadowFocus":"0 0 0 1px var(--lia-bs-primary), 0 0 0 4px hsla(var(--lia-bs-primary-h), var(--lia-bs-primary-s), var(--lia-bs-primary-l), 0.2)","tertiaryTextColor":"var(--lia-bs-gray-900)","tertiaryTextHoverColor":"hsl(var(--lia-bs-gray-900-h), var(--lia-bs-gray-900-s), calc(var(--lia-bs-gray-900-l) * 0.95))","tertiaryTextActiveColor":"hsl(var(--lia-bs-gray-900-h), var(--lia-bs-gray-900-s), calc(var(--lia-bs-gray-900-l) * 0.9))","tertiaryBgColor":"transparent","tertiaryBgHoverColor":"transparent","tertiaryBgActiveColor":"hsla(var(--lia-bs-black-h), var(--lia-bs-black-s), var(--lia-bs-black-l), 0.04)","tertiaryBorder":"1px solid transparent","tertiaryBorderHover":"1px solid hsla(var(--lia-bs-black-h), var(--lia-bs-black-s), var(--lia-bs-black-l), 0.08)","tertiaryBorderActive":"1px solid transparent","tertiaryBorderFocus":"1px solid transparent","tertiaryBoxShadowFocus":"0 0 0 1px var(--lia-bs-primary), 0 0 0 4px hsla(var(--lia-bs-primary-h), var(--lia-bs-primary-s), var(--lia-bs-primary-l), 0.2)","destructiveTextColor":"var(--lia-bs-danger)","destructiveTextHoverColor":"hsl(var(--lia-bs-danger-h), var(--lia-bs-danger-s), calc(var(--lia-bs-danger-l) * 0.95))","destructiveTextActiveColor":"hsl(var(--lia-bs-danger-h), var(--lia-bs-danger-s), calc(var(--lia-bs-danger-l) * 0.9))","destructiveBgColor":"var(--lia-bs-gray-300)","destructiveBgHoverColor":"hsl(var(--lia-bs-gray-300-h), var(--lia-bs-gray-300-s), calc(var(--lia-bs-gray-300-l) * 0.96))","destructiveBgActiveColor":"hsl(var(--lia-bs-gray-300-h), var(--lia-bs-gray-300-s), calc(var(--lia-bs-gray-300-l) * 0.92))","destructiveBorder":"1px solid transparent","destructiveBorderHover":"1px solid transparent","destructiveBorderActive":"1px solid transparent","destructiveBorderFocus":"1px solid transparent","destructiveBoxShadowFocus":"0 0 0 1px var(--lia-bs-primary), 0 0 0 4px hsla(var(--lia-bs-primary-h), var(--lia-bs-primary-s), var(--lia-bs-primary-l), 0.2)","__typename":"ButtonsThemeSettings"},"border":{"color":"hsla(var(--lia-bs-black-h), var(--lia-bs-black-s), var(--lia-bs-black-l), 0.08)","mainContent":"NONE","sideContent":"NONE","radiusSm":"3px","radius":"5px","radiusLg":"9px","radius50":"100vw","__typename":"BorderThemeSettings"},"boxShadow":{"xs":"0 0 0 1px hsla(var(--lia-bs-gray-900-h), var(--lia-bs-gray-900-s), var(--lia-bs-gray-900-l), 0.08), 0 3px 0 -1px hsla(var(--lia-bs-gray-900-h), var(--lia-bs-gray-900-s), var(--lia-bs-gray-900-l), 0.08)","sm":"0 2px 4px hsla(var(--lia-bs-gray-900-h), var(--lia-bs-gray-900-s), var(--lia-bs-gray-900-l), 0.06)","md":"0 5px 15px hsla(var(--lia-bs-gray-900-h), var(--lia-bs-gray-900-s), var(--lia-bs-gray-900-l), 0.15)","lg":"0 10px 30px hsla(var(--lia-bs-gray-900-h), var(--lia-bs-gray-900-s), var(--lia-bs-gray-900-l), 0.15)","__typename":"BoxShadowThemeSettings"},"cards":{"bgColor":"var(--lia-panel-bg-color)","borderRadius":"var(--lia-panel-border-radius)","boxShadow":"var(--lia-box-shadow-xs)","__typename":"CardsThemeSettings"},"chip":{"maxWidth":"300px","height":"30px","__typename":"ChipThemeSettings"},"coreTypes":{"defaultMessageLinkColor":"var(--lia-bs-primary)","defaultMessageLinkDecoration":"none","defaultMessageLinkFontStyle":"NORMAL","defaultMessageLinkFontWeight":"400","defaultMessageFontStyle":"NORMAL","defaultMessageFontWeight":"400","defaultMessageFontFamily":"var(--lia-bs-font-family-base)","forumColor":"#0C5C8D","forumFontFamily":"var(--lia-bs-font-family-base)","forumFontWeight":"var(--lia-default-message-font-weight)","forumLineHeight":"var(--lia-bs-line-height-base)","forumFontStyle":"var(--lia-default-message-font-style)","forumMessageLinkColor":"var(--lia-default-message-link-color)","forumMessageLinkDecoration":"var(--lia-default-message-link-decoration)","forumMessageLinkFontStyle":"var(--lia-default-message-link-font-style)","forumMessageLinkFontWeight":"var(--lia-default-message-link-font-weight)","forumSolvedColor":"#62C026","blogColor":"#730015","blogFontFamily":"var(--lia-bs-font-family-base)","blogFontWeight":"var(--lia-default-message-font-weight)","blogLineHeight":"1.75","blogFontStyle":"var(--lia-default-message-font-style)","blogMessageLinkColor":"var(--lia-default-message-link-color)","blogMessageLinkDecoration":"var(--lia-default-message-link-decoration)","blogMessageLinkFontStyle":"var(--lia-default-message-link-font-style)","blogMessageLinkFontWeight":"var(--lia-default-message-link-font-weight)","tkbColor":"#C20025","tkbFontFamily":"var(--lia-bs-font-family-base)","tkbFontWeight":"var(--lia-default-message-font-weight)","tkbLineHeight":"1.75","tkbFontStyle":"var(--lia-default-message-font-style)","tkbMessageLinkColor":"var(--lia-default-message-link-color)","tkbMessageLinkDecoration":"var(--lia-default-message-link-decoration)","tkbMessageLinkFontStyle":"var(--lia-default-message-link-font-style)","tkbMessageLinkFontWeight":"var(--lia-default-message-link-font-weight)","qandaColor":"#4099E2","qandaFontFamily":"var(--lia-bs-font-family-base)","qandaFontWeight":"var(--lia-default-message-font-weight)","qandaLineHeight":"var(--lia-bs-line-height-base)","qandaFontStyle":"var(--lia-default-message-link-font-style)","qandaMessageLinkColor":"var(--lia-default-message-link-color)","qandaMessageLinkDecoration":"var(--lia-default-message-link-decoration)","qandaMessageLinkFontStyle":"var(--lia-default-message-link-font-style)","qandaMessageLinkFontWeight":"var(--lia-default-message-link-font-weight)","qandaSolvedColor":"#3FA023","ideaColor":"#F3704B","ideaFontFamily":"var(--lia-bs-font-family-base)","ideaFontWeight":"var(--lia-default-message-font-weight)","ideaLineHeight":"var(--lia-bs-line-height-base)","ideaFontStyle":"var(--lia-default-message-font-style)","ideaMessageLinkColor":"var(--lia-default-message-link-color)","ideaMessageLinkDecoration":"var(--lia-default-message-link-decoration)","ideaMessageLinkFontStyle":"var(--lia-default-message-link-font-style)","ideaMessageLinkFontWeight":"var(--lia-default-message-link-font-weight)","contestColor":"#FCC845","contestFontFamily":"var(--lia-bs-font-family-base)","contestFontWeight":"var(--lia-default-message-font-weight)","contestLineHeight":"var(--lia-bs-line-height-base)","contestFontStyle":"var(--lia-default-message-link-font-style)","contestMessageLinkColor":"var(--lia-default-message-link-color)","contestMessageLinkDecoration":"var(--lia-default-message-link-decoration)","contestMessageLinkFontStyle":"ITALIC","contestMessageLinkFontWeight":"var(--lia-default-message-link-font-weight)","occasionColor":"#EE4B5B","occasionFontFamily":"var(--lia-bs-font-family-base)","occasionFontWeight":"var(--lia-default-message-font-weight)","occasionLineHeight":"var(--lia-bs-line-height-base)","occasionFontStyle":"var(--lia-default-message-font-style)","occasionMessageLinkColor":"var(--lia-default-message-link-color)","occasionMessageLinkDecoration":"var(--lia-default-message-link-decoration)","occasionMessageLinkFontStyle":"var(--lia-default-message-link-font-style)","occasionMessageLinkFontWeight":"var(--lia-default-message-link-font-weight)","grouphubColor":"#491B62","categoryColor":"#949494","communityColor":"#FFFFFF","productColor":"#949494","__typename":"CoreTypesThemeSettings"},"colors":{"black":"#000000","white":"#FFFFFF","gray100":"#F7F7F7","gray200":"#F7F7F7","gray300":"#E8E8E8","gray400":"#D9D9D9","gray500":"#CCCCCC","gray600":"#949494","gray700":"#707070","gray800":"#545454","gray900":"#333333","dark":"#545454","light":"#F7F7F7","primary":"#0C5C8D","secondary":"#333333","bodyText":"#222222","bodyBg":"#F5F5F5","info":"#1D9CD3","success":"#62C026","warning":"#FFD651","danger":"#C20025","alertSystem":"#FF6600","textMuted":"#707070","highlight":"#FFFCAD","outline":"var(--lia-bs-primary)","custom":["#C20025","#081B85","#009639","#B3C6D7","#7CC0EB","#F29A36"],"__typename":"ColorsThemeSettings"},"divider":{"size":"3px","marginLeft":"4px","marginRight":"4px","borderRadius":"50%","bgColor":"var(--lia-bs-gray-600)","bgColorActive":"var(--lia-bs-gray-600)","__typename":"DividerThemeSettings"},"dropdown":{"fontSize":"var(--lia-bs-font-size-sm)","borderColor":"var(--lia-bs-border-color)","borderRadius":"var(--lia-bs-border-radius-sm)","dividerBg":"var(--lia-bs-gray-300)","itemPaddingY":"5px","itemPaddingX":"20px","headerColor":"var(--lia-bs-gray-700)","__typename":"DropdownThemeSettings"},"email":{"link":{"color":"#0069D4","hoverColor":"#0061c2","decoration":"none","hoverDecoration":"underline","__typename":"EmailLinkSettings"},"border":{"color":"#e4e4e4","__typename":"EmailBorderSettings"},"buttons":{"borderRadiusLg":"5px","paddingXLg":"16px","paddingYLg":"7px","fontWeight":"700","primaryTextColor":"#ffffff","primaryTextHoverColor":"#ffffff","primaryBgColor":"#0069D4","primaryBgHoverColor":"#005cb8","primaryBorder":"1px solid transparent","primaryBorderHover":"1px solid transparent","__typename":"EmailButtonsSettings"},"panel":{"borderRadius":"5px","borderColor":"#e4e4e4","__typename":"EmailPanelSettings"},"__typename":"EmailThemeSettings"},"emoji":{"skinToneDefault":"#ffcd43","skinToneLight":"#fae3c5","skinToneMediumLight":"#e2cfa5","skinToneMedium":"#daa478","skinToneMediumDark":"#a78058","skinToneDark":"#5e4d43","__typename":"EmojiThemeSettings"},"heading":{"color":"var(--lia-bs-body-color)","fontFamily":"Inter","fontStyle":"NORMAL","fontWeight":"600","h1FontSize":"30px","h2FontSize":"25px","h3FontSize":"20px","h4FontSize":"18px","h5FontSize":"16px","h6FontSize":"16px","lineHeight":"1.2","subHeaderFontSize":"11px","subHeaderFontWeight":"500","h1LetterSpacing":"normal","h2LetterSpacing":"normal","h3LetterSpacing":"normal","h4LetterSpacing":"normal","h5LetterSpacing":"normal","h6LetterSpacing":"normal","subHeaderLetterSpacing":"2px","h1FontWeight":"var(--lia-bs-headings-font-weight)","h2FontWeight":"var(--lia-bs-headings-font-weight)","h3FontWeight":"var(--lia-bs-headings-font-weight)","h4FontWeight":"var(--lia-bs-headings-font-weight)","h5FontWeight":"var(--lia-bs-headings-font-weight)","h6FontWeight":"var(--lia-bs-headings-font-weight)","__typename":"HeadingThemeSettings"},"icons":{"size10":"10px","size12":"12px","size14":"14px","size16":"16px","size20":"20px","size24":"24px","size30":"30px","size40":"40px","size50":"50px","size60":"60px","size80":"80px","size120":"120px","size160":"160px","__typename":"IconsThemeSettings"},"imagePreview":{"bgColor":"var(--lia-bs-gray-900)","titleColor":"var(--lia-bs-white)","controlColor":"var(--lia-bs-white)","controlBgColor":"var(--lia-bs-gray-800)","__typename":"ImagePreviewThemeSettings"},"input":{"borderColor":"var(--lia-bs-gray-600)","disabledColor":"var(--lia-bs-gray-600)","focusBorderColor":"var(--lia-bs-primary)","labelMarginBottom":"10px","btnFontSize":"var(--lia-bs-font-size-sm)","focusBoxShadow":"0 0 0 3px hsla(var(--lia-bs-primary-h), var(--lia-bs-primary-s), var(--lia-bs-primary-l), 0.2)","checkLabelMarginBottom":"2px","checkboxBorderRadius":"3px","borderRadiusSm":"var(--lia-bs-border-radius-sm)","borderRadius":"var(--lia-bs-border-radius)","borderRadiusLg":"var(--lia-bs-border-radius-lg)","formTextMarginTop":"4px","textAreaBorderRadius":"var(--lia-bs-border-radius)","activeFillColor":"var(--lia-bs-primary)","__typename":"InputThemeSettings"},"loading":{"dotDarkColor":"hsla(var(--lia-bs-black-h), var(--lia-bs-black-s), var(--lia-bs-black-l), 0.2)","dotLightColor":"hsla(var(--lia-bs-white-h), var(--lia-bs-white-s), var(--lia-bs-white-l), 0.5)","barDarkColor":"hsla(var(--lia-bs-black-h), var(--lia-bs-black-s), var(--lia-bs-black-l), 0.06)","barLightColor":"hsla(var(--lia-bs-white-h), var(--lia-bs-white-s), var(--lia-bs-white-l), 0.4)","__typename":"LoadingThemeSettings"},"link":{"color":"var(--lia-bs-primary)","hoverColor":"hsl(var(--lia-bs-primary-h), var(--lia-bs-primary-s), calc(var(--lia-bs-primary-l) - 10%))","decoration":"none","hoverDecoration":"underline","__typename":"LinkThemeSettings"},"listGroup":{"itemPaddingY":"15px","itemPaddingX":"15px","borderColor":"var(--lia-bs-gray-300)","__typename":"ListGroupThemeSettings"},"modal":{"contentTextColor":"var(--lia-bs-body-color)","contentBg":"var(--lia-bs-white)","backgroundBg":"var(--lia-bs-black)","smSize":"440px","mdSize":"760px","lgSize":"1080px","backdropOpacity":0.3,"contentBoxShadowXs":"var(--lia-bs-box-shadow-sm)","contentBoxShadow":"var(--lia-bs-box-shadow)","headerFontWeight":"700","__typename":"ModalThemeSettings"},"navbar":{"position":"FIXED","background":{"attachment":null,"clip":null,"color":"var(--lia-bs-white)","imageAssetName":null,"imageLastModified":"0","origin":null,"position":"CENTER_CENTER","repeat":"NO_REPEAT","size":"COVER","__typename":"BackgroundProps"},"backgroundOpacity":0.8,"paddingTop":"15px","paddingBottom":"15px","borderBottom":"1px solid var(--lia-bs-border-color)","boxShadow":"var(--lia-bs-box-shadow-sm)","brandMarginRight":"30px","brandMarginRightSm":"10px","brandLogoHeight":"30px","linkGap":"10px","linkJustifyContent":"flex-start","linkPaddingY":"5px","linkPaddingX":"10px","linkDropdownPaddingY":"9px","linkDropdownPaddingX":"var(--lia-nav-link-px)","linkColor":"var(--lia-bs-body-color)","linkHoverColor":"var(--lia-bs-primary)","linkFontSize":"var(--lia-bs-font-size-sm)","linkFontStyle":"NORMAL","linkFontWeight":"400","linkTextTransform":"NONE","linkLetterSpacing":"normal","linkBorderRadius":"var(--lia-bs-border-radius-sm)","linkBgColor":"transparent","linkBgHoverColor":"transparent","linkBorder":"none","linkBorderHover":"none","linkBoxShadow":"none","linkBoxShadowHover":"none","linkTextBorderBottom":"none","linkTextBorderBottomHover":"none","dropdownPaddingTop":"10px","dropdownPaddingBottom":"15px","dropdownPaddingX":"10px","dropdownMenuOffset":"2px","dropdownDividerMarginTop":"10px","dropdownDividerMarginBottom":"10px","dropdownBorderColor":"hsla(var(--lia-bs-black-h), var(--lia-bs-black-s), var(--lia-bs-black-l), 0.08)","controllerBgHoverColor":"hsla(var(--lia-bs-black-h), var(--lia-bs-black-s), var(--lia-bs-black-l), 0.1)","controllerIconColor":"var(--lia-bs-body-color)","controllerIconHoverColor":"var(--lia-bs-body-color)","controllerTextColor":"var(--lia-nav-controller-icon-color)","controllerTextHoverColor":"var(--lia-nav-controller-icon-hover-color)","controllerHighlightColor":"hsla(30, 100%, 50%)","controllerHighlightTextColor":"var(--lia-yiq-light)","controllerBorderRadius":"var(--lia-border-radius-50)","hamburgerColor":"var(--lia-nav-controller-icon-color)","hamburgerHoverColor":"var(--lia-nav-controller-icon-color)","hamburgerBgColor":"transparent","hamburgerBgHoverColor":"transparent","hamburgerBorder":"none","hamburgerBorderHover":"none","collapseMenuMarginLeft":"20px","collapseMenuDividerBg":"var(--lia-nav-link-color)","collapseMenuDividerOpacity":0.16,"__typename":"NavbarThemeSettings"},"pager":{"textColor":"var(--lia-bs-link-color)","textFontWeight":"var(--lia-font-weight-md)","textFontSize":"var(--lia-bs-font-size-sm)","__typename":"PagerThemeSettings"},"panel":{"bgColor":"var(--lia-bs-white)","borderRadius":"var(--lia-bs-border-radius)","borderColor":"var(--lia-bs-border-color)","boxShadow":"none","__typename":"PanelThemeSettings"},"popover":{"arrowHeight":"8px","arrowWidth":"16px","maxWidth":"300px","minWidth":"100px","headerBg":"var(--lia-bs-white)","borderColor":"var(--lia-bs-border-color)","borderRadius":"var(--lia-bs-border-radius)","boxShadow":"0 0.5rem 1rem hsla(var(--lia-bs-black-h), var(--lia-bs-black-s), var(--lia-bs-black-l), 0.15)","__typename":"PopoverThemeSettings"},"prism":{"color":"#000000","bgColor":"#f5f2f0","fontFamily":"var(--font-family-monospace)","fontSize":"var(--lia-bs-font-size-base)","fontWeightBold":"var(--lia-bs-font-weight-bold)","fontStyleItalic":"italic","tabSize":2,"highlightColor":"#b3d4fc","commentColor":"#62707e","punctuationColor":"#6f6f6f","namespaceOpacity":"0.7","propColor":"#990055","selectorColor":"#517a00","operatorColor":"#906736","operatorBgColor":"hsla(0, 0%, 100%, 0.5)","keywordColor":"#0076a9","functionColor":"#d3284b","variableColor":"#c14700","__typename":"PrismThemeSettings"},"rte":{"bgColor":"var(--lia-bs-white)","borderRadius":"var(--lia-panel-border-radius)","boxShadow":" var(--lia-panel-box-shadow)","customColor1":"#bfedd2","customColor2":"#fbeeb8","customColor3":"#f8cac6","customColor4":"#eccafa","customColor5":"#c2e0f4","customColor6":"#2dc26b","customColor7":"#f1c40f","customColor8":"#e03e2d","customColor9":"#b96ad9","customColor10":"#3598db","customColor11":"#169179","customColor12":"#e67e23","customColor13":"#ba372a","customColor14":"#843fa1","customColor15":"#236fa1","customColor16":"#ecf0f1","customColor17":"#ced4d9","customColor18":"#95a5a6","customColor19":"#7e8c8d","customColor20":"#34495e","customColor21":"#000000","customColor22":"#ffffff","defaultMessageHeaderMarginTop":"14px","defaultMessageHeaderMarginBottom":"10px","defaultMessageItemMarginTop":"0","defaultMessageItemMarginBottom":"10px","diffAddedColor":"hsla(170, 53%, 51%, 0.4)","diffChangedColor":"hsla(43, 97%, 63%, 0.4)","diffNoneColor":"hsla(0, 0%, 80%, 0.4)","diffRemovedColor":"hsla(9, 74%, 47%, 0.4)","specialMessageHeaderMarginTop":"14px","specialMessageHeaderMarginBottom":"10px","specialMessageItemMarginTop":"0","specialMessageItemMarginBottom":"10px","__typename":"RteThemeSettings"},"tags":{"bgColor":"var(--lia-bs-gray-200)","bgHoverColor":"var(--lia-bs-gray-400)","borderRadius":"var(--lia-bs-border-radius-sm)","color":"var(--lia-bs-body-color)","hoverColor":"var(--lia-bs-body-color)","fontWeight":"var(--lia-font-weight-md)","fontSize":"var(--lia-font-size-xxs)","textTransform":"UPPERCASE","letterSpacing":"0.5px","__typename":"TagsThemeSettings"},"toasts":{"borderRadius":"var(--lia-bs-border-radius)","paddingX":"12px","__typename":"ToastsThemeSettings"},"typography":{"fontFamilyBase":"Atkinson Hyperlegible","fontStyleBase":"NORMAL","fontWeightBase":"400","fontWeightLight":"300","fontWeightNormal":"400","fontWeightMd":"500","fontWeightBold":"700","letterSpacingSm":"normal","letterSpacingXs":"normal","lineHeightBase":"1.3","fontSizeBase":"15px","fontSizeXxs":"11px","fontSizeXs":"12px","fontSizeSm":"13px","fontSizeLg":"20px","fontSizeXl":"24px","smallFontSize":"14px","customFonts":[],"__typename":"TypographyThemeSettings"},"unstyledListItem":{"marginBottomSm":"5px","marginBottomMd":"10px","marginBottomLg":"15px","marginBottomXl":"20px","marginBottomXxl":"25px","__typename":"UnstyledListItemThemeSettings"},"yiq":{"light":"#ffffff","dark":"#000000","__typename":"YiqThemeSettings"},"colorLightness":{"primaryDark":0.36,"primaryLight":0.74,"primaryLighter":0.89,"primaryLightest":0.95,"infoDark":0.39,"infoLight":0.72,"infoLighter":0.85,"infoLightest":0.93,"successDark":0.24,"successLight":0.62,"successLighter":0.8,"successLightest":0.91,"warningDark":0.39,"warningLight":0.68,"warningLighter":0.84,"warningLightest":0.93,"dangerDark":0.41,"dangerLight":0.72,"dangerLighter":0.89,"dangerLightest":0.95,"__typename":"ColorLightnessThemeSettings"},"localOverride":false,"__typename":"Theme"},"localOverride":false},"CachedAsset:text:en_US-shared/client/components/common/Loading/LoadingDot-1745595729370":{"__typename":"CachedAsset","id":"text:en_US-shared/client/components/common/Loading/LoadingDot-1745595729370","value":{"title":"Loading..."},"localOverride":false},"CachedAsset:text:en_US-components/common/EmailVerification-1745595729370":{"__typename":"CachedAsset","id":"text:en_US-components/common/EmailVerification-1745595729370","value":{"email.verification.title":"Email Verification Required","email.verification.message.update.email":"To participate in the community, you must first verify your email address. The verification email was sent to {email}. To change your email, visit My Settings.","email.verification.message.resend.email":"To participate in the community, you must first verify your email address. The verification email was sent to {email}. Resend email."},"localOverride":false},"CachedAsset:text:en_US-pages/tags/TagPage-1745595729370":{"__typename":"CachedAsset","id":"text:en_US-pages/tags/TagPage-1745595729370","value":{"tagPageTitle":"Tag:\"{tagName}\" | {communityTitle}","tagPageForNodeTitle":"Tag:\"{tagName}\" in \"{title}\" | {communityTitle}","name":"Tags Page","tag":"Tag: {tagName}"},"localOverride":false},"AssociatedImage:{\"url\":\"https://community.f5.com/t5/s/zihoc95639/images/bi04Ny0xOTQ1NWk4ODNCOUNEMkFDNDZCQjI0\"}":{"__typename":"AssociatedImage","url":"https://community.f5.com/t5/s/zihoc95639/images/bi04Ny0xOTQ1NWk4ODNCOUNEMkFDNDZCQjI0","mimeType":"image/png"},"Category:category:CrowdSRC":{"__typename":"Category","id":"category:CrowdSRC","entityType":"CATEGORY","displayId":"CrowdSRC","nodeType":"category","depth":1,"title":"CrowdSRC","shortTitle":"CrowdSRC","parent":{"__ref":"Category:category:top"},"categoryPolicies":{"__typename":"CategoryPolicies","canReadNode":{"__typename":"PolicyResult","failureReason":null}}},"Category:category:top":{"__typename":"Category","id":"category:top","displayId":"top","nodeType":"category","depth":0,"title":"Top"},"Tkb:board:codeshare":{"__typename":"Tkb","id":"board:codeshare","entityType":"TKB","displayId":"codeshare","nodeType":"board","depth":2,"conversationStyle":"TKB","title":"CodeShare","description":"Have some code. Share some code.","avatar":{"__ref":"AssociatedImage:{\"url\":\"https://community.f5.com/t5/s/zihoc95639/images/bi04Ny0xOTQ1NWk4ODNCOUNEMkFDNDZCQjI0\"}"},"profileSettings":{"__typename":"ProfileSettings","language":null},"parent":{"__ref":"Category:category:CrowdSRC"},"ancestors":{"__typename":"CoreNodeConnection","edges":[{"__typename":"CoreNodeEdge","node":{"__ref":"Community:community:zihoc95639"}},{"__typename":"CoreNodeEdge","node":{"__ref":"Category:category:CrowdSRC"}}]},"userContext":{"__typename":"NodeUserContext","canAddAttachments":false,"canUpdateNode":false,"canPostMessages":false,"isSubscribed":false},"boardPolicies":{"__typename":"BoardPolicies","canPublishArticleOnCreate":{"__typename":"PolicyResult","failureReason":{"__typename":"FailureReason","message":"error.lithium.policies.forums.policy_can_publish_on_create_workflow_action.accessDenied","key":"error.lithium.policies.forums.policy_can_publish_on_create_workflow_action.accessDenied","args":[]}},"canReadNode":{"__typename":"PolicyResult","failureReason":null}},"theme":{"__ref":"Theme:customTheme1"},"tkbPolicies":{"__typename":"TkbPolicies","canReadNode":{"__typename":"PolicyResult","failureReason":null}},"shortTitle":"CodeShare","tagPolicies":{"__typename":"TagPolicies","canSubscribeTagOnNode":{"__typename":"PolicyResult","failureReason":{"__typename":"FailureReason","message":"error.lithium.policies.labels.action.corenode.subscribe_labels.allow.accessDenied","key":"error.lithium.policies.labels.action.corenode.subscribe_labels.allow.accessDenied","args":[]}},"canManageTagDashboard":{"__typename":"PolicyResult","failureReason":{"__typename":"FailureReason","message":"error.lithium.policies.labels.action.corenode.admin_labels.allow.accessDenied","key":"error.lithium.policies.labels.action.corenode.admin_labels.allow.accessDenied","args":[]}}}},"CachedAsset:quilt:f5.prod:pages/tags/TagPage:board:codeshare-1745595726105":{"__typename":"CachedAsset","id":"quilt:f5.prod:pages/tags/TagPage:board:codeshare-1745595726105","value":{"id":"TagPage","container":{"id":"Common","headerProps":{"removeComponents":["community.widget.bannerWidget"],"__typename":"QuiltContainerSectionProps"},"items":[{"id":"tag-header-widget","layout":"ONE_COLUMN","bgColor":"var(--lia-bs-white)","showBorder":"BOTTOM","sectionEditLevel":"LOCKED","columnMap":{"main":[{"id":"tags.widget.TagsHeaderWidget","__typename":"QuiltComponent"}],"__typename":"OneSectionColumns"},"__typename":"OneColumnQuiltSection"},{"id":"messages-list-for-tag-widget","layout":"ONE_COLUMN","columnMap":{"main":[{"id":"messages.widget.messageListForNodeByRecentActivityWidget","props":{"viewVariant":{"type":"inline","props":{"useUnreadCount":true,"useViewCount":true,"useAuthorLogin":true,"clampBodyLines":3,"useAvatar":true,"useBoardIcon":false,"useKudosCount":true,"usePreviewMedia":true,"useTags":false,"useNode":true,"useNodeLink":true,"useTextBody":true,"truncateBodyLength":-1,"useBody":true,"useRepliesCount":true,"useSolvedBadge":true,"timeStampType":"conversation.lastPostingActivityTime","useMessageTimeLink":true,"clampSubjectLines":2}},"panelType":"divider","useTitle":false,"hideIfEmpty":false,"pagerVariant":{"type":"loadMore"},"style":"list","showTabs":true,"tabItemMap":{"default":{"mostRecent":true,"mostRecentUserContent":false,"newest":false},"additional":{"mostKudoed":true,"mostViewed":true,"mostReplies":false,"noReplies":false,"noSolutions":false,"solutions":false}}},"__typename":"QuiltComponent"}],"__typename":"OneSectionColumns"},"__typename":"OneColumnQuiltSection"}],"__typename":"QuiltContainer"},"__typename":"Quilt"},"localOverride":false},"CachedAsset:text:en_US-components/common/ActionFeedback-1745595729370":{"__typename":"CachedAsset","id":"text:en_US-components/common/ActionFeedback-1745595729370","value":{"joinedGroupHub.title":"Welcome","joinedGroupHub.message":"You are now a member of this group and are subscribed to updates.","groupHubInviteNotFound.title":"Invitation Not Found","groupHubInviteNotFound.message":"Sorry, we could not find your invitation to the group. The owner may have canceled the invite.","groupHubNotFound.title":"Group Not Found","groupHubNotFound.message":"The grouphub you tried to join does not exist. It may have been deleted.","existingGroupHubMember.title":"Already Joined","existingGroupHubMember.message":"You are already a member of this group.","accountLocked.title":"Account Locked","accountLocked.message":"Your account has been locked due to multiple failed attempts. Try again in {lockoutTime} minutes.","editedGroupHub.title":"Changes Saved","editedGroupHub.message":"Your group has been updated.","leftGroupHub.title":"Goodbye","leftGroupHub.message":"You are no longer a member of this group and will not receive future updates.","deletedGroupHub.title":"Deleted","deletedGroupHub.message":"The group has been deleted.","groupHubCreated.title":"Group Created","groupHubCreated.message":"{groupHubName} is ready to use","accountClosed.title":"Account Closed","accountClosed.message":"The account has been closed and you will now be redirected to the homepage","resetTokenExpired.title":"Reset Password Link has Expired","resetTokenExpired.message":"Try resetting your password again","invalidUrl.title":"Invalid URL","invalidUrl.message":"The URL you're using is not recognized. Verify your URL and try again.","accountClosedForUser.title":"Account Closed","accountClosedForUser.message":"{userName}'s account is closed","inviteTokenInvalid.title":"Invitation Invalid","inviteTokenInvalid.message":"Your invitation to the community has been canceled or expired.","inviteTokenError.title":"Invitation Verification Failed","inviteTokenError.message":"The url you are utilizing is not recognized. Verify your URL and try again","pageNotFound.title":"Access Denied","pageNotFound.message":"You do not have access to this area of the community or it doesn't exist","eventAttending.title":"Responded as Attending","eventAttending.message":"You'll be notified when there's new activity and reminded as the event approaches","eventInterested.title":"Responded as Interested","eventInterested.message":"You'll be notified when there's new activity and reminded as the event approaches","eventNotFound.title":"Event Not Found","eventNotFound.message":"The event you tried to respond to does not exist.","redirectToRelatedPage.title":"Showing Related Content","redirectToRelatedPageForBaseUsers.title":"Showing Related Content","redirectToRelatedPageForBaseUsers.message":"The content you are trying to access is archived","redirectToRelatedPage.message":"The content you are trying to access is archived","relatedUrl.archivalLink.flyoutMessage":"The content you are trying to access is archived View Archived Content"},"localOverride":false},"CachedAsset:quiltWrapper:f5.prod:Common:1745595708561":{"__typename":"CachedAsset","id":"quiltWrapper:f5.prod:Common:1745595708561","value":{"id":"Common","header":{"backgroundImageProps":{"assetName":"header.jpg","backgroundSize":"COVER","backgroundRepeat":"NO_REPEAT","backgroundPosition":"LEFT_CENTER","lastModified":"1702932449000","__typename":"BackgroundImageProps"},"backgroundColor":"transparent","items":[{"id":"custom.widget.GainsightShared","props":{"widgetVisibility":"signedInOnly","useTitle":true,"useBackground":false,"title":"","lazyLoad":false},"__typename":"QuiltComponent"},{"id":"custom.widget.Beta_MetaNav","props":{"widgetVisibility":"signedInOrAnonymous","useTitle":true,"useBackground":false,"title":"","lazyLoad":false},"__typename":"QuiltComponent"},{"id":"community.widget.navbarWidget","props":{"showUserName":false,"showRegisterLink":true,"style":{"boxShadow":"var(--lia-bs-box-shadow-sm)","linkFontWeight":"700","controllerHighlightColor":"hsla(30, 100%, 50%)","dropdownDividerMarginBottom":"10px","hamburgerBorderHover":"none","linkFontSize":"15px","linkBoxShadowHover":"none","backgroundOpacity":0.4,"controllerBorderRadius":"var(--lia-border-radius-50)","hamburgerBgColor":"transparent","linkTextBorderBottom":"none","hamburgerColor":"var(--lia-nav-controller-icon-color)","brandLogoHeight":"48px","linkLetterSpacing":"normal","linkBgHoverColor":"transparent","collapseMenuDividerOpacity":0.16,"paddingBottom":"10px","dropdownPaddingBottom":"15px","dropdownMenuOffset":"2px","hamburgerBgHoverColor":"transparent","borderBottom":"0","hamburgerBorder":"none","dropdownPaddingX":"10px","brandMarginRightSm":"10px","linkBoxShadow":"none","linkJustifyContent":"center","linkColor":"var(--lia-bs-primary)","collapseMenuDividerBg":"var(--lia-nav-link-color)","dropdownPaddingTop":"10px","controllerHighlightTextColor":"var(--lia-yiq-dark)","background":{"imageAssetName":"","color":"var(--lia-bs-white)","size":"COVER","repeat":"NO_REPEAT","position":"CENTER_CENTER","imageLastModified":""},"linkBorderRadius":"var(--lia-bs-border-radius-sm)","linkHoverColor":"var(--lia-bs-primary)","position":"FIXED","linkBorder":"none","linkTextBorderBottomHover":"2px solid #0C5C8D","brandMarginRight":"30px","hamburgerHoverColor":"var(--lia-nav-controller-icon-color)","linkBorderHover":"none","collapseMenuMarginLeft":"20px","linkFontStyle":"NORMAL","linkPaddingX":"10px","paddingTop":"10px","linkPaddingY":"5px","linkTextTransform":"NONE","dropdownBorderColor":"hsla(var(--lia-bs-black-h), var(--lia-bs-black-s), var(--lia-bs-black-l), 0.08)","controllerBgHoverColor":"hsla(var(--lia-bs-black-h), var(--lia-bs-black-s), var(--lia-bs-black-l), 0.1)","linkDropdownPaddingX":"var(--lia-nav-link-px)","linkBgColor":"transparent","linkDropdownPaddingY":"9px","controllerIconColor":"#0C5C8D","dropdownDividerMarginTop":"10px","linkGap":"10px","controllerIconHoverColor":"#0C5C8D"},"links":{"sideLinks":[],"mainLinks":[{"children":[{"linkType":"INTERNAL","id":"migrated-link-1","params":{"boardId":"TechnicalForum","categoryId":"Forums"},"routeName":"ForumBoardPage"},{"linkType":"INTERNAL","id":"migrated-link-2","params":{"boardId":"WaterCooler","categoryId":"Forums"},"routeName":"ForumBoardPage"}],"linkType":"INTERNAL","id":"migrated-link-0","params":{"categoryId":"Forums"},"routeName":"CategoryPage"},{"children":[{"linkType":"INTERNAL","id":"migrated-link-4","params":{"boardId":"codeshare","categoryId":"CrowdSRC"},"routeName":"TkbBoardPage"},{"linkType":"INTERNAL","id":"migrated-link-5","params":{"boardId":"communityarticles","categoryId":"CrowdSRC"},"routeName":"TkbBoardPage"}],"linkType":"INTERNAL","id":"migrated-link-3","params":{"categoryId":"CrowdSRC"},"routeName":"CategoryPage"},{"children":[{"linkType":"INTERNAL","id":"migrated-link-7","params":{"boardId":"TechnicalArticles","categoryId":"Articles"},"routeName":"TkbBoardPage"},{"linkType":"INTERNAL","id":"article-series","params":{"boardId":"article-series","categoryId":"Articles"},"routeName":"TkbBoardPage"},{"linkType":"INTERNAL","id":"security-insights","params":{"boardId":"security-insights","categoryId":"Articles"},"routeName":"TkbBoardPage"},{"linkType":"INTERNAL","id":"migrated-link-8","params":{"boardId":"DevCentralNews","categoryId":"Articles"},"routeName":"TkbBoardPage"}],"linkType":"INTERNAL","id":"migrated-link-6","params":{"categoryId":"Articles"},"routeName":"CategoryPage"},{"children":[{"linkType":"INTERNAL","id":"migrated-link-10","params":{"categoryId":"CommunityGroups"},"routeName":"CategoryPage"},{"linkType":"INTERNAL","id":"migrated-link-11","params":{"categoryId":"F5-Groups"},"routeName":"CategoryPage"}],"linkType":"INTERNAL","id":"migrated-link-9","params":{"categoryId":"GroupsCategory"},"routeName":"CategoryPage"},{"children":[],"linkType":"INTERNAL","id":"migrated-link-12","params":{"boardId":"Events","categoryId":"top"},"routeName":"EventBoardPage"},{"children":[],"linkType":"INTERNAL","id":"migrated-link-13","params":{"boardId":"Suggestions","categoryId":"top"},"routeName":"IdeaBoardPage"},{"children":[],"linkType":"EXTERNAL","id":"Common-external-link","url":"https://community.f5.com/c/how-do-i","target":"SELF"}]},"className":"QuiltComponent_lia-component-edit-mode__lQ9Z6","showSearchIcon":false},"__typename":"QuiltComponent"},{"id":"community.widget.bannerWidget","props":{"backgroundColor":"transparent","visualEffects":{"showBottomBorder":false},"backgroundImageProps":{"backgroundSize":"COVER","backgroundPosition":"CENTER_CENTER","backgroundRepeat":"NO_REPEAT"},"fontColor":"#222222"},"__typename":"QuiltComponent"},{"id":"community.widget.breadcrumbWidget","props":{"backgroundColor":"var(--lia-bs-primary)","linkHighlightColor":"#FFFFFF","visualEffects":{"showBottomBorder":false},"backgroundOpacity":60,"linkTextColor":"#FFFFFF"},"__typename":"QuiltComponent"}],"__typename":"QuiltWrapperSection"},"footer":{"backgroundImageProps":{"assetName":null,"backgroundSize":"COVER","backgroundRepeat":"NO_REPEAT","backgroundPosition":"CENTER_CENTER","lastModified":null,"__typename":"BackgroundImageProps"},"backgroundColor":"var(--lia-bs-body-color)","items":[{"id":"custom.widget.Beta_Footer","props":{"widgetVisibility":"signedInOrAnonymous","useTitle":true,"useBackground":false,"title":"","lazyLoad":false},"__typename":"QuiltComponent"},{"id":"custom.widget.Tag_Manager_Helper","props":{"widgetVisibility":"signedInOrAnonymous","useTitle":true,"useBackground":false,"title":"","lazyLoad":false},"__typename":"QuiltComponent"},{"id":"custom.widget.Consent_Blackbar","props":{"widgetVisibility":"signedInOrAnonymous","useTitle":true,"useBackground":false,"title":"","lazyLoad":false},"__typename":"QuiltComponent"}],"__typename":"QuiltWrapperSection"},"__typename":"QuiltWrapper","localOverride":false},"localOverride":false},"CachedAsset:component:custom.widget.GainsightShared-en-us-1745595734006":{"__typename":"CachedAsset","id":"component:custom.widget.GainsightShared-en-us-1745595734006","value":{"component":{"id":"custom.widget.GainsightShared","template":{"id":"GainsightShared","markupLanguage":"HTML","style":null,"texts":{},"defaults":{"config":{"applicablePages":[],"description":"Shared functions for Gainsight integration","fetchedContent":null,"__typename":"ComponentConfiguration"},"props":[],"__typename":"ComponentProperties"},"components":[{"id":"custom.widget.GainsightShared","form":null,"config":null,"props":[],"__typename":"Component"}],"grouping":"TEXTHTML","__typename":"ComponentTemplate"},"properties":{"config":{"applicablePages":[],"description":"Shared functions for Gainsight integration","fetchedContent":null,"__typename":"ComponentConfiguration"},"props":[],"__typename":"ComponentProperties"},"form":null,"__typename":"Component","localOverride":false},"globalCss":null,"form":null},"localOverride":false},"CachedAsset:component:custom.widget.Beta_MetaNav-en-us-1745595734006":{"__typename":"CachedAsset","id":"component:custom.widget.Beta_MetaNav-en-us-1745595734006","value":{"component":{"id":"custom.widget.Beta_MetaNav","template":{"id":"Beta_MetaNav","markupLanguage":"HANDLEBARS","style":null,"texts":{},"defaults":{"config":{"applicablePages":[],"description":"MetaNav menu at the top of every page.","fetchedContent":null,"__typename":"ComponentConfiguration"},"props":[],"__typename":"ComponentProperties"},"components":[{"id":"custom.widget.Beta_MetaNav","form":null,"config":null,"props":[],"__typename":"Component"}],"grouping":"CUSTOM","__typename":"ComponentTemplate"},"properties":{"config":{"applicablePages":[],"description":"MetaNav menu at the top of every page.","fetchedContent":null,"__typename":"ComponentConfiguration"},"props":[],"__typename":"ComponentProperties"},"form":null,"__typename":"Component","localOverride":false},"globalCss":null,"form":null},"localOverride":false},"CachedAsset:component:custom.widget.Beta_Footer-en-us-1745595734006":{"__typename":"CachedAsset","id":"component:custom.widget.Beta_Footer-en-us-1745595734006","value":{"component":{"id":"custom.widget.Beta_Footer","template":{"id":"Beta_Footer","markupLanguage":"HANDLEBARS","style":null,"texts":{},"defaults":{"config":{"applicablePages":[],"description":"DevCentral´s custom footer.","fetchedContent":null,"__typename":"ComponentConfiguration"},"props":[],"__typename":"ComponentProperties"},"components":[{"id":"custom.widget.Beta_Footer","form":null,"config":null,"props":[],"__typename":"Component"}],"grouping":"CUSTOM","__typename":"ComponentTemplate"},"properties":{"config":{"applicablePages":[],"description":"DevCentral´s custom footer.","fetchedContent":null,"__typename":"ComponentConfiguration"},"props":[],"__typename":"ComponentProperties"},"form":null,"__typename":"Component","localOverride":false},"globalCss":null,"form":null},"localOverride":false},"CachedAsset:component:custom.widget.Tag_Manager_Helper-en-us-1745595734006":{"__typename":"CachedAsset","id":"component:custom.widget.Tag_Manager_Helper-en-us-1745595734006","value":{"component":{"id":"custom.widget.Tag_Manager_Helper","template":{"id":"Tag_Manager_Helper","markupLanguage":"HANDLEBARS","style":null,"texts":{},"defaults":{"config":{"applicablePages":[],"description":"Helper widget to inject Tag Manager scripts into head element","fetchedContent":null,"__typename":"ComponentConfiguration"},"props":[],"__typename":"ComponentProperties"},"components":[{"id":"custom.widget.Tag_Manager_Helper","form":null,"config":null,"props":[],"__typename":"Component"}],"grouping":"CUSTOM","__typename":"ComponentTemplate"},"properties":{"config":{"applicablePages":[],"description":"Helper widget to inject Tag Manager scripts into head element","fetchedContent":null,"__typename":"ComponentConfiguration"},"props":[],"__typename":"ComponentProperties"},"form":null,"__typename":"Component","localOverride":false},"globalCss":null,"form":null},"localOverride":false},"CachedAsset:component:custom.widget.Consent_Blackbar-en-us-1745595734006":{"__typename":"CachedAsset","id":"component:custom.widget.Consent_Blackbar-en-us-1745595734006","value":{"component":{"id":"custom.widget.Consent_Blackbar","template":{"id":"Consent_Blackbar","markupLanguage":"HTML","style":null,"texts":{},"defaults":{"config":{"applicablePages":[],"description":"","fetchedContent":null,"__typename":"ComponentConfiguration"},"props":[],"__typename":"ComponentProperties"},"components":[{"id":"custom.widget.Consent_Blackbar","form":null,"config":null,"props":[],"__typename":"Component"}],"grouping":"TEXTHTML","__typename":"ComponentTemplate"},"properties":{"config":{"applicablePages":[],"description":"","fetchedContent":null,"__typename":"ComponentConfiguration"},"props":[],"__typename":"ComponentProperties"},"form":null,"__typename":"Component","localOverride":false},"globalCss":null,"form":null},"localOverride":false},"CachedAsset:text:en_US-components/community/Breadcrumb-1745595729370":{"__typename":"CachedAsset","id":"text:en_US-components/community/Breadcrumb-1745595729370","value":{"navLabel":"Breadcrumbs","dropdown":"Additional parent page navigation"},"localOverride":false},"CachedAsset:text:en_US-components/tags/TagsHeaderWidget-1745595729370":{"__typename":"CachedAsset","id":"text:en_US-components/tags/TagsHeaderWidget-1745595729370","value":{"tag":"{tagName}","topicsCount":"{count} {count, plural, one {Topic} other {Topics}}"},"localOverride":false},"CachedAsset:text:en_US-components/messages/MessageListForNodeByRecentActivityWidget-1745595729370":{"__typename":"CachedAsset","id":"text:en_US-components/messages/MessageListForNodeByRecentActivityWidget-1745595729370","value":{"title@userScope:other":"Recent Content","title@userScope:self":"Contributions","title@board:FORUM@userScope:other":"Recent Discussions","title@board:BLOG@userScope:other":"Recent Blogs","emptyDescription":"No content to show","MessageListForNodeByRecentActivityWidgetEditor.nodeScope.label":"Scope","title@instance:1706288370055":"Content Feed","title@instance:1743095186784":"Most Recent Updates","title@instance:1704317906837":"Content Feed","title@instance:1743095018194":"Most Recent Updates","title@instance:1702668293472":"Community Feed","title@instance:1743095117047":"Most Recent Updates","title@instance:1704319314827":"Blog Feed","title@instance:1743095235555":"Most Recent Updates","title@instance:1704320290851":"My Contributions","title@instance:1703720491809":"Forum Feed","title@instance:1743095311723":"Most Recent Updates","title@instance:1703028709746":"Group Content Feed","title@instance:VTsglH":"Content Feed"},"localOverride":false},"Category:category:Forums":{"__typename":"Category","id":"category:Forums","categoryPolicies":{"__typename":"CategoryPolicies","canReadNode":{"__typename":"PolicyResult","failureReason":null}}},"Forum:board:TechnicalForum":{"__typename":"Forum","id":"board:TechnicalForum","forumPolicies":{"__typename":"ForumPolicies","canReadNode":{"__typename":"PolicyResult","failureReason":null}},"boardPolicies":{"__typename":"BoardPolicies","canReadNode":{"__typename":"PolicyResult","failureReason":null}}},"Forum:board:WaterCooler":{"__typename":"Forum","id":"board:WaterCooler","forumPolicies":{"__typename":"ForumPolicies","canReadNode":{"__typename":"PolicyResult","failureReason":null}},"boardPolicies":{"__typename":"BoardPolicies","canReadNode":{"__typename":"PolicyResult","failureReason":null}}},"Category:category:Articles":{"__typename":"Category","id":"category:Articles","categoryPolicies":{"__typename":"CategoryPolicies","canReadNode":{"__typename":"PolicyResult","failureReason":null}}},"Tkb:board:TechnicalArticles":{"__typename":"Tkb","id":"board:TechnicalArticles","tkbPolicies":{"__typename":"TkbPolicies","canReadNode":{"__typename":"PolicyResult","failureReason":null}},"boardPolicies":{"__typename":"BoardPolicies","canReadNode":{"__typename":"PolicyResult","failureReason":null}}},"Tkb:board:DevCentralNews":{"__typename":"Tkb","id":"board:DevCentralNews","tkbPolicies":{"__typename":"TkbPolicies","canReadNode":{"__typename":"PolicyResult","failureReason":null}},"boardPolicies":{"__typename":"BoardPolicies","canReadNode":{"__typename":"PolicyResult","failureReason":null}}},"Category:category:GroupsCategory":{"__typename":"Category","id":"category:GroupsCategory","categoryPolicies":{"__typename":"CategoryPolicies","canReadNode":{"__typename":"PolicyResult","failureReason":null}}},"Category:category:F5-Groups":{"__typename":"Category","id":"category:F5-Groups","categoryPolicies":{"__typename":"CategoryPolicies","canReadNode":{"__typename":"PolicyResult","failureReason":null}}},"Category:category:CommunityGroups":{"__typename":"Category","id":"category:CommunityGroups","categoryPolicies":{"__typename":"CategoryPolicies","canReadNode":{"__typename":"PolicyResult","failureReason":null}}},"Occasion:board:Events":{"__typename":"Occasion","id":"board:Events","boardPolicies":{"__typename":"BoardPolicies","canReadNode":{"__typename":"PolicyResult","failureReason":null}},"occasionPolicies":{"__typename":"OccasionPolicies","canReadNode":{"__typename":"PolicyResult","failureReason":null}}},"Idea:board:Suggestions":{"__typename":"Idea","id":"board:Suggestions","boardPolicies":{"__typename":"BoardPolicies","canReadNode":{"__typename":"PolicyResult","failureReason":null}},"ideaPolicies":{"__typename":"IdeaPolicies","canReadNode":{"__typename":"PolicyResult","failureReason":null}}},"Tkb:board:communityarticles":{"__typename":"Tkb","id":"board:communityarticles","tkbPolicies":{"__typename":"TkbPolicies","canReadNode":{"__typename":"PolicyResult","failureReason":null}},"boardPolicies":{"__typename":"BoardPolicies","canReadNode":{"__typename":"PolicyResult","failureReason":null}}},"Tkb:board:security-insights":{"__typename":"Tkb","id":"board:security-insights","tkbPolicies":{"__typename":"TkbPolicies","canReadNode":{"__typename":"PolicyResult","failureReason":null}},"boardPolicies":{"__typename":"BoardPolicies","canReadNode":{"__typename":"PolicyResult","failureReason":null}}},"Tkb:board:article-series":{"__typename":"Tkb","id":"board:article-series","tkbPolicies":{"__typename":"TkbPolicies","canReadNode":{"__typename":"PolicyResult","failureReason":null}},"boardPolicies":{"__typename":"BoardPolicies","canReadNode":{"__typename":"PolicyResult","failureReason":null}}},"Conversation:conversation:289252":{"__typename":"Conversation","id":"conversation:289252","topic":{"__typename":"TkbTopicMessage","uid":289252},"lastPostingActivityTime":"2022-12-08T14:21:51.862-08:00","solved":false},"User:user:325385":{"__typename":"User","uid":325385,"login":"Patrik_Jonsson","registrationData":{"__typename":"RegistrationData","status":null},"deleted":false,"avatar":{"__typename":"UserAvatar","url":"https://community.f5.com/t5/s/zihoc95639/images/dS0zMjUzODUtMTY0MjJpNDQzQTkxREQwMjBDODY4NQ"},"id":"user:325385"},"AssociatedImage:{\"url\":\"https://community.f5.com/t5/s/zihoc95639/images/bS0yODkyNTItMTYxMDFpMzlBNzlEM0E3MkQ2NzJGNQ?revision=2\"}":{"__typename":"AssociatedImage","url":"https://community.f5.com/t5/s/zihoc95639/images/bS0yODkyNTItMTYxMDFpMzlBNzlEM0E3MkQ2NzJGNQ?revision=2","title":"0151T000003kQn1QAE.png","associationType":"BODY","width":1476,"height":792,"altText":null},"AssociatedImage:{\"url\":\"https://community.f5.com/t5/s/zihoc95639/images/bS0yODkyNTItMjk3OWkxNTdBOUY2ODY0NDQ5OUQ4?revision=2\"}":{"__typename":"AssociatedImage","url":"https://community.f5.com/t5/s/zihoc95639/images/bS0yODkyNTItMjk3OWkxNTdBOUY2ODY0NDQ5OUQ4?revision=2","title":"0151T000003kQn6QAE.png","associationType":"BODY","width":1184,"height":369,"altText":null},"AssociatedImage:{\"url\":\"https://community.f5.com/t5/s/zihoc95639/images/bS0yODkyNTItMTU2NTVpOTNCNEI0OTVCNUVERkQ2Mg?revision=2\"}":{"__typename":"AssociatedImage","url":"https://community.f5.com/t5/s/zihoc95639/images/bS0yODkyNTItMTU2NTVpOTNCNEI0OTVCNUVERkQ2Mg?revision=2","title":"0151T000003kQn7QAE.png","associationType":"BODY","width":1511,"height":687,"altText":null},"TkbTopicMessage:message:289252":{"__typename":"TkbTopicMessage","subject":"BigIP Report Old","conversation":{"__ref":"Conversation:conversation:289252"},"id":"message:289252","revisionNum":2,"uid":289252,"depth":0,"board":{"__ref":"Tkb:board:codeshare"},"author":{"__ref":"User:user:325385"},"teaser@stripHtml({\"removeProcessingText\":true,\"truncateLength\":-1})":"","introduction":"","metrics":{"__typename":"MessageMetrics","views":26499},"postTime":"2015-09-05T02:08:05.000-07:00","lastPublishTime":"2022-12-08T14:21:51.862-08:00","body@stripHtml({\"removeProcessingText\":true,\"removeSpoilerMarkup\":true,\"removeTocMarkup\":true,\"truncateLength\":-1})":" Problem this snippet solves: \n This codeshare has been deprecated due to a hosting platform corruption. I have moved code and conversation to a new record (on the same original URL) https://devcentral.f5.com/s/articles/bigip-report \n can be Overview \n This is a script which will generate a report of the BigIP LTM configuration on all your load balancers making it easy to find information and get a comprehensive overview of virtual servers and pools connected to them. \n This information is used to relay information to our NOC and developers to give them insight in where things are located and to be able to plan patching and deploys. I also use it myself as a quick way get information or gather data used as a foundation for RFC's, ie get a list of all external virtual servers without compression profiles. \n The script has been running on 13 pairs of load balancers, indexing over 1200 virtual servers for several years now and the report is widely used across the company and by many companies and governments across the world. \n It's easy to setup and use and only requires guest permissions on your devices. \n Demo/Preview \n Please note that it takes time to make these so sometimes they're a bit outdated and they only cover one HA pair. However, they still serve the purpose of showing what you can expect from the report. \n Interactive demo \n http://loadbalancing.se/bigipreportdemo/ \n   \n Screen shots \n The main report: \n \n   \n The device overview: \n \n Certificate details: \n \n How to use this snippet: \n This codeshare has been deprecated due to a hosting platform corruption. I have moved code and conversation to a new record (on the same original URL) https://devcentral.f5.com/s/articles/bigip-report \n Installation instructions \n BigipReport REST \n This is the only branch we're updating since middle of 2020 and it supports 12.x and upwards (maybe even 11.6). \n Download: https://loadbalancing.se/downloads/bigipreport-v5.5.4.zip \n Documentation, installation instructions and troubleshooting: https://loadbalancing.se/bigipreport-rest/ \n Docker support \n This will be the recommended way of running bigipreport in the near future. It's still undergoing testing but it's looking really good so far. \n https://loadbalancing.se/2021/01/05/running-bigipreport-on-docker/ \n BigipReport (Legacy) \n Older version of the report that only runs on Windows and is depending on a Powershell plugin originally written by Joe Pruitt (F5). \n   \n BigipReport (Stable): \n https://loadbalancing.se/downloads/bigipreport-5.3.1.zip \n BigipReport (BETA): https://loadbalancing.se/downloads/bigipreport-5.4.0-beta.zip \n iControl Snapin: https://loadbalancing.se/downloads/f5-icontrol.zip \n Documentation and installation instructions: \n https://loadbalancing.se/bigip-report/ \n Upgrade instructions \n Protect the report using APM and active directory \n Written by DevCentral member Shann_P: \n https://loadbalancing.se/2018/04/08/protecting-bigip-report-behind-an-apm-by-shannon-poole/ \n Got issues/problems/feedback? \n Still have issues? Drop a comment below. We usually reply quite fast. Any bugs found, issues detected or ideas contributed makes the report better for everyone, so it's always appreciated. \n --- \n Also trying out a Discord channel now. You're welcome to hang out with us there: \n https://discord.gg/7JJvPMYahA \n Code : \n 85931,86647,90730 \n Tested this on version: \n 13.0 ","body@stripHtml({\"removeProcessingText\":true,\"removeSpoilerMarkup\":true,\"removeTocMarkup\":true,\"truncateLength\":-1})@stringLength":"3447","kudosSumWeight":16,"repliesCount":974,"readOnly":true,"images":{"__typename":"AssociatedImageConnection","edges":[{"__typename":"AssociatedImageEdge","cursor":"MjUuM3wyLjF8b3wyNXxfTlZffDE","node":{"__ref":"AssociatedImage:{\"url\":\"https://community.f5.com/t5/s/zihoc95639/images/bS0yODkyNTItMTYxMDFpMzlBNzlEM0E3MkQ2NzJGNQ?revision=2\"}"}},{"__typename":"AssociatedImageEdge","cursor":"MjUuM3wyLjF8b3wyNXxfTlZffDI","node":{"__ref":"AssociatedImage:{\"url\":\"https://community.f5.com/t5/s/zihoc95639/images/bS0yODkyNTItMjk3OWkxNTdBOUY2ODY0NDQ5OUQ4?revision=2\"}"}},{"__typename":"AssociatedImageEdge","cursor":"MjUuM3wyLjF8b3wyNXxfTlZffDM","node":{"__ref":"AssociatedImage:{\"url\":\"https://community.f5.com/t5/s/zihoc95639/images/bS0yODkyNTItMTU2NTVpOTNCNEI0OTVCNUVERkQ2Mg?revision=2\"}"}}],"totalCount":3,"pageInfo":{"__typename":"PageInfo","hasNextPage":false,"endCursor":null,"hasPreviousPage":false,"startCursor":null}},"videos":{"__typename":"VideoConnection","edges":[],"totalCount":0,"pageInfo":{"__typename":"PageInfo","hasNextPage":false,"endCursor":null,"hasPreviousPage":false,"startCursor":null}}},"Conversation:conversation:282980":{"__typename":"Conversation","id":"conversation:282980","topic":{"__typename":"TkbTopicMessage","uid":282980},"lastPostingActivityTime":"2024-07-01T03:22:52.096-07:00","solved":false},"User:user:95365":{"__typename":"User","uid":95365,"login":"Joel_Newton","registrationData":{"__typename":"RegistrationData","status":null},"deleted":false,"avatar":{"__typename":"UserAvatar","url":"https://community.f5.com/t5/s/zihoc95639/m_assets/avatars/default/avatar-1.svg?time=0"},"id":"user:95365"},"TkbTopicMessage:message:282980":{"__typename":"TkbTopicMessage","subject":"PowerShell module for the F5 LTM REST API","conversation":{"__ref":"Conversation:conversation:282980"},"id":"message:282980","revisionNum":2,"uid":282980,"depth":0,"board":{"__ref":"Tkb:board:codeshare"},"author":{"__ref":"User:user:95365"},"teaser@stripHtml({\"removeProcessingText\":true,\"truncateLength\":-1})":"","introduction":"","metrics":{"__typename":"MessageMetrics","views":20026},"postTime":"2015-12-04T06:53:10.000-08:00","lastPublishTime":"2023-06-05T22:21:20.139-07:00","body@stripHtml({\"removeProcessingText\":true,\"removeSpoilerMarkup\":true,\"removeTocMarkup\":true,\"truncateLength\":-1})":" Problem this snippet solves: To report an issue with the F5-LTM or F5-BIGIP modules, please use the Issues sections of the GitHub repos (here and here) instead of commenting here. Thanks! \n This PowerShell module uses the iControlREST API to manipulate and query pools, pool members, virtual servers, and iRules. It aims to support version 11.5.1 and higher, and to conform to the schedule for technical support of versions, though this may eventually prove to become difficult. \n The module currently includes some functionality that, strictly speaking, is outside the scope of the LTM module. Hence, there is an active effort to wrap this LTM module into a larger BIG-IP module, and relocate that functionality elsewhere within that parent module, as well as expand the scope of functionality to include BIG-IP DNS (formerly GTM) and possibly other areas. Both the LTM module and the parent BIG-IP module are projects on github. Please use these projects to report any issues you discover. Thanks! \n The module contains the following functions. \n Add-iRuleToVirtualServer Add-iRuleToVirtualServer Add-PoolMember Add-PoolMonitor Disable-PoolMember Disable-VirtualServer Enable-PoolMember Enable-VirtualServer Get-CurrentConnectionCount (deprecated; use Get-PoolMemberStats | Select-Object -ExpandProperty 'serverside.curConns') Get-F5Session (will be deprecated in future versions. use New-F5Session) Get-F5Status Get-HealthMonitor Get-HealthMonitorType Get-iRule Get-iRuleCollection (deprecated; use Get-iRule) Get-Node Get-BIGIPPartition Get-Pool Get-PoolList (deprecated; use Get-Pool) Get-PoolMember Get-PoolMemberCollection (deprecated; use Get-PoolMember) Get-PoolMemberCollectionStatus Get-PoolMemberDescription (deprecated; use Get-PoolMember) Get-PoolMemberIP (deprecated; use Get-PoolMember) Get-PoolMembers (deprecated; use Get-PoolMember) Get-PoolMemberStats Get-PoolMemberStatus (deprecated; use Get-PoolMember) Get-PoolMonitor Get-PoolsForMember Get-StatusShape Get-VirtualServer Get-VirtualServeriRuleCollection (deprecated; use Get-VirtualServer | Where rules | Select -ExpandProperty rules) Get-VirtualServerList (deprecated; use Get-VirtualServer) Invoke-RestMethodOverride New-F5Session New-HealthMonitor New-Node New-Pool New-VirtualServer Remove-HealthMonitor Remove-iRule Remove-iRuleFromVirtualServer Remove-Pool Remove-PoolMember Remove-PoolMonitor Remove-ProfileRamCache Remove-Node Remove-VirtualServer Set-iRule Set-PoolLoadBalancingMode (deprecated; use Set-Pool) Set-PoolMemberDescription Set-Pool Set-VirtualServer Sync-DeviceToGroup Test-F5Session Test-Functionality Test-HealthMonitor Test-Node Test-Pool Test-VirtualServer How to use this snippet: To use the module, click 'Download Zip', extract the files, and place them in a folder named F5-LTM beneath your PowerShell modules folder. By default, this is %USERPROFILE%\\Documents\\WindowsPowerShell\\Modules. The WindowsPowerShell and Modules folders may need to be created. \n You will most likely need to unblock the files after extracting them. Use the Unblock-File PS cmdlet to accomplish this. \n The Validation.cs class file (based on code posted by Brian Scholer) allows for using the REST API with LTM devices with self-signed SSL certificates. \n Nearly all of the functions require an F5 session object as a parameter, which contains the base URL for the F5 LTM and a credential object for a user with privileges to manipulate the F5 LTM via the REST API. Use the New-F5session function to create this object. This function expects the following parameters: \n The name or IP address of the F5 LTM device A credential object for a user with rights to use the REST API An optional TokenLifespan value for extending the life of the authentication token past the default 20 minutes \n You can create a credential object using Get-Credential and entering the username and password at the prompts, or programmatically like this: \n $secpasswd = ConvertTo-SecureString \"PlainTextPassword\" -AsPlainText -Force\n$mycreds = New-Object System.Management.Automation.PSCredential \"username\", $secpasswd\n \n\n Thanks to Kotesh Bandhamravuri and his blog entry for this snippet. \n There is a function called Test-Functionality that takes an F5Session object, a new pool name, a new virtual server, an IP address for the virtual server, and a computer name as a pool member, and validates nearly all the functions in the module. \n I've also contributed this code sample for how to gather some basic info about your LTM with this PS module. \n The module has been tested on: \n 11.5.1 Build 8.0.175 Hotfix 8 and later 11.6.0 Build 5.0.429 Hotfix 4 and later 12.0 / 12.1 13.0 Code : https://github.com/joel74/POSH-LTM-Rest Tested this on version: 11.5","body@stripHtml({\"removeProcessingText\":true,\"removeSpoilerMarkup\":true,\"removeTocMarkup\":true,\"truncateLength\":-1})@stringLength":"4803","kudosSumWeight":3,"repliesCount":150,"readOnly":false,"images":{"__typename":"AssociatedImageConnection","edges":[],"totalCount":0,"pageInfo":{"__typename":"PageInfo","hasNextPage":false,"endCursor":null,"hasPreviousPage":false,"startCursor":null}},"videos":{"__typename":"VideoConnection","edges":[],"totalCount":0,"pageInfo":{"__typename":"PageInfo","hasNextPage":false,"endCursor":null,"hasPreviousPage":false,"startCursor":null}}},"Conversation:conversation:285134":{"__typename":"Conversation","id":"conversation:285134","topic":{"__typename":"TkbTopicMessage","uid":285134},"lastPostingActivityTime":"2025-03-03T19:46:31.801-08:00","solved":false},"AssociatedImage:{\"url\":\"https://community.f5.com/t5/s/zihoc95639/images/bS0yODUxMzQtMjAzNDZpQUNENUE4MDgyRkFCNEJFNg?revision=12\"}":{"__typename":"AssociatedImage","url":"https://community.f5.com/t5/s/zihoc95639/images/bS0yODUxMzQtMjAzNDZpQUNENUE4MDgyRkFCNEJFNg?revision=12","title":"Patrik_Jonsson_0-1666904878537.png","associationType":"BODY","width":3456,"height":1434,"altText":"Patrik_Jonsson_0-1666904878537.png"},"AssociatedImage:{\"url\":\"https://community.f5.com/t5/s/zihoc95639/images/bS0yODUxMzQtMjAzNDdpNEM5NENFMEJEQUZBNEM1RA?revision=12\"}":{"__typename":"AssociatedImage","url":"https://community.f5.com/t5/s/zihoc95639/images/bS0yODUxMzQtMjAzNDdpNEM5NENFMEJEQUZBNEM1RA?revision=12","title":"Patrik_Jonsson_1-1666904947099.png","associationType":"BODY","width":3444,"height":642,"altText":"Patrik_Jonsson_1-1666904947099.png"},"AssociatedImage:{\"url\":\"https://community.f5.com/t5/s/zihoc95639/images/bS0yODUxMzQtMjAzNDhpMTY5QkUzRjM3OUJCOTM0Rg?revision=12\"}":{"__typename":"AssociatedImage","url":"https://community.f5.com/t5/s/zihoc95639/images/bS0yODUxMzQtMjAzNDhpMTY5QkUzRjM3OUJCOTM0Rg?revision=12","title":"Patrik_Jonsson_2-1666905155620.png","associationType":"BODY","width":3456,"height":1144,"altText":"Patrik_Jonsson_2-1666905155620.png"},"TkbTopicMessage:message:285134":{"__typename":"TkbTopicMessage","subject":"BIG-IP Report","conversation":{"__ref":"Conversation:conversation:285134"},"id":"message:285134","revisionNum":12,"uid":285134,"depth":0,"board":{"__ref":"Tkb:board:codeshare"},"author":{"__ref":"User:user:325385"},"teaser@stripHtml({\"removeProcessingText\":true,\"truncateLength\":-1})":"","introduction":"","metrics":{"__typename":"MessageMetrics","views":14210},"postTime":"2021-04-21T22:59:41.000-07:00","lastPublishTime":"2024-10-16T08:53:25.201-07:00","body@stripHtml({\"removeProcessingText\":true,\"removeSpoilerMarkup\":true,\"removeTocMarkup\":true,\"truncateLength\":-1})":" Problem this snippet solves: \n Overview \n This is a script which will generate a report of the BIG-IP LTM configuration on all your load balancers making it easy to find information and get a comprehensive overview of virtual servers and pools connected to them. \n This information is used to relay information to NOC and developers to give them insight in where things are located and to be able to plan patching and deploys. I also use it myself as a quick way get information or gather data used as a foundation for RFC's, ie get a list of all external virtual servers without compression profiles. \n The script has been running on 13 pairs of load balancers, indexing over 1200 virtual servers for several years now and the report is widely used across the company and by many companies and governments across the world. \n It's easy to setup and use and only requires auditor (read-only) permissions on your devices. \n Demo/Preview \n Interactive demo \n http://loadbalancing.se/bigipreportdemo/ \n Screen shots \n The main report: \n The device overview: \n Certificate details: \n How to use this snippet: \n Installation instructions \n BigipReport REST \n This is the only branch we're updating since middle of 2020 and it supports 12.x and upwards (maybe even 11.6). \n \n Downloads: https://loadbalancing.se/downloads/bigipreport-v5.7.13.zip \n Documentation, installation instructions and troubleshooting: https://loadbalancing.se/bigipreport-rest/\n Docker support \n https://loadbalancing.se/2021/01/05/running-bigipreport-on-docker/ \n Kubernetes support \n https://loadbalancing.se/2021/04/16/bigipreport-on-kubernetes/ \n BIG-IP Report (Legacy) \n Older version of the report that only runs on Windows and is depending on a Powershell plugin originally written by Joe Pruitt (F5) \n BIG-IP Report (only download this if you have v10 devices): \n https://loadbalancing.se/downloads/bigipreport-5.4.0-beta.zip \n iControl Snapin \n https://loadbalancing.se/downloads/f5-icontrol.zip \n Documentation and Installation Instructions \n https://loadbalancing.se/bigip-report/ \n Upgrade instructions \n Protect the report using APM and active directory \n Written by DevCentral member Shann_P: \n https://loadbalancing.se/2018/04/08/protecting-bigip-report-behind-an-apm-by-shannon-poole/ \n Got issues/problems/feedback? \n Still have issues? Drop a comment below. We usually reply quite fast. Any bugs found, issues detected or ideas contributed makes the report better for everyone, so it's always appreciated. \n --- \n Join us on Discord: https://discord.gg/7JJvPMYahA \n Code : \n BigIP Report \n Tested this on version: \n 12, 13, 14, 15, 16 \n \n ","body@stripHtml({\"removeProcessingText\":true,\"removeSpoilerMarkup\":true,\"removeTocMarkup\":true,\"truncateLength\":-1})@stringLength":"2647","kudosSumWeight":20,"repliesCount":97,"readOnly":false,"images":{"__typename":"AssociatedImageConnection","edges":[{"__typename":"AssociatedImageEdge","cursor":"MjUuM3wyLjF8b3wyNXxfTlZffDE","node":{"__ref":"AssociatedImage:{\"url\":\"https://community.f5.com/t5/s/zihoc95639/images/bS0yODUxMzQtMjAzNDZpQUNENUE4MDgyRkFCNEJFNg?revision=12\"}"}},{"__typename":"AssociatedImageEdge","cursor":"MjUuM3wyLjF8b3wyNXxfTlZffDI","node":{"__ref":"AssociatedImage:{\"url\":\"https://community.f5.com/t5/s/zihoc95639/images/bS0yODUxMzQtMjAzNDdpNEM5NENFMEJEQUZBNEM1RA?revision=12\"}"}},{"__typename":"AssociatedImageEdge","cursor":"MjUuM3wyLjF8b3wyNXxfTlZffDM","node":{"__ref":"AssociatedImage:{\"url\":\"https://community.f5.com/t5/s/zihoc95639/images/bS0yODUxMzQtMjAzNDhpMTY5QkUzRjM3OUJCOTM0Rg?revision=12\"}"}}],"totalCount":3,"pageInfo":{"__typename":"PageInfo","hasNextPage":false,"endCursor":null,"hasPreviousPage":false,"startCursor":null}},"videos":{"__typename":"VideoConnection","edges":[],"totalCount":0,"pageInfo":{"__typename":"PageInfo","hasNextPage":false,"endCursor":null,"hasPreviousPage":false,"startCursor":null}}},"Conversation:conversation:278150":{"__typename":"Conversation","id":"conversation:278150","topic":{"__typename":"TkbTopicMessage","uid":278150},"lastPostingActivityTime":"2019-09-17T19:06:18.000-07:00","solved":false},"User:user:131293":{"__typename":"User","uid":131293,"login":"CodeCentral_194","registrationData":{"__typename":"RegistrationData","status":null},"deleted":false,"avatar":{"__typename":"UserAvatar","url":"https://community.f5.com/t5/s/zihoc95639/m_assets/avatars/default/avatar-10.svg?time=0"},"id":"user:131293"},"TkbTopicMessage:message:278150":{"__typename":"TkbTopicMessage","subject":"PowerShell Setup Snapin","conversation":{"__ref":"Conversation:conversation:278150"},"id":"message:278150","revisionNum":1,"uid":278150,"depth":0,"board":{"__ref":"Tkb:board:codeshare"},"author":{"__ref":"User:user:131293"},"teaser@stripHtml({\"removeProcessingText\":true,\"truncateLength\":-1})":"","introduction":"","metrics":{"__typename":"MessageMetrics","views":1316},"postTime":"2015-03-09T11:39:37.000-07:00","lastPublishTime":"2015-03-09T11:39:37.000-07:00","body@stripHtml({\"removeProcessingText\":true,\"removeSpoilerMarkup\":true,\"removeTocMarkup\":true,\"truncateLength\":-1})":" Problem this snippet solves: This PowerShell script will register the iControl Snapin on 32 and 64 bit platforms. Code : param([switch]$force)\n\nfunction Is-SnapinRegistered()\n{\n $registered = $false;\n if ( $null -ne (Get-PSSnapIn -Registered | where { $_.Name -eq \"iControlSnapIn\" } ) )\n {\n $registered = $true;\n }\n $registered;\n}\n\nfunction Install-Snapin()\n{\n param(\n [string]$assembly = $null\n );\n \n foreach ($platform in (\"\", \"64\") )\n {\n Write-Host \"Registering $assembly on platform '$platform'\";\n $installUtil = \"$env:windir\\Microsoft.Net\\Framework${platform}\\v2.0.50727\\installUtil.exe\";\n if ( [System.IO.File]::Exists($installUtil) )\n {\n Set-Alias installUtil $installUtil;\n installUtil $assembly /LogToConsole=false /LogFile=;\n }\n }\n}\n\nfunction Remove-Snapin()\n{\n param(\n [string]$assembly = $null\n );\n \n foreach ($platform in (\"\", \"64\") )\n {\n Write-Host \"Unregistering $assembly on platform '$platform'\";\n $installUtil = \"$env:windir\\Microsoft.Net\\Framework${platform}\\v2.0.50727\\installUtil.exe\";\n if ( [System.IO.File]::Exists($installUtil) )\n {\n Set-Alias installUtil $installUtil;\n installUtil /u $assembly /LogToConsole=false /LogFile=;\n }\n }\n}\n\nif ( ($force) -or !(Is-SnapinRegistered) )\n{\n Install-Snapin -assembly iControlSnapin.dll;\n}\nelse\n{\n Write-Host \"iControlSnapIn already registered...\"\n} ","body@stripHtml({\"removeProcessingText\":true,\"removeSpoilerMarkup\":true,\"removeTocMarkup\":true,\"truncateLength\":-1})@stringLength":"1395","kudosSumWeight":0,"repliesCount":1,"readOnly":false,"images":{"__typename":"AssociatedImageConnection","edges":[],"totalCount":0,"pageInfo":{"__typename":"PageInfo","hasNextPage":false,"endCursor":null,"hasPreviousPage":false,"startCursor":null}},"videos":{"__typename":"VideoConnection","edges":[],"totalCount":0,"pageInfo":{"__typename":"PageInfo","hasNextPage":false,"endCursor":null,"hasPreviousPage":false,"startCursor":null}}},"Conversation:conversation:278140":{"__typename":"Conversation","id":"conversation:278140","topic":{"__typename":"TkbTopicMessage","uid":278140},"lastPostingActivityTime":"2017-08-04T02:02:11.000-07:00","solved":false},"TkbTopicMessage:message:278140":{"__typename":"TkbTopicMessage","subject":"PowerShell Pool Member Availability","conversation":{"__ref":"Conversation:conversation:278140"},"id":"message:278140","revisionNum":1,"uid":278140,"depth":0,"board":{"__ref":"Tkb:board:codeshare"},"author":{"__ref":"User:user:131293"},"teaser@stripHtml({\"removeProcessingText\":true,\"truncateLength\":-1})":"","introduction":"","metrics":{"__typename":"MessageMetrics","views":648},"postTime":"2015-03-09T11:36:21.000-07:00","lastPublishTime":"2015-03-09T11:36:21.000-07:00","body@stripHtml({\"removeProcessingText\":true,\"removeSpoilerMarkup\":true,\"removeTocMarkup\":true,\"truncateLength\":-1})":" Problem this snippet solves: This PowerShell script will query the status of the pool members for a specified poolname. How to use this snippet: PowerShellPoolMemberAvailability.ps1\n -BIGIP < bigip>\n -User < user>\n -Pass < pass>\n [-Pool < poolname>\n [-List]]\n Code : #----------------------------------------------------------------------------\n# The contents of this file are subject to the \"END USER LICENSE AGREEMENT \n# FOR F5 Software Development Kit for iControl\"; you may not use this file \n# except in compliance with the License. The License is included in the \n# iControl Software Development Kit.\n#\n# Software distributed under the License is distributed on an \"AS IS\"\n# basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See\n# the License for the specific language governing rights and limitations\n# under the License.\n#\n# The Original Code is iControl Code and related documentation\n# distributed by F5.\n#\n# The Initial Developer of the Original Code is F5 Networks,\n# Inc. Seattle, WA, USA. Portions created by F5 are Copyright (C) 1996-2010 \n# F5 Networks, Inc. All Rights Reserved. iControl (TM) is a registered \n# trademark of F5 Networks, Inc.\n#\n# Alternatively, the contents of this file may be used under the terms\n# of the GNU General Public License (the \"GPL\"), in which case the\n# provisions of GPL are applicable instead of those above. If you wish\n# to allow use of your version of this file only under the terms of the\n# GPL and not to allow others to use your version of this file under the\n# License, indicate your decision by deleting the provisions above and\n# replace them with the notice and other provisions required by the GPL.\n# If you do not delete the provisions above, a recipient may use your\n# version of this file under either the License or the GPL.\n#----------------------------------------------------------------------------\nparam(\n [string]$BIGIP = $null,\n [string]$User = $null,\n [string]$Pass = $null,\n [string]$Pool = $null,\n [switch]$List = $false\n);\nSet-PSDebug -strict;\n\n#-------------------------------------------------------------------------\nfunction Write-Usage()\n#\n# Print Usage information for this script\n#-------------------------------------------------------------------------\n{\n Write-Host \"Usage: $(Split-Path -Path $MyInvocation.ScriptName -Leaf) -BIGIP -User -Pass [-Pool [-List]]\";\n exit;\n}\n\n#-------------------------------------------------------------------------\nfunction Get-PoolList()\n#-------------------------------------------------------------------------\n{\n $pool_list = (Get-F5.iControl).LocalLBPool.get_list();\n Write-Host \"Available Pools:\";\n foreach ($pool in $pool_list)\n {\n Write-Host \" $pool\";\n }\n}\n\n#-------------------------------------------------------------------------\nfunction Get-PoolMemberAvailability()\n#-------------------------------------------------------------------------\n{\n param([string]$Pool);\n \n $avail_count = 0;\n $total_count = 0;\n \n if ( $Pool.Length -ne 0 )\n {\n $MemberObjectStatusAofA = (Get-F5.iControl).LocalLBPoolMember.get_object_status((, $Pool));\n # Only one pool, so let's access the members for first entry of returned array.\n $MemberObjectStatusA = $MemberObjectStatusAofA[0];\n foreach ($MemberObjectStatus in $MemberObjectStatusA)\n {\n $member = $MemberObjectStatus.member;\n $addr = $member.address;\n $port = $member.port;\n $Availability = $MemberObjectStatus.object_status.availability_status;\n $Enabled = $MemberObjectStatus.object_status.enabled_status;\n $Description = $MemberObjectStatus.object_status.status_description;\n \n $total_count++;\n if ( $Availability -eq \"AVAILABILITY_STATUS_GREEN\" )\n {\n $avail_count++;\n }\n \n if ($List)\n {\n Write-Host \"$Pool,${addr}:${port},$Availability,$Enabled,$Description\";\n }\n }\n if (!$List)\n {\n Write-Host \"$avail_count/$total_count\"\n }\n }\n \n}\n\n#-------------------------------------------------------------------------\nfunction Do-Initialize()\n#-------------------------------------------------------------------------\n{\n if ( (Get-PSSnapin | Where-Object { $_.Name -eq \"iControlSnapIn\"}) -eq $null )\n {\n Add-PSSnapIn iControlSnapIn\n }\n $success = Initialize-F5.iControl -HostName $BIGIP -Username $User -Password $Pass;\n \n return $success;\n}\n\n#-------------------------------------------------------------------------\n# Main Application Logic\n#-------------------------------------------------------------------------\nif ( ($BIGIP.Length -eq 0) -or ($User.Length -eq 0) -or ($Pass.Length -eq 0) )\n{\n Write-Usage;\n}\n\nif ( Do-Initialize )\n{\n if ( $Pool.Length -eq 0 )\n {\n Get-PoolList;\n }\n else\n {\n Get-PoolMemberAvailability -Pool $Pool;\n }\n} ","body@stripHtml({\"removeProcessingText\":true,\"removeSpoilerMarkup\":true,\"removeTocMarkup\":true,\"truncateLength\":-1})@stringLength":"4840","kudosSumWeight":0,"repliesCount":3,"readOnly":false,"images":{"__typename":"AssociatedImageConnection","edges":[],"totalCount":0,"pageInfo":{"__typename":"PageInfo","hasNextPage":false,"endCursor":null,"hasPreviousPage":false,"startCursor":null}},"videos":{"__typename":"VideoConnection","edges":[],"totalCount":0,"pageInfo":{"__typename":"PageInfo","hasNextPage":false,"endCursor":null,"hasPreviousPage":false,"startCursor":null}}},"Conversation:conversation:274113":{"__typename":"Conversation","id":"conversation:274113","topic":{"__typename":"TkbTopicMessage","uid":274113},"lastPostingActivityTime":"2016-10-17T02:46:31.000-07:00","solved":false},"User:user:15915":{"__typename":"User","uid":15915,"login":"pjhhaas_109824","registrationData":{"__typename":"RegistrationData","status":null},"deleted":false,"avatar":{"__typename":"UserAvatar","url":"https://community.f5.com/t5/s/zihoc95639/m_assets/avatars/default/avatar-10.svg?time=0"},"id":"user:15915"},"TkbTopicMessage:message:274113":{"__typename":"TkbTopicMessage","subject":"ASM Policy Report","conversation":{"__ref":"Conversation:conversation:274113"},"id":"message:274113","revisionNum":1,"uid":274113,"depth":0,"board":{"__ref":"Tkb:board:codeshare"},"author":{"__ref":"User:user:15915"},"teaser@stripHtml({\"removeProcessingText\":true,\"truncateLength\":-1})":"","introduction":"","metrics":{"__typename":"MessageMetrics","views":540},"postTime":"2015-03-07T14:14:18.000-08:00","lastPublishTime":"2015-03-07T14:14:18.000-08:00","body@stripHtml({\"removeProcessingText\":true,\"removeSpoilerMarkup\":true,\"removeTocMarkup\":true,\"truncateLength\":-1})":" Problem this snippet solves: PowerShell script using F5 iControls that produces an email report of all ASM policies and what websites they protect. If a policy is enabled at the HTTP Class, it will be presented via a green table. Disabled policies will be presented via a red table. Code : # ==============================================================================================\n# \n# COMMENT: used on our 1600 running v11 to email out a weekly report of websites protected by the ASM\n#\n# Created from Ps Config Archiving @https://devcentral.f5.com/s/wiki/iControl.PsConfigArchiving.ashx\n# \n# ==============================================================================================\n# Customize the following six variables\n$g_file = \"C:\\Folder\\File.txt\" # ref: http://technet.microsoft.com/en-us/magazine/ff714574.aspx\n$g_uid = \"F5User\" \n$g_bigip = \"F5.domain.com\" \n\n$g_email_to = \"recipient@domain.com\" \n$g_email_from = \"ASM Policy Report \"\n$g_email_smtp = \"smtp.domain.com\"\n\nSet-PSDebug -strict;\n\nFunction Get-ASMPolicyList(){\n $ASMPolicyList = (Get-F5.iControl).ASMWebApplication.get_list() | Select-String \"/Common/*\" | %{$_.line.substring(8)} | Sort-Object\n Return $ASMPolicyList \n} # End Get-ASMPolicyList Function\n\nFunction Get-LogonPwd(){\n$a1 = Get-Content -Path $g_file | ConvertTo-SecureString\n$b1 = New-Object system.management.automation.pscredential($g_uid,$a1)\n$ReturnValue = $b1.GetNetworkCredential().password\nReturn $ReturnValue\n} # End Get-Logon Function\n\nfunction Get-PolicyState($PolicyName){\n $FullPolicyName = \"/Common/$PolicyName\"\n $PolicyState = ((Get-F5.iControl).ASMWebApplication).get_enabled_state($FullPolicyName)\n Return $PolicyState\n} # End Get-PolicyState Function\n\nFunction Do-Initialize($pwd){\nif ( (Get-PSSnapin | Where-Object { $_.Name -eq \"iControlSnapIn\"}) -eq $null ){\n Add-PSSnapIn iControlSnapIn\n }\n $success = Initialize-F5.iControl -HostName $g_bigip -Username $g_uid -Password $PWD;\n return $success;\n} # End Do-Initialize Function\n\nFunction Get-PolicyPatterns($PolicyName){\n $PolicyPatterns = (Get-F5.iControl).LocalLBProfileHttpClass.get_host_match_pattern($PolicyName) | %{$_.values} | Format-Table Pattern -HideTableHeaders | Out-String \n Return $PolicyPatterns.trim()\n} # End Get-PolicyPatterns Function\n\nFunction Get-EmailSendFunc($SUBJECT,$BODY){\nSend-MailMessage -SmtpServer $g_email_smtp -To $g_email_to -From $g_email_from -Subject $SUBJECT -Body $BODY -BodyAsHtml\n} # End Get-EmailFunc Function\n\nFunction Get-TableFormat($heading,$contents,$state){\n $contentsHTML = \"\"\n if($contents.length -gt 1){\n $contents = $contents.split(\" \") | Where-Object {$_ -ne \"\"} | %{$_.trim()}\n foreach($item in $contents){\n $contentsHTML += \"$item\"\n }\n }\n if($state -eq $true){\n [string]$TableFormatReturn = \" $heading $contentsHTML \"\n }\n else {\n [string]$TableFormatReturn = \" $heading $contentsHTML \"\n }\n Return $TableFormatReturn\n} # End Get-TableFormat Function\n\n#-------------------------------------------------------------------------\n# Main Application Logic\n#-------------------------------------------------------------------------\n$g_pwd = Get-LogonPwd\n\nif(Do-Initialize -pwd $g_pwd){\n\n[string]$MainBody = \"\"\n$MainBody = \" \"\n$MainBody += \".table1{border-width: 2px;border-style: solid;border-color: black;border-collapse: collapse;}\"\n$MainBody += \".table1 TH{border-width:2px;padding:4px;border-style:solid;border-color:black;background-color:green;text-align:left;font-size:14px;color:white}\"\n$MainBody += \".table1 TD{border-width:2px;border-style:solid;border-color:black;font-size:10px}\"\n\n$MainBody += \".table2{border-width: 2px;border-style: solid;border-color: black;border-collapse: collapse;}\"\n$MainBody += \".table2 TH{border-width:2px;padding:4px;border-style:solid;border-color:black;background-color:red;text-align:left;font-size:14px;color:white}\"\n$MainBody += \".table2 TD{border-width:2px;border-style:solid;border-color:black;font-size:10px}\"\n$MainBody += \" \"\n\n$MainBodyFooter = \" Red indicates disabled policies while green indicates enabled policies. \"\n\n $MainASMPolicyList = Get-ASMPolicyList\n foreach($MainASMPolicy in $MainASMPolicyList){\n $MainPolicyState = Get-PolicyState -PolicyName $MainASMPolicy\n $MainPolicyPattern = Get-PolicyPatterns -PolicyName $MainASMPolicy\n $MainPolicyPatternHTML = Get-TableFormat -heading $MainASMPolicy -contents $MainPolicyPattern -state $MainPolicyState\n$MainBody = $MainBody + $MainPolicyPatternHTML\n }\n $MainBody += $MainBodyFooter\n $emailDate = (get-date).tostring(\"MMMM dd\")\n Get-EmailSendFunc -SUBJECT \"ASM Policy Report - $emailDate\" -BODY $MainBody\n}\nelse {\n Get-EmailFunc -SUBJECT \"FAILED: Do-Initialize\" -BODY \"ASM Policy Report\"\n}\nExit\nExit ","body@stripHtml({\"removeProcessingText\":true,\"removeSpoilerMarkup\":true,\"removeTocMarkup\":true,\"truncateLength\":-1})@stringLength":"4810","kudosSumWeight":0,"repliesCount":1,"readOnly":false,"images":{"__typename":"AssociatedImageConnection","edges":[],"totalCount":0,"pageInfo":{"__typename":"PageInfo","hasNextPage":false,"endCursor":null,"hasPreviousPage":false,"startCursor":null}},"videos":{"__typename":"VideoConnection","edges":[],"totalCount":0,"pageInfo":{"__typename":"PageInfo","hasNextPage":false,"endCursor":null,"hasPreviousPage":false,"startCursor":null}}},"Conversation:conversation:278292":{"__typename":"Conversation","id":"conversation:278292","topic":{"__typename":"TkbTopicMessage","uid":278292},"lastPostingActivityTime":"2015-03-09T12:08:12.000-07:00","solved":false},"TkbTopicMessage:message:278292":{"__typename":"TkbTopicMessage","subject":"Ps Self Ip Port Lockdown","conversation":{"__ref":"Conversation:conversation:278292"},"id":"message:278292","revisionNum":1,"uid":278292,"depth":0,"board":{"__ref":"Tkb:board:codeshare"},"author":{"__ref":"User:user:131293"},"teaser@stripHtml({\"removeProcessingText\":true,\"truncateLength\":-1})":"","introduction":"","metrics":{"__typename":"MessageMetrics","views":471},"postTime":"2015-03-09T12:08:12.000-07:00","lastPublishTime":"2015-03-09T12:08:12.000-07:00","body@stripHtml({\"removeProcessingText\":true,\"removeSpoilerMarkup\":true,\"removeTocMarkup\":true,\"truncateLength\":-1})":" Problem this snippet solves: A Self IP address is an IP address that you associate with a VLAN, to access hosts in that VLAN. By virtue of its netmask, a self IP address represents an address space, that is, a range of IP addresses spanning the hosts in the VLAN, rather than a single host address. You can associate self IP addresses not only with VLANs, but also with VLAN group. Self IP addresses serve two purposes. First, when sending a message to a destination server, the BIG-IP system uses the self IP addresses of its VLANs to determine the specific VLAN in which a destination server resides. Second, a self IP address serves as the default route for each destination server in the corresponding VLAN. In this case, the self IP address of a VLAN appears as the destination IP address in the packet header when the server sends a response to the BIG-IP system. \n Each self IP address has a feature known as port lockdown. Port lockdown is a security feature that allows you to specify particular UDP and TCP protocols and services from which the self IP address can accept traffic. This application illustrates how how to use the iControl API to manage Port Lockdown Access Lists. Code : #----------------------------------------------------------------------------\n# The contents of this file are subject to the \"END USER LICENSE AGREEMENT FOR F5\n# Software Development Kit for iControl\"; you may not use this file except in\n# compliance with the License. The License is included in the iControl\n# Software Development Kit.\n#\n# Software distributed under the License is distributed on an \"AS IS\"\n# basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See\n# the License for the specific language governing rights and limitations\n# under the License.\n#\n# The Original Code is iControl Code and related documentation\n# distributed by F5.\n#\n# The Initial Developer of the Original Code is F5 Networks,\n# Inc. Seattle, WA, USA. Portions created by F5 are Copyright (C) 1996-2009 F5 Networks,\n# Inc. All Rights Reserved. iControl (TM) is a registered trademark of F5 Networks, Inc.\n#\n# Alternatively, the contents of this file may be used under the terms\n# of the GNU General Public License (the \"GPL\"), in which case the\n# provisions of GPL are applicable instead of those above. If you wish\n# to allow use of your version of this file only under the terms of the\n# GPL and not to allow others to use your version of this file under the\n# License, indicate your decision by deleting the provisions above and\n# replace them with the notice and other provisions required by the GPL.\n# If you do not delete the provisions above, a recipient may use your\n# version of this file under either the License or the GPL.\n#----------------------------------------------------------------------------\nparam (\n $g_bigip = $null,\n $g_uid = $null,\n $g_pwd = $null,\n $g_cmd = $null,\n $g_selfip = $null,\n $g_arg1 = $null,\n $g_arg2 = $null,\n $g_arg3 = $null,\n $g_arg4 = $null\n);\n\nSet-PSDebug -strict;\n\n#-------------------------------------------------------------------------\n# function Write-Usage\n#-------------------------------------------------------------------------\nfunction Write-Usage()\n{\n Write-Host @\"\nUsage: SelfIPPortLockdown.ps1 host uid pwd [options]\n options\n -------\n list\n - Get a list of Self IPs\n getaccesslist \n - Gets the access lists for the specified self IP.\n addaccesslist \n - Adds the list of access methods, with optional\n protocols/ports, for the specified self IP.\n deleteaccesslist \n - Deletes protocols and ports from the allow access list\n for the specified self IP.\n getdefaccesslist\n - Gets the default protocol/port access list on which\n access is allowed.\n adddefaccesslist \n - Adds to the default list of protocols/ports\n on which access is allowed.\n removedefaccesslist \n - Remove protocols and ports from the default list\n of protocols/ports on which access is allowed.\n\"@;\n exit;\n}\n\n#-------------------------------------------------------------------------\n# Get-SelfIPList\n#-------------------------------------------------------------------------\nfunction Get-SelfIPList()\n{\n $ip_list = (Get-F5.iControl).NetworkingSelfIP.get_list();\n Write-Host \"Available SelfIPs:\";\n foreach ($ip in $ip_list)\n {\n Write-Host \" $ip\";\n }\n}\n\n#-------------------------------------------------------------------------\n# function Get-AccessList\n#-------------------------------------------------------------------------\nfunction Get-AccessList()\n{\n param([string]$selfip = $null);\n $pld = (Get-F5.iControl).NetworkingSelfIPPortLockdown;\n $SelfIPAccessA = $pld.get_allow_access_list( (,$selfip) );\n foreach ($SelfIPAccess in $SelfIPAccessA)\n {\n Write-Host \"--------------------------------\";\n Write-Host \"Self IP : \" $SelfIPAccess.self_ip;\nWrite-Host \"Mode : \" $SelfIPAccess.mode;\nWrite-Host \"Protocol Ports : \";\n$pA = $SelfIPAccess.protocol_ports;\nforeach ($ProtocolPort in $pA)\n{\nWrite-Host \" Protocol : \" $ProtocolPort.protocol;\nWrite-Host \" Port : \" $ProtocolPort.port;\n}\n }\n}\n\n#-------------------------------------------------------------------------\n# function Add-AccessList\n#-------------------------------------------------------------------------\nfunction Add-AccessList()\n{\n param(\n [string]$selfip = $null, \n[string]$mode = \"ALLOW_MODE_NONE\", \n[string]$protocol = \"PROTOCOL_ANY\", \n[int]$port = 0);\n $pld = (Get-F5.iControl).NetworkingSelfIPPortLockdown;\n $SelfIPAccess = New-Object -TypeName iControl.NetworkingSelfIPPortLockdownSelfIPAccess;\n $SelfIPAccess.self_ip = $selfip;\n $SelfIPAccess.mode = $mode;\n $SelfIPAccess.protocol_ports = New-Object -TypeName iControl.NetworkingSelfIPPortLockdownProtocolPort;\n $(${SelfIPAccess}.protocol_ports).protocol = $protocol;\n $(${SelfIPAccess}.protocol_ports).port = $port;\n \n $pld.add_allow_access_list( (,$SelfIPAccess) );\n Get-AccessList $selfip;\n}\n\n#-------------------------------------------------------------------------\n# function Delete-AccessList\n#-------------------------------------------------------------------------\nfunction Delete-AccessList()\n{\n param(\n [string]$selfip = $null, \n[string]$mode = \"ALLOW_MODE_NONE\", \n[string]$protocol = \"PROTOCOL_ANY\", \n[int]$port = 0);\n $pld = (Get-F5.iControl).NetworkingSelfIPPortLockdown;\n $SelfIPAccess = New-Object -TypeName iControl.NetworkingSelfIPPortLockdownSelfIPAccess;\n $SelfIPAccess.self_ip = $selfip;\n $SelfIPAccess.mode = $mode;\n $SelfIPAccess.protocol_ports = New-Object -TypeName iControl.NetworkingSelfIPPortLockdownProtocolPort;\n $(${SelfIPAccess}.protocol_ports).protocol = $protocol;\n $(${SelfIPAccess}.protocol_ports).port = $port;\n \n $pld.delete_allow_access_list( (,$SelfIPAccess) );\n Get-AccessList $selfip;\n}\n\n#-------------------------------------------------------------------------\n# function Get-DefaultAccessList\n#-------------------------------------------------------------------------\nfunction Get-DefaultAccessList()\n{\n $pld = (Get-F5.iControl).NetworkingSelfIPPortLockdown;\n $ProtocolPortA = $pld.get_default_protocol_port_access_list();\n if ( $ProtocolPortA.Length )\n {\nforeach ($ProtocolPort in $ProtocolPortA)\n{\nWrite-Host \"--------------------------------\";\nWrite-Host \"Protocol : \" $ProtocolPort.protocol;\nWrite-Host \" Port : \" $ProtocolPort.port;\n}\n }\n else\n {\n Write-Host \"No default Protocol Port Access Lists defined\";\n }\n}\n\n#-------------------------------------------------------------------------\n# function Add-DefaultAccessList\n#-------------------------------------------------------------------------\nfunction Add-DefaultAccessList()\n{\n param([string]$protocol = \"PROTOCOL_ANY\", [int]$port = 0);\n $pld = (Get-F5.iControl).NetworkingSelfIPPortLockdown;\n $protocol_port = New-Object -TypeName iControl.NetworkingSelfIPPortLockdownProtocolPort;\n $protocol_port.protocol = $protocol;\n $protocol_port.port = $port;\n $pld.add_default_protocol_port_access_list( (,$protocol_port) );\n Get-DefaultAccessList;\n}\n\n#-------------------------------------------------------------------------\n# function Remove-DefaultAccessList\n#-------------------------------------------------------------------------\nfunction Remove-DefaultAccessList()\n{\n param([string]$protocol = \"PROTOCOL_ANY\", [int]$port = 0);\n $pld = (Get-F5.iControl).NetworkingSelfIPPortLockdown;\n $protocol_port = New-Object -TypeName iControl.NetworkingSelfIPPortLockdownProtocolPort;\n $protocol_port.protocol = $protocol;\n $protocol_port.port = $port;\n $pld.remove_default_protocol_port_access_list( (,$protocol_port) );\n Get-DefaultAccessList;\n}\n\n#-------------------------------------------------------------------------\n# Do-Initialize\n#-------------------------------------------------------------------------\nfunction Do-Initialize()\n{\n if ( (Get-PSSnapin | Where-Object { $_.Name -eq \"iControlSnapIn\"}) -eq $null )\n {\n Add-PSSnapIn iControlSnapIn\n }\n $success = Initialize-F5.iControl -HostName $g_bigip -Username $g_uid -Password $g_pwd;\n \n return $success;\n}\n\n#-------------------------------------------------------------------------\n# Main Application Logic\n#-------------------------------------------------------------------------\nif ( ($g_bigip -eq $null) -or ($g_uid -eq $null) -or ($g_pwd -eq $null) )\n{\n Write-Usage;\n}\n\nif ( Do-Initialize )\n{\n switch ($g_cmd)\n {\n \"\" {\n Get-SelfIPList;\n }\n \"getaccesslist\" {\n Get-AccessList $g_selfip;\n }\n \"addaccesslist\" {\n Add-AccessList $g_selfip $g_arg1 $g_arg2 $g_arg3 $g_arg4;\n }\n \"deleteaccesslist\" {\n Delete-AccessList $g_selfip;\n }\n \"getdefaccesslist\" {\n Get-DefaultAccessList $g_selfip;\n }\n \"adddefaccesslist\" {\n Add-DefaultAccessList $g_selfip $g_arg1 $g_arg2;\n }\n \"removedefaccesslist\" {\n Remove-DefaultAccessList $g_selfip $g_arg1 $g_arg2;\n }\n default {\n Write-Usage;\n }\n \n }\n}\nelse\n{\n Write-Error \"ERROR: iControl subsystem not initialized\"\n} ","body@stripHtml({\"removeProcessingText\":true,\"removeSpoilerMarkup\":true,\"removeTocMarkup\":true,\"truncateLength\":-1})@stringLength":"10058","kudosSumWeight":0,"repliesCount":0,"readOnly":false,"images":{"__typename":"AssociatedImageConnection","edges":[],"totalCount":0,"pageInfo":{"__typename":"PageInfo","hasNextPage":false,"endCursor":null,"hasPreviousPage":false,"startCursor":null}},"videos":{"__typename":"VideoConnection","edges":[],"totalCount":0,"pageInfo":{"__typename":"PageInfo","hasNextPage":false,"endCursor":null,"hasPreviousPage":false,"startCursor":null}}},"Conversation:conversation:278318":{"__typename":"Conversation","id":"conversation:278318","topic":{"__typename":"TkbTopicMessage","uid":278318},"lastPostingActivityTime":"2015-03-09T12:16:57.000-07:00","solved":false},"TkbTopicMessage:message:278318":{"__typename":"TkbTopicMessage","subject":"Ps Twitter Api","conversation":{"__ref":"Conversation:conversation:278318"},"id":"message:278318","revisionNum":1,"uid":278318,"depth":0,"board":{"__ref":"Tkb:board:codeshare"},"author":{"__ref":"User:user:131293"},"teaser@stripHtml({\"removeProcessingText\":true,\"truncateLength\":-1})":"","introduction":"","metrics":{"__typename":"MessageMetrics","views":408},"postTime":"2015-03-09T12:16:57.000-07:00","lastPublishTime":"2015-03-09T12:16:57.000-07:00","body@stripHtml({\"removeProcessingText\":true,\"removeSpoilerMarkup\":true,\"removeTocMarkup\":true,\"truncateLength\":-1})":" Problem this snippet solves: Here is a set of PowerShell functions that give access to the Twitter web based APIs allowing you to interact with the Twitter service from within Windows PowerShell. How to use this snippet: Twitter Functions \n Internal Helpers \n function Shrink-Url()\nfunction Shrink-Links()\nfunction Set-TwitterCredentials()\nfunction Get-TwitterCredentials()\nfunction Execute-HTTPGetCommand()\nfunction Execute-HTTPPostCommand()\nfunction Process-TwitterStatus()\n \n Status \n function Get-TwitterPublicTimeline()\nfunction Get-TwitterFriendsTimeline()\nfunction Get-TwitterUserTimeline()\nfunction Get-TwitterStatus()\nfunction Set-TwitterStatus()\nfunction Get-TwitterReplies()\nfunction Destroy-TwitterStatus()\n \n User \n function Process-TwitterUsers()\nfunction Get-TwitterFriends()\nfunction Get-TwitterFollowers()\nfunction Get-TwitterUser()\n \n Direct Messages \n function Process-TwitterDirectMessages()\nfunction Get-TwitterDirectMessages()\nfunction Get-TwitterSentDirectMessages()\nfunction New-TwitterDirectMessage()\nfunction Destroy-TwitterDirectMessage()\n \n Friendship \n function Get-TwitterFriendshipExists\nfunction Process-Ids()\nfunction Get-TwitterSocialGraphFriendIds()\nfunction Get-TwitterSocialGraphFollowerIds()\n \n Account \n function Is-ValidHexColor()\nfunction Verify-TwitterCredentials()\nfunction End-TwitterSession()\nfunction Set-TwitterDeliveryDevice()\nfunction Set-TwitterProfileColors()\nfunction Set-TwitterProfileImage()\nfunction Set-TwitterProfileBackgroundImage()\nfunction Get-TwitterRateLimitStatus()\nfunction Set-TwitterProfile()\n \n Favorites \n function Get-TwitterFavorites()\nfunction Create-TwitterFavorite()\nfunction Destroy-TwitterFavorite()\n \n Notification \n function Follow-TwitterUser()\nfunction Leave-TwitterUser()\n \n Block \n function Create-TwitterBlock()\nfunction Destroy-TwitterBlock()\n \n Help \n function Get-TwitterHelpTest()\nfunction Get-TwitterDowntimeSchedule()\n \n 3rd Party Services \n function Get-TwitterCounterStats()\nfunction Get-GroupMemberList()\n Code : #----------------------------------------------------------------------------\n# The contents of this file are subject to the \"END USER LICENSE AGREEMENT \n# FOR F5 Software Development Kit for iControl\"; you may not use this file \n# except in compliance with the License. The License is included in the \n# iControl Software Development Kit.\n#\n# Software distributed under the License is distributed on an \"AS IS\"\n# basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See\n# the License for the specific language governing rights and limitations\n# under the License.\n#\n# The Original Code is iControl Code and related documentation\n# distributed by F5.\n#\n# The Initial Developer of the Original Code is F5 Networks,\n# Inc. Seattle, WA, USA. Portions created by F5 are Copyright (C) 1996-2008 \n# F5 Networks, Inc. All Rights Reserved. iControl (TM) is a registered \n# trademark of F5 Networks, Inc.\n#\n# Alternatively, the contents of this file may be used under the terms\n# of the GNU General Public License (the \"GPL\"), in which case the\n# provisions of GPL are applicable instead of those above. If you wish\n# to allow use of your version of this file only under the terms of the\n# GPL and not to allow others to use your version of this file under the\n# License, indicate your decision by deleting the provisions above and\n# replace them with the notice and other provisions required by the GPL.\n# If you do not delete the provisions above, a recipient may use your\n# version of this file under either the License or the GPL.\n#----------------------------------------------------------------------------\n[void] [Reflection.Assembly]::LoadWithPartialName(\"System.Web\") \n[void] [Reflection.Assembly]::LoadWithPartialName(\"System.Text\") \n[System.Net.ServicePointManager]::Expect100Continue = $false;\n\n$script:g_creds = $null;\n#============================================================================\n# Shared Functions\n#============================================================================\n#----------------------------------------------------------------------------\n# function Shrink-Url\n#----------------------------------------------------------------------------\nfunction Shrink-Url()\n{\n param([string]$longurl = $null, [string]$provider = \"tinyurl\");\n $shorturl = $null;\n if ( $longurl )\n {\n switch ($provider.ToLower())\n {\n \"is.gd\" {\n $shorturl = Execute-HTTPGetCommand \"http://is.gd/api.php?longurl=$longurl\";\n }\n \"tinyurl\" {\n $shorturl = Execute-HTTPGetCommand \"http://tinyurl.com/api-create.php?url=$longurl\";\n }\n \"snipurl\" {\n $shorturl = Execute-HTTPGetCommand \"http://snipurl.com/site/snip?r=simple&link=$longurl\";\n }\n default {\n $shorturl = Execute-HTTPGetCommand \"http://tinyurl.com/api-create.php?url=$longurl\";\n }\n }\n }\n $shorturl;\n}\n\n#----------------------------------------------------------------------------\n# function Shrink-Links\n#----------------------------------------------------------------------------\nfunction Shrink-Links()\n{\n param([string]$text = $null, [string]$provider = \"tinyurl\");\n\n [regex]$regex=\"(http|ftp|https):\\/\\/[\\w\\-_]+(\\.[\\w\\-_]+)+([\\w\\-\\.,@?^=%&:/~\\+#]*[\\w\\-\\@?^=%&/~\\+#])?\"\n\n if ($text -match $regex)\n {\n $link = $matches[0]\n }\n \n #if an embedded url was found, convert it to a shortened link\n if ($link)\n {\n $shrunklink = Shrink-Url $link\n $text = $text.Replace($link, $shrunklink)\n }\n $text;\n}\n\n#----------------------------------------------------------------------------\n# function Set-TwitterCredentials\n#----------------------------------------------------------------------------\nfunction Set-TwitterCredentials()\n{\n param([string]$user = $null, [string]$pass = $null);\n if ( $user -and $pass )\n {\n $script:g_creds = New-Object System.Net.NetworkCredential -argumentList ($user, $pass);\n }\n else\n {\n $creds = Get-TwitterCredentials;\n }\n}\n\n#----------------------------------------------------------------------------\n# function Get-TwitterCredentials\n#----------------------------------------------------------------------------\nfunction Get-TwitterCredentials()\n{\n if ( $null -eq $g_creds )\n {\n trap { Write-Error \"ERROR: You must enter your Twitter credentials for PoshTweet to work!\"; continue; }\n $c = Get-Credential\n if ( $c )\n {\n $user = $c.GetNetworkCredential().Username;\n $pass = $c.GetNetworkCredential().Password;\n $script:g_creds = New-Object System.Net.NetworkCredential -argumentList ($user, $pass);\n }\n }\n $script:g_creds;\n}\n\n#----------------------------------------------------------------------------\n# function Execute-HTTPGetCommand\n#----------------------------------------------------------------------------\nfunction Execute-HTTPGetCommand()\n{\n param([string] $url = $null);\n if ( $url )\n {\n [System.Net.WebClient]$webClient = New-Object System.Net.WebClient\n if ( $url.ToLower().Contains(\"twitter.com\") )\n {\n $webClient.Credentials = Get-TwitterCredentials\n }\n \n [System.IO.Stream]$stream = $webClient.OpenRead($url);\n [System.IO.StreamReader]$sr = New-Object System.IO.StreamReader -argumentList $stream;\n [string]$results = $sr.ReadToEnd();\n $results;\n }\n}\n\n#----------------------------------------------------------------------------\n# function Execute-HTTPPostCommand\n#----------------------------------------------------------------------------\nfunction Execute-HTTPPostCommand()\n{\n param([string] $url = $null, [string] $data = $null);\n\n if ( $url -and $data )\n {\n [System.Net.WebRequest]$webRequest = [System.Net.WebRequest]::Create($url);\n $webRequest.ServicePoint.Expect100Continue = $false;\n if ( $url.ToLower().Contains(\"twitter.com\") )\n {\n $webRequest.Credentials = Get-TwitterCredentials\n $webRequest.PreAuthenticate = $true;\n }\n $webRequest.ContentType = \"application/x-www-form-urlencoded\";\n $webRequest.Method = \"POST\";\n $webRequest.Headers.Add(\"X-Twitter-Client\", \"PoshTweet\");\n $webRequest.Headers.Add(\"X-Twitter-Version\", \"1.0\");\n $webRequest.Headers.Add(\"X-Twitter-URL\", \"http://devcentral.f5.com/s/poshtweet\");\n \n [byte[]]$bytes = [System.Text.Encoding]::UTF8.GetBytes($data);\n $webRequest.ContentLength = $bytes.Length;\n [System.IO.Stream]$reqStream = $webRequest.GetRequestStream();\n $reqStream.Write($bytes, 0, $bytes.Length);\n $reqStream.Flush();\n [System.Net.WebResponse]$resp = $webRequest.GetResponse();\n $rs = $resp.GetResponseStream();\n [System.IO.StreamReader]$sr = New-Object System.IO.StreamReader -argumentList $rs;\n [string]$results = $sr.ReadToEnd();\n $results;\n }\n}\n\n#============================================================================\n# Status Functions\n#============================================================================\n#----------------------------------------------------------------------------\n# Helper functions\n#----------------------------------------------------------------------------\nfunction Process-TwitterStatus()\n{\n param([string]$sxml = $null, [bool]$raw = $false);\n if ( $sxml )\n {\n if ( $raw )\n {\n $sxml;\n }\n else\n {\n [xml]$xml = $sxml;\n if ( $xml.statuses.status )\n {\n $stats = $xml.statuses.status;\n }\n elseif ($xml.status )\n {\n $stats = $xml.status;\n }\n $stats | Foreach-Object -process {\n $info = \"by \" + $_.user.screen_name + \", \" + $_.created_at;\n if ( $_.source ) { $info = $info + \" via \" + $_.source; }\n if ( $_.in_reply_to_screen_name ) { $info = $info + \" in reply to \" + $_.in_reply_to_screen_name; }\n \"-------------------------\";\n $_.text;\n $info;\n };\n \"-------------------------\";\n }\n }\n}\n\n#----------------------------------------------------------------------------\n# public_timeline\n#----------------------------------------------------------------------------\nfunction Get-TwitterPublicTimeline()\n{\n param([bool]$raw = $false);\n $results = Execute-HTTPGetCommand \"http://twitter.com/statuses/public_timeline.xml\";\n Process-TwitterStatus $results $raw;\n}\n\n#----------------------------------------------------------------------------\n# friends_timeline\n#----------------------------------------------------------------------------\nfunction Get-TwitterFriendsTimeline()\n{\n param (\n [string]$since = $null, \n [int]$since_id = $null,\n [int]$count = $null,\n [int]$page = $null,\n [bool]$raw = $false\n );\n if ( $since )\n {\n $args = \"?since=$since\";\n }\n if ( $since_id )\n {\n if ( $args ) { $args = \"${args}&\" } else { $args = \"?\" }\n $args = \"${args}since_id=$since_id\";\n }\n if ( $count )\n {\n if ( $args ) { $args = \"${args}&\" } else { $args = \"?\" }\n $args = \"${args}count=$count\";\n }\n if ( $page )\n {\n if ( $args ) { $args = \"${args}&\" } else { $args = \"?\" }\n $args = \"${args}page=$page\";\n }\n \n Write-Host \"Requesting URI: http://twitter.com/statuses/friends_timeline.xml${args}\";\n $results = Execute-HTTPGetCommand \"http://twitter.com/statuses/friends_timeline.xml${args}\";\n Process-TwitterStatus $results $raw\n}\n\n#----------------------------------------------------------------------------\n#user_timeline\n#----------------------------------------------------------------------------\nfunction Get-TwitterUserTimeline()\n{\n param([string]$username = $null, [bool]$raw = $false);\n if ( $username )\n {\n $username = \"/$username\";\n }\n $results = Execute-HTTPGetCommand \"http://twitter.com/statuses/user_timeline$username.xml\";\n Process-TwitterStatus $results $raw\n}\n\n#----------------------------------------------------------------------------\n# show\n#----------------------------------------------------------------------------\nfunction Get-TwitterStatus()\n{\n param([string]$id, [bool]$raw = $false);\n if ( $id )\n {\n $results = Execute-HTTPGetCommand \"http://twitter.com/statuses/show/\" + $id + \".xml\";\n Process-TwitterStatus $results $raw;\n }\n}\n\n#----------------------------------------------------------------------------\n# update\n#----------------------------------------------------------------------------\nfunction Set-TwitterStatus()\n{\n param([string]$status, [int]$in_reply_to_status_id = $null, [bool]$raw = $false);\n $encstatus = [System.Web.HttpUtility]::UrlEncode(\"$status\");\n\n $args = \"status=$encstatus\";\n if ( $in_reply_to_status_id )\n {\n $args += \"&in_reply_to_status_id=${in_reply_to_status_id}\";\n }\n $results = Execute-HTTPPostCommand \"http://twitter.com/statuses/update.xml\" $args;\n Process-TwitterStatus $results $raw;\n}\n\n#----------------------------------------------------------------------------\n# replies\n#----------------------------------------------------------------------------\nfunction Get-TwitterReplies()\n{\n param([bool]$raw = $false);\n $results = Execute-HTTPGetCommand \"http://twitter.com/statuses/replies.xml\";\n Process-TwitterStatus $results $raw;\n}\n\n#----------------------------------------------------------------------------\n# destroy\n#----------------------------------------------------------------------------\nfunction Destroy-TwitterStatus()\n{\n param([string]$id = $null);\n if ( $id )\n {\n Execute-HTTPPostCommand \"http://twitter.com/statuses/destroy/$id.xml\", \"id=$id\";\n }\n}\n\n#============================================================================\n# User Functions\n#============================================================================\n#----------------------------------------------------------------------------\n# Helper functions\n#----------------------------------------------------------------------------\nfunction Process-TwitterUsers()\n{\n param([string]$sxml = $null, [bool]$raw = $false);\n if ( $sxml )\n {\n if ( $raw )\n {\n $sxml;\n }\n else\n {\n [xml]$xml = $sxml;\n if ( $xml.users.user )\n {\n $user = $xml.users.user;\n }\n elseif ($xml.user )\n {\n $user = $xml.user;\n }\n $user | Foreach-Object -process {\n $id = $_.id;\n $screen_name = $_.screen_name;\n $name = $_.name;\n $desc = $_.description;\n $url = $_.url;\n $followers_count = $_.followers_count;\n $last_status = $_.status.text;\n \n \"-------------------------\";\n \"$screen_name / $name (# $id , $followers_count followers) / $url\";\n \"Bio: $desc\";\n \"Tweet: $last_status\";\n };\n \"-------------------------\";\n }\n }\n}\n\n#----------------------------------------------------------------------------\n# friends\n#----------------------------------------------------------------------------\nfunction Get-TwitterFriends()\n{\n param([string]$id_or_screenname, [string]$page = $null, [bool]$raw = $false);\n if ( $id_or_screenname )\n {\n $id_or_screenname = \"/$id_or_screenname\";\n }\n if ( $page )\n {\n $page = \"?page=$page\";\n }\n Write-Host \"Requesting: http://twitter.com/statuses/friends$id_or_screenname.xml$page\";\n $results = Execute-HTTPGetCommand \"http://twitter.com/statuses/friends$id_or_screenname.xml$page\";\n Process-TwitterUsers $results $raw;\n}\n\n#----------------------------------------------------------------------------\n# followers\n#----------------------------------------------------------------------------\nfunction Get-TwitterFollowers()\n{\n param([string]$id_or_screenname, [string]$page = $null, [bool]$raw = $false);\n if ( $id_or_screenname )\n {\n $id_or_screenname = \"/$id_or_screenname\";\n }\n if ( $page )\n {\n $page = \"?page=$page\";\n }\n Write-Host \"Requesting: http://twitter.com/statuses/followers$id_or_screenname.xml$page\";\n $results = Execute-HTTPGetCommand \"http://twitter.com/statuses/followers$id_or_screenname.xml$page\";\n Process-TwitterUsers $results $raw;\n}\n\n#----------------------------------------------------------------------------\n# show\n#----------------------------------------------------------------------------\nfunction Get-TwitterUser()\n{\n param([string]$id = $null, [string]$email = $null, [bool]$raw = $false);\n $url = $null;\n if ( $id )\n {\n $url = \"http://twitter.com/users/show/$id.xml\";\n }\n elseif ( $email )\n {\n $url = \"http://twitter.com/users/show.xml?email=$email\";\n }\n if ( $url )\n {\n $results = Execute-HTTPGetCommand $url;\n PRocess-TwitterUsers $results $raw;\n }\n}\n\n#============================================================================\n# Direct Message Functions\n#============================================================================\n#----------------------------------------------------------------------------\n# Helper functions\n#----------------------------------------------------------------------------\nfunction Process-TwitterDirectMessages()\n{\n param([string]$sxml = $null, [bool]$raw = $false);\n if ( $sxml )\n {\n if ( $raw )\n {\n $sxml;\n }\n else\n {\n [xml]$xml = $sxml;\n if ( $xml.{direct-messages}.direct_message )\n {\n $dm = $xml.{direct-messages}.direct_message;\n }\n elseif ($xml.direct_message )\n {\n $dm = $xml.direct_message;\n }\n $dm | Foreach-Object -process {\n $id = $_.id;\n $text = $_.text;\n $sender_screen_name = $_.sender_screen_name;\n $name = $_.sender.name;\n $created_at = $_.created_at;\n \"-------------------------\";\n \"(DM #$id) $text\";\n \"by $sender_screen_name / $name on $created_at\";\n };\n \"-------------------------\";\n }\n }\n}\n\n#----------------------------------------------------------------------------\n# direct_messages\n#----------------------------------------------------------------------------\nfunction Get-TwitterDirectMessages()\n{\n param([string]$since = $null, [string]$since_id = $null, [string]$page = $null, [bool]$raw = $false);\n $args = $null;\n if ( $since )\n {\n $args = \"?since=$since\";\n }\n elseif ( $since_id )\n {\n $args = \"?since_id=$since_id\";\n }\n elseif ( $page )\n {\n $args = \"?page=$page\";\n }\n $results = Execute-HTTPGetCommand \"http://twitter.com/direct_messages.xml$args\";\n Process-TwitterDirectMessages $results $raw;\n}\n\n#----------------------------------------------------------------------------\n# sent\n#----------------------------------------------------------------------------\nfunction Get-TwitterSentDirectMessages()\n{\n param([string]$since = $null, [string]$since_id = $null, [string]$page = $null, [bool]$raw = $false);\n $args = $null;\n if ( $since )\n {\n $args = \"?since=$since\";\n }\n elseif ( $since_id )\n {\n $args = \"?since_id=$since_id\";\n }\n elseif ( $page )\n {\n $args = \"?page=$page\";\n }\n $results = Execute-HTTPGetCommand \"http://twitter.com/direct_messages/sent.xml$args\";\n Process-TwitterDirectMessages $results $raw;\n}\n\n#----------------------------------------------------------------------------\n# new\n#----------------------------------------------------------------------------\nfunction New-TwitterDirectMessage()\n{\n param([string]$user = $null, [string]$text = $null, [bool]$raw = $false);\n if ( $user -and $text )\n {\n $enctext = [System.Web.HttpUtility]::UrlEncode(\"$text\");\n $results = Execute-HTTPPostCommand \"http://twitter.com/direct_messages/new.xml\" \"user=$user&text=$enctext\"\n Process-TwitterDirectMessages $results $raw;\n }\n}\n\n#----------------------------------------------------------------------------\n# destroy\n#----------------------------------------------------------------------------\nfunction Destroy-TwitterDirectMessage()\n{\n param([string]$id = $null);\n if ( $id )\n {\n $results = Execute-HTTPPostCommand \"http://twitter.com/direct_messages/destroy/$id.xml\" \"id=$id\";\n }\n}\n\n#============================================================================\n# Friendship Functions\n#============================================================================\n#----------------------------------------------------------------------------\n# create\n#----------------------------------------------------------------------------\nfunction Create-TwitterFriendship()\n{\n param([string]$id = $null, [bool]$follow = $true, [bool]$raw = $false);\n if ( $id )\n {\n $follow = $follow.ToString().ToLower();\n $results = Execute-HTTPPostCommand \"http://twitter.com/friendsips/create/${id}.xml\" \"id=${id}&follow=${follow}\"\n Process-TwitterUsers $results $raw;\n }\n}\n\n#----------------------------------------------------------------------------\n# destroy\n#----------------------------------------------------------------------------\nfunction Destroy-TwitterFriendship()\n{\n param([string]$id = $null, [bool]$raw = $false);\n if ( $id )\n {\n $results = Execute-HTTPPostCommand \"http://twitter.com/friendships/destroy/${id}.xml\" \"id=${id}\"\n $results;\n Process-TwitterUsers $results $raw;\n }\n}\n\n#----------------------------------------------------------------------------\n# exists\n#----------------------------------------------------------------------------\nfunction Get-TwitterFriendshipExists\n{\n param([string]$user_a = $null, [string]$user_b = $null);\n if ( $user_a -and $user_b )\n {\n $results = Execute-HTTPGetCommand \"http://twitter.com/friendships/exists.xml?user_a=${user_a}&user_b=${user_b}\";\n $results;\n }\n}\n\n#============================================================================\n# Social Graph Functions\n#============================================================================\n#----------------------------------------------------------------------------\n# Helper Functions\n#----------------------------------------------------------------------------\nfunction Process-Ids()\n{\n param([string]$sxml = $null, [bool]$raw = $false);\n if ( $sxml )\n {\n if ( $raw )\n {\n $sxml;\n }\n else\n {\n [xml]$x = $sxml;\n $i = 1;\n $x.ids.id | ForEach-Object -Process {\n $info = \"[$i] : \" + $_;\n $info;\n $i++;\n }\n }\n }\n}\n\n#----------------------------------------------------------------------------\n# ids (friends)\n#----------------------------------------------------------------------------\nfunction Get-TwitterSocialGraphFriendIds()\n{\n param([string]$id = $null, [bool]$raw = $false);\n $args = \"\";\n if ( $id )\n {\n $args = \"?id=${id}\";\n }\n $results = Execute-HTTPGetCommand \"http://twitter.com/friends/ids.xml$args\";\n Process-Ids $results $raw;\n}\n\n\n#----------------------------------------------------------------------------\n# ids (followers)\n#----------------------------------------------------------------------------\nfunction Get-TwitterSocialGraphFollowerIds()\n{\n param([string]$id = $null, [bool]$raw = $false);\n $args = \"\";\n if ( $id )\n {\n $args = \"?id=${id}\";\n }\n $results = Execute-HTTPGetCommand \"http://twitter.com/followers/ids.xml$args\";\n Process-Ids $results $raw;\n}\n\n\n#============================================================================\n# Account Functions\n#============================================================================\n#----------------------------------------------------------------------------\n# helper functions\n#----------------------------------------------------------------------------\nfunction Is-ValidHexColor()\n{\n param([string]$color_in_hex = $null)\n [bool]$valid = $false;\n if ( $color_in_hex )\n {\n [regex]$regex3 = \"[0-9a-fA-F][0-9a-fA-F][0-9a-fA-F]\";\n [regex]$regex6 = \"[0-9a-fA-F][0-9a-fA-F][0-9a-fA-F][0-9a-fA-F][0-9a-fA-F][0-9a-fA-F]\";\n if ( ($color_in_hex.Length -eq 3) -and ($color_in_hex -match $regex3) )\n {\n $valid = $true;\n }\n elseif ( ($color_in_hex.Length -eq 6) -and ($color_in_hex -match $regex6) )\n {\n $valid = $true;\n }\n }\n $valid;\n}\n\n#----------------------------------------------------------------------------\n# verify_credentials\n#----------------------------------------------------------------------------\nfunction Verify-TwitterCredentials()\n{\n $results = Execute-HTTPGetCommand \"http://twitter.com/account/verify_credentials.xml\";\n $results;\n}\n\n#----------------------------------------------------------------------------\n# end_session\n#----------------------------------------------------------------------------\nfunction End-TwitterSession()\n{\n $results = Execute-HTTPPostCommand \"http://twitter.com/account/end_session.xml\" \"\";\n $results;\n}\n\n#----------------------------------------------------------------------------\n# update_delivery_device\n#----------------------------------------------------------------------------\nfunction Set-TwitterDeliveryDevice()\n{\n param([string]$device = $null);\n if ( $device )\n {\n if ( $device.Equals(\"sms\") -or $device.Equals(\"im\") -or $device.Equals(\"none\") )\n {\n $results = Execute-HTTPPostCommand \"http://twitter.com/account/update_delivery_device.xml?device=$device\" \"device=$device\";\n $results;\n }\n else\n {\n Write-Error \"device must be either sms, im, or none!\"\n }\n }\n}\n\n#----------------------------------------------------------------------------\n# update_profile_colors\n#----------------------------------------------------------------------------\nfunction Set-TwitterProfileColors()\n{\n param(\n [string]$background_color = $null,\n [string]$text_color = $null,\n [string]$link_color = $null,\n [string]$sidebar_fill_color = $null,\n [string]$sidebar_border_color = $null);\n $args = $null;\n if ( $background_color )\n {\n if ( Is-ValidHexColor $background_color )\n {\n if ( $args ) { $args = \"$args&\"; }\n $args = \"${args}profile_background_color=$background_color\";\n }\n else\n {\n Write-Error \"background_color '$background_color' must be a 3 or 6 valid hexadecimal value!\";\n }\n }\n if ( $text_color )\n {\n if ( Is-ValidHexColor $text_color )\n {\n if ( $args ) { $args = \"$args&\"; }\n $args = \"${args}profile_text_color=$text_color\";\n }\n else\n {\n Write-Error \"text_color '$text_color' must be a 3 or 6 valid hexadecimal value!\";\n }\n }\n if ( $link_color )\n {\n if ( Is-ValidHexColor $link_color )\n {\n if ( $args ) { $args = \"$args&\"; }\n $args = \"${args}profile_link_color=$link_color\";\n }\n else\n {\n Write-Error \"link_color '$link_color' must be a 3 or 6 valid hexadecimal value!\";\n }\n }\n if ( $sidebar_fill_color )\n {\n if ( Is-ValidHexColor $sidebar_fill_color )\n {\n if ( $args ) { $args = \"$args&\"; }\n $args = \"${args}profile_sidebar_fill_color=$sidebar_fill_color\";\n }\n else\n {\n Write-Error \"sidebar_fill_color '$sidebar_fill_color' must be a 3 or 6 valid hexadecimal value!\";\n }\n }\n if ( $sidebar_border_color )\n {\n if ( Is-ValidHexColor $sidebar_border_color )\n {\n if ( $args ) { $args = \"$args&\"; }\n $args = \"${args}profile_sidebar_border_color=$sidebar_border_color\";\n }\n else\n {\n Write-Error \"sidebar_border_color '$sidebar_border_color' must be a 3 or 6 valid hexadecimal value!\";\n }\n }\n if ( $args )\n {\n Write-Host \"http://twitter.com/account/update_profile_colors.xml - $args\";\n $results = Execute-HTTPPostCommand \"http://twitter.com/account/update_profile_colors.xml\" $args;\n $results;\n }\n}\n\n#----------------------------------------------------------------------------\n# update_profile_image\n#----------------------------------------------------------------------------\nfunction Set-TwitterProfileImage()\n{\n param([string]$image = $null);\n if ( $image )\n {\n $results = Execute-HTTPPostCommand \"http://twitter.com/account/update_profile_image.xml\" \"image=$image\";\n $results;\n }\n}\n\n#----------------------------------------------------------------------------\n# update_profile_background_image\n#----------------------------------------------------------------------------\nfunction Set-TwitterProfileBackgroundImage()\n{\n param([string]$image = $null);\n if ( $image )\n {\n $results = Execute-HTTPPostCommand \"http://twitter.com/account/update_profile_background_image.xml\" \"image=$image\";\n $results;\n }\n}\n\n#----------------------------------------------------------------------------\n# rate_limit_status\n#----------------------------------------------------------------------------\nfunction Get-TwitterRateLimitStatus()\n{\n param([bool]$raw = $false);\n $sXml = Execute-HTTPGetCommand \"http://twitter.com/account/rate_limit_status.xml\";\n if ( $sXml )\n {\n if ( $raw )\n {\n $sXml;\n }\n else\n {\n [xml]$results = $sXml;\n $remaining_hits = $results.hash.{remaining-hits}.get_InnerText();\n $hourly_limit = $results.hash.{hourly-limit}.get_InnerText();\n $reset_time_in_seconds = $results.hash.{reset-time-in-seconds}.get_InnerText();\n $reset_time = $results.hash.{reset-time}.get_InnerText();\n \"Remaining Hits: $remaining_hits\";\n \"Hourly Limit : $hourly_limit\";\n \"Reset Time (s): $reset_time_in_seconds s.\";\n \"Reset Time : $reset_time\";\n }\n }\n}\n\n#----------------------------------------------------------------------------\n# update_profile\n#----------------------------------------------------------------------------\nfunction Set-TwitterProfile()\n{\n param(\n [string]$name = $null,\n [string]$email = $null,\n [string]$url = $null,\n [string]$location = $null,\n [string]$description = $null);\n $args = $null;\n if ( $name )\n {\n if ( $args ) { $args = \"$args&\"; }\n $args = \"${args}name=$name\";\n }\n if ( $email )\n {\n if ( $args ) { $args = \"$args&\"; }\n $args = \"${args}email=$email\";\n }\n if ( $url )\n {\n if ( $args ) { $args = \"$args&\"; }\n $args = \"${args}url=$url\";\n }\n if ( $location )\n {\n if ( $args ) { $args = \"$args&\"; }\n $args = \"${args}location=$location\";\n }\n if ( $description )\n {\n if ( $args ) { $args = \"$args&\"; }\n $args = \"${args}description=$description\";\n }\n if ( $args )\n {\n $results = Execute-HTTPPostCommand \"http://twitter.com/account/update_profile.xml\" $args;\n $results;\n }\n}\n\n#============================================================================\n# Favorite Functions\n#============================================================================\n#----------------------------------------------------------------------------\n# favorites\n#----------------------------------------------------------------------------\nfunction Get-TwitterFavorites()\n{\n param([string]$id, [string]$page = $null, [bool]$raw = $false);\n if ( $id )\n {\n $id = \"/$id\";\n }\n if ( $page )\n {\n $page = \"?page=$page\";\n }\n $results = Execute-HTTPGetCommand \"http://twitter.com/favorites${id}.xml${page}\";\n Process-TwitterStatus $results $raw;\n}\n\n#----------------------------------------------------------------------------\n# create\n#----------------------------------------------------------------------------\nfunction Create-TwitterFavorite()\n{\n param([string]$id, [bool]$raw = $false);\n if ( $id )\n {\n $id = \"/$id\";\n }\n $results = Execute-HTTPPostCommand \"http://twitter.com/favorites/create${id}.xml\" \"id=${id}\";\n Process-TwitterStatus $results $raw;\n}\n\n#----------------------------------------------------------------------------\n# destroy\n#----------------------------------------------------------------------------\nfunction Destroy-TwitterFavorite()\n{\n param([string]$id, [bool]$raw = $false);\n if ( $id )\n {\n $id = \"/$id\";\n }\n $results = Execute-HTTPPostCommand \"http://twitter.com/favorites/destroy${id}.xml\" \"id=${id}\";\n Process-TwitterStatus $results $raw;\n}\n\n\n#============================================================================\n# Notification Functions\n#============================================================================\n#----------------------------------------------------------------------------\n# follow\n#----------------------------------------------------------------------------\nfunction Follow-TwitterUser()\n{\n param([string]$id, [bool]$raw = $false);\n if ( $id )\n {\n $results = Execute-HTTPPostCommand \"http://twitter.com/notifications/follow/${id}.xml\" \"id=${id}\";\n Process-TwitterUsers $results $raw;\n }\n}\n\n#----------------------------------------------------------------------------\n# leave\n#----------------------------------------------------------------------------\nfunction Leave-TwitterUser()\n{\n param([string]$id, [bool]$raw = $false);\n if ( $id )\n {\n $results = Execute-HTTPPostCommand \"http://twitter.com/notifications/leave/${id}.xml\" \"id=${id}\";\n Process-TwitterUsers $results $raw;\n }\n}\n\n#============================================================================\n# Block Functions\n#============================================================================\n#----------------------------------------------------------------------------\n# create\n#----------------------------------------------------------------------------\nfunction Create-TwitterBlock()\n{\n param([string]$id, [bool]$raw = $false);\n if ( $id )\n {\n $results = Execute-HTTPPostCommand \"http://twitter.com/blocks/create/${id}.xml\" \"id=${id}\";\n Process-TwitterUsers $results $raw;\n }\n}\n\n#----------------------------------------------------------------------------\n# destroy\n#----------------------------------------------------------------------------\nfunction Destroy-TwitterBlock()\n{\n param([string]$id, [bool]$raw = $false);\n if ( $id )\n {\n $results = Execute-HTTPPostCommand \"http://twitter.com/blocks/destroy/${id}.xml\" \"id=${id}\";\n Process-TwitterUsers $results $raw;\n }\n}\n\n\n#============================================================================\n# Help Functions\n#============================================================================\n#----------------------------------------------------------------------------\n# test\n#----------------------------------------------------------------------------\nfunction Get-TwitterHelpTest()\n{\n $results = Execute-HTTPGetCommand \"http://twitter.com/help/test.xml\";\n $results;\n}\n\n#----------------------------------------------------------------------------\n# downtime_schedule\n#----------------------------------------------------------------------------\nfunction Get-TwitterDowntimeSchedule()\n{\n $results = Execute-HTTPGetCommand \"http://twitter.com/help/downtime_schedule.xml\";\n $results;\n}\n\n#============================================================================\n# TwitterCounter\n#============================================================================\n#----------------------------------------------------------------------------\n# Get-TwitterCounterStats\n#----------------------------------------------------------------------------\nfunction Get-TwitterCounterStats()\n{\n param([string]$username = $null, [int]$results = 14, [bool]$raw = $false);\n $output = \"xml\";\n $stats = $null;\n if ( $username )\n {\n $stats = Execute-HTTPGetCommand \"http://twittercounter.com/api/?username=$username&output=$output&results=$results\"\n }\n if ( !$raw )\n {\n $stats = [xml]$stats;\n $stats.twittercounter\n }\n else\n {\n $stats;\n }\n}\n\n#============================================================================\n# Utilities\n#============================================================================\nfunction Get-GroupMemberList()\n{\n param([string]$url = $null, [string]$tagstart = $null);\n if ( $tagstart -eq $null ) { $tagstart = \"entrybody\"; }\n \n # Posh Twitter Users \"http://www.mindofroot.com/powershell-twitterers/\"; \n if ( $url )\n {\n $site = Execute-HTTPGetRequest $url;\n \n $previous = @()\n $start = $site.IndexOf(' ')\n $site = $site.substring($start)\n $start = $site.IndexOf(' ')\n $site = $site.substring($start)\n $end = $site.IndexOf(' ') + 5\n \n [xml]$doc = $site.substring(0,$end) \n $results = $doc.ul.li | select @{name='Name';Expression={$_.a.'#text'}}, @{name='TwitterURL';Expression={$_.a.href}}, @{name='UserName';Expression={$_.a.href -replace 'http://twitter.com/'}}\n $results = $results[1..($results.count-1)]\n return $results\n }\n} ","body@stripHtml({\"removeProcessingText\":true,\"removeSpoilerMarkup\":true,\"removeTocMarkup\":true,\"truncateLength\":-1})@stringLength":"35883","kudosSumWeight":0,"repliesCount":0,"readOnly":false,"images":{"__typename":"AssociatedImageConnection","edges":[],"totalCount":0,"pageInfo":{"__typename":"PageInfo","hasNextPage":false,"endCursor":null,"hasPreviousPage":false,"startCursor":null}},"videos":{"__typename":"VideoConnection","edges":[],"totalCount":0,"pageInfo":{"__typename":"PageInfo","hasNextPage":false,"endCursor":null,"hasPreviousPage":false,"startCursor":null}}},"Conversation:conversation:278082":{"__typename":"Conversation","id":"conversation:278082","topic":{"__typename":"TkbTopicMessage","uid":278082},"lastPostingActivityTime":"2015-03-09T11:32:18.000-07:00","solved":false},"TkbTopicMessage:message:278082":{"__typename":"TkbTopicMessage","subject":"PowerShell GTM Pool Member","conversation":{"__ref":"Conversation:conversation:278082"},"id":"message:278082","revisionNum":1,"uid":278082,"depth":0,"board":{"__ref":"Tkb:board:codeshare"},"author":{"__ref":"User:user:131293"},"teaser@stripHtml({\"removeProcessingText\":true,\"truncateLength\":-1})":"","introduction":"","metrics":{"__typename":"MessageMetrics","views":332},"postTime":"2015-03-09T11:32:18.000-07:00","lastPublishTime":"2015-03-09T11:32:18.000-07:00","body@stripHtml({\"removeProcessingText\":true,\"removeSpoilerMarkup\":true,\"removeTocMarkup\":true,\"truncateLength\":-1})":" Problem this snippet solves: This example illustrates how to query and set the state of GTM Pool Members. ","body@stripHtml({\"removeProcessingText\":true,\"removeSpoilerMarkup\":true,\"removeTocMarkup\":true,\"truncateLength\":-1})@stringLength":"108","kudosSumWeight":0,"repliesCount":0,"readOnly":false,"images":{"__typename":"AssociatedImageConnection","edges":[],"totalCount":0,"pageInfo":{"__typename":"PageInfo","hasNextPage":false,"endCursor":null,"hasPreviousPage":false,"startCursor":null}},"videos":{"__typename":"VideoConnection","edges":[],"totalCount":0,"pageInfo":{"__typename":"PageInfo","hasNextPage":false,"endCursor":null,"hasPreviousPage":false,"startCursor":null}}},"Conversation:conversation:278259":{"__typename":"Conversation","id":"conversation:278259","topic":{"__typename":"TkbTopicMessage","uid":278259},"lastPostingActivityTime":"2015-03-09T12:06:14.000-07:00","solved":false},"TkbTopicMessage:message:278259":{"__typename":"TkbTopicMessage","subject":"Ps Pool Member Control","conversation":{"__ref":"Conversation:conversation:278259"},"id":"message:278259","revisionNum":1,"uid":278259,"depth":0,"board":{"__ref":"Tkb:board:codeshare"},"author":{"__ref":"User:user:131293"},"teaser@stripHtml({\"removeProcessingText\":true,\"truncateLength\":-1})":"","introduction":"","metrics":{"__typename":"MessageMetrics","views":328},"postTime":"2015-03-09T12:06:14.000-07:00","lastPublishTime":"2015-03-09T12:06:14.000-07:00","body@stripHtml({\"removeProcessingText\":true,\"removeSpoilerMarkup\":true,\"removeTocMarkup\":true,\"truncateLength\":-1})":" Problem this snippet solves: This question comes up quite often here on DevCentral: \"How can I gracefully shut down my servers for maintenance without disrupting current user sessions?\". In fact, I answered this question just the other day again in the iControl forum and figured I'd throw out an application that accomplished this. So I went about writing this application to allow for the graceful shutdown of a given pool member. Of course, the application wouldn't be complete without listing the pools and members for a specified pool as well as allowing for enabling and disabling of the server so I went ahead and included those pieces as a bonus. Code : #----------------------------------------------------------------------------\n# The contents of this file are subject to the \"END USER LICENSE AGREEMENT FOR F5\n# Software Development Kit for iControl\"; you may not use this file except in\n# compliance with the License. The License is included in the iControl\n# Software Development Kit.\n#\n# Software distributed under the License is distributed on an \"AS IS\"\n# basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See\n# the License for the specific language governing rights and limitations\n# under the License.\n#\n# The Original Code is iControl Code and related documentation\n# distributed by F5.\n#\n# The Initial Developer of the Original Code is F5 Networks,\n# Inc. Seattle, WA, USA. Portions created by F5 are Copyright (C) 1996-2007 F5 Networks,\n# Inc. All Rights Reserved. iControl (TM) is a registered trademark of F5 Networks, Inc.\n#\n# Alternatively, the contents of this file may be used under the terms\n# of the GNU General Public License (the \"GPL\"), in which case the\n# provisions of GPL are applicable instead of those above. If you wish\n# to allow use of your version of this file only under the terms of the\n# GPL and not to allow others to use your version of this file under the\n# License, indicate your decision by deleting the provisions above and\n# replace them with the notice and other provisions required by the GPL.\n# If you do not delete the provisions above, a recipient may use your\n# version of this file under either the License or the GPL\n#----------------------------------------------------------------------------\nparam (\n $g_bigip = $null,\n $g_uid = $null,\n $g_pwd = $null,\n $g_pool = $null,\n $g_member = $null,\n $g_mode = $null\n);\n\nSet-PSDebug -strict;\n\n#-------------------------------------------------------------------------\n# function Write-Usage\n#-------------------------------------------------------------------------\nfunction Write-Usage()\n{\n Write-Host \"Usage: PoolMemberControl.ps1 host uid pwd [pool [member:ip [mode = \"enable\"|\"disable\"]]]\";\n exit;\n}\n\n#-------------------------------------------------------------------------\n# Get-Pools\n#-------------------------------------------------------------------------\nfunction Get-Pools()\n{\n $pool_list = (Get-F5.iControl).LocalLBPool.get_list();\n Write-Host \"Available Pools:\";\n foreach ($pool in $pool_list)\n {\n Write-Host \" $pool\";\n }\n}\n\n#-------------------------------------------------------------------------\n# Get-PoolMembers\n#-------------------------------------------------------------------------\nFunction Get-PoolMembers()\n{\n param($pool_name);\n $member_lists = (Get-F5.iControl).LocalLBPool.get_member((, $pool_name));\n Write-Host \"Members for Pool ${pool_name}:\"\n foreach($member in $member_lists[0])\n {\n $addr = $member.address;\n $port = $member.port;\n Write-Host \" ${addr}:${port}\"\n }\n}\n\n#-------------------------------------------------------------------------\n# Get-PoolMemberStatus\n#-------------------------------------------------------------------------\nFunction Get-PoolMemberStatus()\n{\n param($pool_name, $member);\n $vals = $member.Split( (, ':'));\n $member_addr = $vals[0];\n $member_port = $vals[1];\n $bFound = 0;\n $MemberObjectStatusAofA = (Get-F5.iControl).LocalLBPoolMember.get_object_status((, $pool_name));\n foreach($MemberObjectStatus in $MemberObjectStatusAofA[0])\n {\n $a2 = $MemberObjectStatus.member.address;\n $p2 = $MemberObjectStatus.member.port;\n \n if ( \"${member_addr}:${member_port}\" -eq \"${a2}:${p2}\" )\n {\n $Availability = $MemberObjectStatus.object_status.availability_status;\n $Enabled = $MemberObjectStatus.object_status.enabled_status;\n $Description = $MemberObjectStatus.object_status.status_description;\n \n Write-Host \"Pool $pool_name, Member ${member_addr}:${member_port} status:\"\n Write-Host \" Availability : $Availability\"\n Write-Host \" Enabled : $Enabled\"\n Write-Host \" Description : $Description\"\n \n $bFound = 1;\n }\n }\n if ( $bFound -eq 0 )\n {\n Write-Host \"Member ${member_addr}:${member_port} could not be found in pool $pool_name!\"\n }\n}\n\n#-------------------------------------------------------------------------\n# Enable-Member\n#-------------------------------------------------------------------------\nfunction Enable-Member()\n{\n param($pool_name, $member);\n $vals = $member.Split( (, ':'));\n $member_addr = $vals[0];\n $member_port = $vals[1];\n\n $MemberMonitorState = New-Object -TypeName iControl.LocalLBPoolMemberMemberMonitorState;\n $MemberMonitorState.member = New-Object -TypeName iControl.CommonIPPortDefinition;\n $MemberMonitorState.member.address = $member_addr;\n $MemberMonitorState.member.port = $member_port;\n $MemberMonitorState.monitor_state = \"STATE_ENABLED\";\n $MemberMonitorStateAofA = New-Object -TypeName \"iControl.LocalLBPoolMemberMemberMonitorState[][]\" 1,1\n $MemberMonitorStateAofA[0][0] = $MemberMonitorState;\n \n Write-Host \"Setting Montior State to Enabled\";\n (Get-F5.iControl).LocalLBPoolMember.set_monitor_state( (, $pool_name), $MemberMonitorStateAofA);\n \n $MemberSessionState = New-Object -TypeName iControl.LocalLBPoolMemberMemberSessionState;\n $MemberSessionState.member = New-Object -TypeName iControl.CommonIPPortDefinition;\n $MemberSessionState.member.address = $member_addr;\n $MemberSessionState.member.port = $member_port;\n $MemberSessionState.session_state = \"STATE_ENABLED\";\n $MemberSessionStateAofA = New-Object -TypeName \"iControl.LocalLBPoolMemberMemberSessionState[][]\" 1,1\n $MemberSessionStateAofA[0][0] = $MemberSessionState;\n\n Write-Host \"Setting Session Enabled State to Enabled\";\n (Get-F5.iControl).LocalLBPoolMember.set_session_enabled_state( (, $pool_name), $MemberSessionStateAofA);\n\n Get-PoolMemberStatus $pool_name $member\n}\n\n#-------------------------------------------------------------------------\n# Disable-Member\n#-------------------------------------------------------------------------\nfunction Disable-Member()\n{\n param($pool_name, $member);\n $vals = $member.Split( (, ':'));\n $member_addr = $vals[0];\n $member_port = $vals[1];\n \n Write-Host \"Disabling Session Enabled State...\";\n\n $MemberSessionState = New-Object -TypeName iControl.LocalLBPoolMemberMemberSessionState;\n $MemberSessionState.member = New-Object -TypeName iControl.CommonIPPortDefinition;\n $MemberSessionState.member.address = $member_addr;\n $MemberSessionState.member.port = $member_port;\n $MemberSessionState.session_state = \"STATE_DISABLED\";\n $MemberSessionStateAofA = New-Object -TypeName \"iControl.LocalLBPoolMemberMemberSessionState[][]\" 1,1\n $MemberSessionStateAofA[0][0] = $MemberSessionState;\n\n (Get-F5.iControl).LocalLBPoolMember.set_session_enabled_state( (, $pool_name), $MemberSessionStateAofA);\n\n Write-Host \"Waiting for current connections to drop to zero...\"\n $MemberDef = New-Object -TypeName iControl.CommonIPPortDefinition;\n $MemberDef.address = $member_addr;\n $MemberDef.port = $member_port;\n \n $MemberDefAofA = New-Object -TypeName \"iControl.CommonIPPortDefinition[][]\" 1,1\n $MemberDefAofA[0][0] = $MemberDef;\n \n $cur_connections = 1;\n \n while ( $cur_connections -gt 0 )\n {\n $MemberStatisticsA = (Get-F5.iControl).LocalLBPoolMember.get_statistics( (, $pool_name), $MemberDefAofA);\n $MemberStatisticEntry = $MemberStatisticsA[0].statistics[0];\n $Statistics = $MemberStatisticEntry.statistics;\n foreach ($Statistic in $Statistics)\n {\n $type = $Statistic.type;\n $value = $Statistic.value;\n \n if ( $type -eq \"STATISTIC_SERVER_SIDE_CURRENT_CONNECTIONS\" )\n {\n # just use the low value. Odds are there aren't over 2^32 current connections.\n # If your site is this big, you'll have to convert this to a 64 bit number.\n $cur_connections = $value.low;\n Write-Host \"Current Connections: $cur_connections\"\n }\n }\n Start-Sleep -s 1\n }\n\n Write-Host \"Disabling Monitor State...\";\n\n $MemberMonitorState = New-Object -TypeName iControl.LocalLBPoolMemberMemberMonitorState;\n $MemberMonitorState.member = New-Object -TypeName iControl.CommonIPPortDefinition;\n $MemberMonitorState.member.address = $member_addr;\n $MemberMonitorState.member.port = $member_port;\n $MemberMonitorState.monitor_state = \"STATE_DISABLED\";\n $MemberMonitorStateAofA = New-Object -TypeName \"iControl.LocalLBPoolMemberMemberMonitorState[][]\" 1,1\n $MemberMonitorStateAofA[0][0] = $MemberMonitorState;\n \n (Get-F5.iControl).LocalLBPoolMember.set_monitor_state( (, $pool_name), $MemberMonitorStateAofA);\n \n Get-PoolMemberStatus $pool_name $member\n}\n\n#-------------------------------------------------------------------------\n# Do-Initialize\n#-------------------------------------------------------------------------\nfunction Do-Initialize()\n{\n if ( (Get-PSSnapin | Where-Object { $_.Name -eq \"iControlSnapIn\"}) -eq $null )\n {\n Add-PSSnapIn iControlSnapIn\n }\n $success = Initialize-F5.iControl -HostName $g_bigip -Username $g_uid -Password $g_pwd;\n \n return $success;\n}\n\n#-------------------------------------------------------------------------\n# Main Application Logic\n#-------------------------------------------------------------------------\nif ( ($g_bigip -eq $null) -or ($g_uid -eq $null) -or ($g_pwd -eq $null) )\n{\n Write-Usage;\n}\n\nif ( Do-Initialize )\n{\n if ( $g_pool -eq $null )\n {\n Get-Pools;\n }\n elseif ( $g_member -eq $null )\n {\n Get-PoolMembers $g_pool;\n }\n elseif ( $g_mode -eq $null )\n {\n Get-PoolMemberStatus $g_pool $g_member;\n }\n else\n {\n switch ($g_mode.ToLower())\n {\n \"enable\" {\n Enable-Member $g_pool $g_member;\n }\n \"disable\" {\n Disable-Member $g_pool $g_member;\n }\n default {\n Write-Usage;\n }\n }\n }\n}\nelse\n{\n Write-Error \"ERROR: iControl subsystem not initialized\"\n} ","body@stripHtml({\"removeProcessingText\":true,\"removeSpoilerMarkup\":true,\"removeTocMarkup\":true,\"truncateLength\":-1})@stringLength":"10521","kudosSumWeight":0,"repliesCount":0,"readOnly":false,"images":{"__typename":"AssociatedImageConnection","edges":[],"totalCount":0,"pageInfo":{"__typename":"PageInfo","hasNextPage":false,"endCursor":null,"hasPreviousPage":false,"startCursor":null}},"videos":{"__typename":"VideoConnection","edges":[],"totalCount":0,"pageInfo":{"__typename":"PageInfo","hasNextPage":false,"endCursor":null,"hasPreviousPage":false,"startCursor":null}}},"CachedAsset:text:en_US-components/community/Navbar-1745595729370":{"__typename":"CachedAsset","id":"text:en_US-components/community/Navbar-1745595729370","value":{"community":"Community Home","inbox":"Inbox","manageContent":"Manage Content","tos":"Terms of Service","forgotPassword":"Forgot Password","themeEditor":"Theme Editor","edit":"Edit Navigation Bar","skipContent":"Skip to content","migrated-link-9":"Groups","migrated-link-7":"Technical Articles","migrated-link-8":"DevCentral News","migrated-link-1":"Technical Forum","migrated-link-10":"Community Groups","migrated-link-2":"Water Cooler","migrated-link-11":"F5 Groups","Common-external-link":"How Do I...?","migrated-link-0":"Forums","article-series":"Article Series","migrated-link-5":"Community Articles","migrated-link-6":"Articles","security-insights":"Security Insights","migrated-link-3":"CrowdSRC","migrated-link-4":"CodeShare","migrated-link-12":"Events","migrated-link-13":"Suggestions"},"localOverride":false},"CachedAsset:text:en_US-components/community/NavbarHamburgerDropdown-1745595729370":{"__typename":"CachedAsset","id":"text:en_US-components/community/NavbarHamburgerDropdown-1745595729370","value":{"hamburgerLabel":"Side Menu"},"localOverride":false},"CachedAsset:text:en_US-components/community/BrandLogo-1745595729370":{"__typename":"CachedAsset","id":"text:en_US-components/community/BrandLogo-1745595729370","value":{"logoAlt":"Khoros","themeLogoAlt":"Brand Logo"},"localOverride":false},"CachedAsset:text:en_US-components/community/NavbarTextLinks-1745595729370":{"__typename":"CachedAsset","id":"text:en_US-components/community/NavbarTextLinks-1745595729370","value":{"more":"More"},"localOverride":false},"CachedAsset:text:en_US-components/authentication/AuthenticationLink-1745595729370":{"__typename":"CachedAsset","id":"text:en_US-components/authentication/AuthenticationLink-1745595729370","value":{"title.login":"Sign In","title.registration":"Register","title.forgotPassword":"Forgot Password","title.multiAuthLogin":"Sign In"},"localOverride":false},"CachedAsset:text:en_US-components/nodes/NodeLink-1745595729370":{"__typename":"CachedAsset","id":"text:en_US-components/nodes/NodeLink-1745595729370","value":{"place":"Place {name}"},"localOverride":false},"CachedAsset:text:en_US-components/tags/TagSubscriptionAction-1745595729370":{"__typename":"CachedAsset","id":"text:en_US-components/tags/TagSubscriptionAction-1745595729370","value":{"success.follow.title":"Following Tag","success.unfollow.title":"Unfollowed Tag","success.follow.message.followAcrossCommunity":"You will be notified when this tag is used anywhere across the community","success.unfollowtag.message":"You will no longer be notified when this tag is used anywhere in this place","success.unfollowtagAcrossCommunity.message":"You will no longer be notified when this tag is used anywhere across the community","unexpected.error.title":"Error - Action Failed","unexpected.error.message":"An unidentified problem occurred during the action you took. Please try again later.","buttonTitle":"{isSubscribed, select, true {Unfollow} false {Follow} other{}}","unfollow":"Unfollow"},"localOverride":false},"CachedAsset:text:en_US-shared/client/components/common/QueryHandler-1745595729370":{"__typename":"CachedAsset","id":"text:en_US-shared/client/components/common/QueryHandler-1745595729370","value":{"title":"Query Handler"},"localOverride":false},"CachedAsset:text:en_US-components/community/NavbarDropdownToggle-1745595729370":{"__typename":"CachedAsset","id":"text:en_US-components/community/NavbarDropdownToggle-1745595729370","value":{"ariaLabelClosed":"Press the down arrow to open the menu"},"localOverride":false},"CachedAsset:text:en_US-components/messages/MessageListTabs-1745595729370":{"__typename":"CachedAsset","id":"text:en_US-components/messages/MessageListTabs-1745595729370","value":{"mostKudoed":"{value, select, IDEA {Most Votes} other {Most Likes}}","mostReplies":"Most Replies","mostViewed":"Most Viewed","newest":"{value, select, IDEA {Newest Ideas} OCCASION {Newest Events} other {Newest Topics}}","newestOccasions":"Newest Events","mostRecent":"Most Recent","noReplies":"No Replies Yet","noSolutions":"No Solutions Yet","solutions":"Solutions","mostRecentUserContent":"Most Recent","trending":"Trending","draft":"Drafts","spam":"Spam","abuse":"Abuse","moderation":"Moderation","tags":"Tags","PAST":"Past","UPCOMING":"Upcoming","sortBymostRecent":"Sort By Most Recent","sortBymostRecentUserContent":"Sort By Most Recent","sortBymostKudoed":"Sort By Most Likes","sortBymostReplies":"Sort By Most Replies","sortBymostViewed":"Sort By Most Viewed","sortBynewest":"Sort By Newest Topics","sortBynewestOccasions":"Sort By Newest Events","otherTabs":" Messages list in the {tab} for {conversationStyle}","guides":"Guides","archives":"Archives"},"localOverride":false},"CachedAsset:text:en_US-components/messages/MessageView/MessageViewInline-1745595729370":{"__typename":"CachedAsset","id":"text:en_US-components/messages/MessageView/MessageViewInline-1745595729370","value":{"bylineAuthor":"{bylineAuthor}","bylineBoard":"{bylineBoard}","anonymous":"Anonymous","place":"Place {bylineBoard}","gotoParent":"Go to parent {name}"},"localOverride":false},"CachedAsset:text:en_US-shared/client/components/common/Pager/PagerLoadMore-1745595729370":{"__typename":"CachedAsset","id":"text:en_US-shared/client/components/common/Pager/PagerLoadMore-1745595729370","value":{"loadMore":"Show More"},"localOverride":false},"CachedAsset:text:en_US-components/customComponent/CustomComponent-1745595729370":{"__typename":"CachedAsset","id":"text:en_US-components/customComponent/CustomComponent-1745595729370","value":{"errorMessage":"Error rendering component id: {customComponentId}","bannerTitle":"Video provider requires cookies to play the video. Accept to continue or {url} it directly on the provider's site.","buttonTitle":"Accept","urlText":"watch"},"localOverride":false},"CachedAsset:text:en_US-shared/client/components/common/OverflowNav-1745595729370":{"__typename":"CachedAsset","id":"text:en_US-shared/client/components/common/OverflowNav-1745595729370","value":{"toggleText":"More"},"localOverride":false},"CachedAsset:text:en_US-components/users/UserLink-1745595729370":{"__typename":"CachedAsset","id":"text:en_US-components/users/UserLink-1745595729370","value":{"authorName":"View Profile: {author}","anonymous":"Anonymous"},"localOverride":false},"CachedAsset:text:en_US-components/messages/MessageSubject-1745595729370":{"__typename":"CachedAsset","id":"text:en_US-components/messages/MessageSubject-1745595729370","value":{"noSubject":"(no subject)"},"localOverride":false},"CachedAsset:text:en_US-components/messages/MessageBody-1745595729370":{"__typename":"CachedAsset","id":"text:en_US-components/messages/MessageBody-1745595729370","value":{"showMessageBody":"Show More","mentionsErrorTitle":"{mentionsType, select, board {Board} user {User} message {Message} other {}} No Longer Available","mentionsErrorMessage":"The {mentionsType} you are trying to view has been removed from the community.","videoProcessing":"Video is being processed. Please try again in a few minutes.","bannerTitle":"Video provider requires cookies to play the video. Accept to continue or {url} it directly on the provider's site.","buttonTitle":"Accept","urlText":"watch"},"localOverride":false},"CachedAsset:text:en_US-components/messages/MessageTime-1745595729370":{"__typename":"CachedAsset","id":"text:en_US-components/messages/MessageTime-1745595729370","value":{"postTime":"Published: {time}","lastPublishTime":"Last Update: {time}","conversation.lastPostingActivityTime":"Last posting activity time: {time}","conversation.lastPostTime":"Last post time: {time}","moderationData.rejectTime":"Rejected time: {time}"},"localOverride":false},"CachedAsset:text:en_US-shared/client/components/nodes/NodeIcon-1745595729370":{"__typename":"CachedAsset","id":"text:en_US-shared/client/components/nodes/NodeIcon-1745595729370","value":{"contentType":"Content Type {style, select, FORUM {Forum} BLOG {Blog} TKB {Knowledge Base} IDEA {Ideas} OCCASION {Events} other {}} icon"},"localOverride":false},"CachedAsset:text:en_US-components/messages/MessageUnreadCount-1745595729370":{"__typename":"CachedAsset","id":"text:en_US-components/messages/MessageUnreadCount-1745595729370","value":{"unread":"{count} unread","comments":"{count, plural, one { unread comment} other{ unread comments}}"},"localOverride":false},"CachedAsset:text:en_US-components/messages/MessageViewCount-1745595729370":{"__typename":"CachedAsset","id":"text:en_US-components/messages/MessageViewCount-1745595729370","value":{"textTitle":"{count, plural,one {View} other{Views}}","views":"{count, plural, one{View} other{Views}}"},"localOverride":false},"CachedAsset:text:en_US-components/kudos/KudosCount-1745595729370":{"__typename":"CachedAsset","id":"text:en_US-components/kudos/KudosCount-1745595729370","value":{"textTitle":"{count, plural,one {{messageType, select, IDEA{Vote} other{Like}}} other{{messageType, select, IDEA{Votes} other{Likes}}}}","likes":"{count, plural, one{like} other{likes}}"},"localOverride":false},"CachedAsset:text:en_US-components/messages/MessageRepliesCount-1745595729370":{"__typename":"CachedAsset","id":"text:en_US-components/messages/MessageRepliesCount-1745595729370","value":{"textTitle":"{count, plural,one {{conversationStyle, select, IDEA{Comment} OCCASION{Comment} other{Reply}}} other{{conversationStyle, select, IDEA{Comments} OCCASION{Comments} other{Replies}}}}","comments":"{count, plural, one{Comment} other{Comments}}"},"localOverride":false},"CachedAsset:text:en_US-shared/client/components/users/UserAvatar-1745595729370":{"__typename":"CachedAsset","id":"text:en_US-shared/client/components/users/UserAvatar-1745595729370","value":{"altText":"{login}'s avatar","altTextGeneric":"User's avatar"},"localOverride":false}}}},"page":"/tags/TagPage/TagPage","query":{"messages.widget.messagelistfornodebyrecentactivitywidget-tab-main-messages-list-for-tag-widget-0":"mostViewed","nodeId":"board:codeshare","tagName":"microsoft powershell with icontrol"},"buildId":"ISAhs0UxT148eG089lpQq","runtimeConfig":{"buildInformationVisible":false,"logLevelApp":"info","logLevelMetrics":"info","openTelemetryClientEnabled":false,"openTelemetryConfigName":"f5","openTelemetryServiceVersion":"25.3.0","openTelemetryUniverse":"prod","openTelemetryCollector":"http://localhost:4318","openTelemetryRouteChangeAllowedTime":"5000","apolloDevToolsEnabled":false,"inboxMuteWipFeatureEnabled":false},"isFallback":false,"isExperimentalCompile":false,"dynamicIds":["./components/customComponent/CustomComponent/CustomComponent.tsx","./components/community/Navbar/NavbarWidget.tsx","./components/community/Breadcrumb/BreadcrumbWidget.tsx","./components/tags/TagsHeaderWidget/TagsHeaderWidget.tsx","./components/messages/MessageListForNodeByRecentActivityWidget/MessageListForNodeByRecentActivityWidget.tsx","./components/tags/TagSubscriptionAction/TagSubscriptionAction.tsx","./components/customComponent/CustomComponentContent/TemplateContent.tsx","../shared/client/components/common/List/ListGroup/ListGroup.tsx","./components/messages/MessageView/MessageView.tsx","./components/messages/MessageView/MessageViewInline/MessageViewInline.tsx","../shared/client/components/common/Pager/PagerLoadMore/PagerLoadMore.tsx","./components/customComponent/CustomComponentContent/HtmlContent.tsx","./components/customComponent/CustomComponentContent/CustomComponentScripts.tsx"],"appGip":true,"scriptLoader":[]}