API āĻāĻ° āĻŽāĻžāĻ§ā§āĻ¯āĻŽā§‡ PowerShell āĻĨā§‡āĻ•ā§‡ Google āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°āĻ•āĻžāĻ°ā§€ āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°āĻž

āĻ—ā§āĻ°āĻŋāĻŸāĻŋāĻ‚āĻ¸!

āĻāĻ‡ āĻ¨āĻŋāĻŦāĻ¨ā§āĻ§āĻŸāĻŋ G Suite āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°āĻ•āĻžāĻ°ā§€āĻĻā§‡āĻ° āĻŽā§āĻ¯āĻžāĻ¨āĻŋāĻĒā§āĻ˛ā§‡āĻŸ āĻ•āĻ°āĻžāĻ° āĻœāĻ¨ā§āĻ¯ Google API-āĻāĻ° āĻ¸āĻžāĻĨā§‡ PowerShell āĻ‡āĻ¨ā§āĻŸāĻžāĻ°āĻ…ā§āĻ¯āĻžāĻ•āĻļāĻ¨ā§‡āĻ° āĻŦāĻžāĻ¸ā§āĻ¤āĻŦāĻžāĻ¯āĻŧāĻ¨ āĻŦāĻ°ā§āĻŖāĻ¨āĻž āĻ•āĻ°āĻŦā§‡āĨ¤

āĻ†āĻŽāĻ°āĻž āĻĒā§āĻ°āĻ¤āĻŋāĻˇā§āĻ āĻžāĻ¨ āĻœā§āĻĄāĻŧā§‡ āĻŦā§‡āĻļ āĻ•āĻŋāĻ›ā§ āĻ…āĻ­ā§āĻ¯āĻ¨ā§āĻ¤āĻ°ā§€āĻŖ āĻāĻŦāĻ‚ āĻ•ā§āĻ˛āĻžāĻ‰āĻĄ āĻĒāĻ°āĻŋāĻˇā§‡āĻŦāĻž āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻŋāĨ¤ āĻŦā§‡āĻļāĻŋāĻ°āĻ­āĻžāĻ— āĻ•ā§āĻˇā§‡āĻ¤ā§āĻ°ā§‡, āĻ¤āĻžāĻĻā§‡āĻ° āĻŽāĻ§ā§āĻ¯ā§‡ āĻ…āĻ¨ā§āĻŽā§‹āĻĻāĻ¨ Google āĻŦāĻž āĻ…ā§āĻ¯āĻžāĻ•ā§āĻŸāĻŋāĻ­ āĻĄāĻŋāĻ°ā§‡āĻ•ā§āĻŸāĻ°āĻŋāĻ¤ā§‡ āĻ¨ā§‡āĻŽā§‡ āĻ†āĻ¸ā§‡, āĻ¯āĻžāĻ° āĻŽāĻ§ā§āĻ¯ā§‡ āĻ†āĻŽāĻ°āĻž āĻāĻ•āĻŸāĻŋ āĻĒā§āĻ°āĻ¤āĻŋāĻ°ā§‚āĻĒ āĻŦāĻœāĻžāĻ¯āĻŧ āĻ°āĻžāĻ–āĻ¤ā§‡ āĻĒāĻžāĻ°āĻŋ āĻ¨āĻž; āĻ¸ā§‡āĻ‡ āĻ…āĻ¨ā§āĻ¯āĻžāĻ¯āĻŧā§€, āĻ¯āĻ–āĻ¨ āĻāĻ•āĻœāĻ¨ āĻ¨āĻ¤ā§āĻ¨ āĻ•āĻ°ā§āĻŽāĻšāĻžāĻ°ā§€ āĻšāĻ˛ā§‡ āĻ¯āĻžāĻ¨, āĻ†āĻĒāĻ¨āĻžāĻ•ā§‡ āĻāĻ‡ āĻĻā§āĻŸāĻŋ āĻ¸āĻŋāĻ¸ā§āĻŸā§‡āĻŽā§‡ āĻāĻ•āĻŸāĻŋ āĻ…ā§āĻ¯āĻžāĻ•āĻžāĻ‰āĻ¨ā§āĻŸ āĻ¤ā§ˆāĻ°āĻŋ/āĻ¸āĻ•ā§āĻ°āĻŋāĻ¯āĻŧ āĻ•āĻ°āĻ¤ā§‡ āĻšāĻŦā§‡āĨ¤ āĻĒā§āĻ°āĻ•ā§āĻ°āĻŋāĻ¯āĻŧāĻžāĻŸāĻŋ āĻ¸ā§āĻŦāĻ¯āĻŧāĻ‚āĻ•ā§āĻ°āĻŋāĻ¯āĻŧ āĻ•āĻ°āĻ¤ā§‡, āĻ†āĻŽāĻ°āĻž āĻāĻ•āĻŸāĻŋ āĻ¸ā§āĻ•ā§āĻ°āĻŋāĻĒā§āĻŸ āĻ˛ā§‡āĻ–āĻžāĻ° āĻ¸āĻŋāĻĻā§āĻ§āĻžāĻ¨ā§āĻ¤ āĻ¨āĻŋāĻ¯āĻŧā§‡āĻ›āĻŋ āĻ¯āĻž āĻ¤āĻĨā§āĻ¯ āĻ¸āĻ‚āĻ—ā§āĻ°āĻš āĻ•āĻ°ā§‡ āĻāĻŦāĻ‚ āĻ‰āĻ­āĻ¯āĻŧ āĻĒāĻ°āĻŋāĻˇā§‡āĻŦāĻžāĻ¤ā§‡ āĻĒāĻžāĻ āĻžāĻ¯āĻŧāĨ¤

āĻ…āĻ¨ā§āĻŽā§‹āĻĻāĻ¨

āĻĒā§āĻ°āĻ¯āĻŧā§‹āĻœāĻ¨ā§€āĻ¯āĻŧāĻ¤āĻžāĻ—ā§āĻ˛āĻŋ āĻ†āĻāĻ•āĻžāĻ° āĻ¸āĻŽāĻ¯āĻŧ, āĻ†āĻŽāĻ°āĻž āĻ…āĻ¨ā§āĻŽā§‹āĻĻāĻ¨ā§‡āĻ° āĻœāĻ¨ā§āĻ¯ āĻĒā§āĻ°āĻ•ā§ƒāĻ¤ āĻŽāĻžāĻ¨āĻŦ āĻĒā§āĻ°āĻļāĻžāĻ¸āĻ•āĻĻā§‡āĻ° āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻžāĻ° āĻ¸āĻŋāĻĻā§āĻ§āĻžāĻ¨ā§āĻ¤ āĻ¨āĻŋāĻ¯āĻŧā§‡āĻ›āĻŋ; āĻāĻŸāĻŋ āĻĻā§āĻ°ā§āĻ˜āĻŸāĻ¨āĻžāĻœāĻ¨āĻŋāĻ¤ āĻŦāĻž āĻ‡āĻšā§āĻ›āĻžāĻ•ā§ƒāĻ¤āĻ­āĻžāĻŦā§‡ āĻŦā§āĻ¯āĻžāĻĒāĻ• āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨ā§‡āĻ° āĻ•ā§āĻˇā§‡āĻ¤ā§āĻ°ā§‡ āĻ•ā§āĻ°āĻŋāĻ¯āĻŧāĻžāĻ—ā§āĻ˛āĻŋāĻ° āĻŦāĻŋāĻļā§āĻ˛ā§‡āĻˇāĻŖāĻ•ā§‡ āĻ¸āĻšāĻœ āĻ•āĻ°ā§‡ āĻ¤ā§‹āĻ˛ā§‡āĨ¤

Google APIāĻ—ā§āĻ˛āĻŋ āĻĒā§āĻ°āĻŽāĻžāĻŖā§€āĻ•āĻ°āĻŖ āĻāĻŦāĻ‚ āĻ…āĻ¨ā§āĻŽā§‹āĻĻāĻ¨ā§‡āĻ° āĻœāĻ¨ā§āĻ¯ OAuth 2.0 āĻĒā§āĻ°ā§‹āĻŸā§‹āĻ•āĻ˛ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°ā§‡ā§ˇ āĻ•ā§‡āĻ¸ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°ā§āĻ¨ āĻāĻŦāĻ‚ āĻ†āĻ°ā§‹ āĻŦāĻŋāĻ¸ā§āĻ¤āĻžāĻ°āĻŋāĻ¤ āĻŦāĻŋāĻŦāĻ°āĻŖ āĻāĻ–āĻžāĻ¨ā§‡ āĻĒāĻžāĻ“āĻ¯āĻŧāĻž āĻ¯āĻžāĻŦā§‡: Google API āĻ…ā§āĻ¯āĻžāĻ•ā§āĻ¸ā§‡āĻ¸ āĻ•āĻ°āĻ¤ā§‡ OAuth 2.0 āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻž āĻšāĻšā§āĻ›ā§‡.

āĻ†āĻŽāĻŋ āĻ¸ā§āĻ•ā§āĻ°āĻŋāĻĒā§āĻŸāĻŸāĻŋ āĻŦā§‡āĻ›ā§‡ āĻ¨āĻŋāĻ¯āĻŧā§‡āĻ›āĻŋ āĻ¯āĻž āĻĄā§‡āĻ¸ā§āĻ•āĻŸāĻĒ āĻ…ā§āĻ¯āĻžāĻĒā§āĻ˛āĻŋāĻ•ā§‡āĻļāĻ¨āĻ—ā§āĻ˛āĻŋāĻ¤ā§‡ āĻ…āĻ¨ā§āĻŽā§‹āĻĻāĻ¨ā§‡āĻ° āĻœāĻ¨ā§āĻ¯ āĻŦā§āĻ¯āĻŦāĻšā§ƒāĻ¤ āĻšāĻ¯āĻŧāĨ¤ āĻāĻ•āĻŸāĻŋ āĻĒāĻ°āĻŋāĻˇā§‡āĻŦāĻž āĻ…ā§āĻ¯āĻžāĻ•āĻžāĻ‰āĻ¨ā§āĻŸ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻžāĻ° āĻŦāĻŋāĻ•āĻ˛ā§āĻĒāĻ“ āĻ°āĻ¯āĻŧā§‡āĻ›ā§‡, āĻ¯āĻžāĻ° āĻœāĻ¨ā§āĻ¯ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°āĻ•āĻžāĻ°ā§€āĻ° āĻ•āĻžāĻ› āĻĨā§‡āĻ•ā§‡ āĻ…āĻĒā§āĻ°āĻ¯āĻŧā§‹āĻœāĻ¨ā§€āĻ¯āĻŧ āĻ†āĻ¨ā§āĻĻā§‹āĻ˛āĻ¨ā§‡āĻ° āĻĒā§āĻ°āĻ¯āĻŧā§‹āĻœāĻ¨ āĻšāĻ¯āĻŧ āĻ¨āĻžāĨ¤

āĻ¨ā§€āĻšā§‡āĻ° āĻ›āĻŦāĻŋāĻŸāĻŋ Google āĻĒā§ƒāĻˇā§āĻ āĻž āĻĨā§‡āĻ•ā§‡ āĻ¨āĻŋāĻ°ā§āĻŦāĻžāĻšāĻŋāĻ¤ āĻĻā§ƒāĻļā§āĻ¯ā§‡āĻ° āĻāĻ•āĻŸāĻŋ āĻĒāĻ°āĻŋāĻ•āĻ˛ā§āĻĒāĻŋāĻ¤ āĻŦāĻŋāĻŦāĻ°āĻŖāĨ¤

API āĻāĻ° āĻŽāĻžāĻ§ā§āĻ¯āĻŽā§‡ PowerShell āĻĨā§‡āĻ•ā§‡ Google āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°āĻ•āĻžāĻ°ā§€ āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°āĻž

  1. āĻĒā§āĻ°āĻĨāĻŽā§‡, āĻ†āĻŽāĻ°āĻž āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°āĻ•āĻžāĻ°ā§€āĻ•ā§‡ Google āĻ…ā§āĻ¯āĻžāĻ•āĻžāĻ‰āĻ¨ā§āĻŸ āĻĒā§āĻ°āĻŽāĻžāĻŖā§€āĻ•āĻ°āĻŖ āĻĒā§ƒāĻˇā§āĻ āĻžāĻ¯āĻŧ āĻĒāĻžāĻ āĻžāĻ‡, GET āĻĒā§āĻ¯āĻžāĻ°āĻžāĻŽāĻŋāĻŸāĻžāĻ°āĻ—ā§āĻ˛āĻŋ āĻ¨āĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āĻŸ āĻ•āĻ°ā§‡:
    • āĻ†āĻŦā§‡āĻĻāĻ¨ āĻ†āĻ‡āĻĄāĻŋ
    • āĻ¯ā§‡ āĻāĻ˛āĻžāĻ•āĻžāĻ¯āĻŧ āĻ…ā§āĻ¯āĻžāĻĒā§āĻ˛āĻŋāĻ•ā§‡āĻļāĻ¨ āĻ…ā§āĻ¯āĻžāĻ•ā§āĻ¸ā§‡āĻ¸ āĻĒā§āĻ°āĻ¯āĻŧā§‹āĻœāĻ¨
    • āĻĒāĻĻā§āĻ§āĻ¤āĻŋāĻŸāĻŋ āĻ¸āĻŽā§āĻĒā§‚āĻ°ā§āĻŖ āĻ•āĻ°āĻžāĻ° āĻĒāĻ°ā§‡ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°āĻ•āĻžāĻ°ā§€āĻ•ā§‡ āĻ¯ā§‡ āĻ āĻŋāĻ•āĻžāĻ¨āĻžāĻ¯āĻŧ āĻĒā§āĻ¨āĻƒāĻ¨āĻŋāĻ°ā§āĻĻā§‡āĻļāĻŋāĻ¤ āĻ•āĻ°āĻž āĻšāĻŦā§‡
    • āĻ¯ā§‡āĻ­āĻžāĻŦā§‡ āĻ†āĻŽāĻ°āĻž āĻŸā§‹āĻ•ā§‡āĻ¨ āĻ†āĻĒāĻĄā§‡āĻŸ āĻ•āĻ°āĻŦ
    • āĻ¨āĻŋāĻ°āĻžāĻĒāĻ¤ā§āĻ¤āĻž āĻ•ā§‹āĻĄ
    • āĻ¯āĻžāĻšāĻžāĻ‡āĻ•āĻ°āĻŖ āĻ•ā§‹āĻĄ āĻŸā§āĻ°āĻžāĻ¨ā§āĻ¸āĻŽāĻŋāĻļāĻ¨ āĻŦāĻŋāĻ¨ā§āĻ¯āĻžāĻ¸

  2. āĻ…āĻ¨ā§āĻŽā§‹āĻĻāĻ¨ āĻ¸āĻŽā§āĻĒāĻ¨ā§āĻ¨ āĻšāĻ“āĻ¯āĻŧāĻžāĻ° āĻĒāĻ°ā§‡, āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°āĻ•āĻžāĻ°ā§€āĻ•ā§‡ GET āĻĒā§āĻ¯āĻžāĻ°āĻžāĻŽāĻŋāĻŸāĻžāĻ° āĻĻā§āĻŦāĻžāĻ°āĻž āĻĒāĻžāĻ¸ āĻ•āĻ°āĻž āĻ¤ā§āĻ°ā§āĻŸāĻŋ āĻŦāĻž āĻ…āĻ¨ā§āĻŽā§‹āĻĻāĻ¨ā§‡āĻ° āĻ•ā§‹āĻĄ āĻ¸āĻš āĻĒā§āĻ°āĻĨāĻŽ āĻ…āĻ¨ā§āĻ°ā§‹āĻ§ā§‡ āĻ¨āĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āĻŸ āĻĒā§ƒāĻˇā§āĻ āĻžāĻ¯āĻŧ āĻĒā§āĻ¨āĻƒāĻ¨āĻŋāĻ°ā§āĻĻā§‡āĻļāĻŋāĻ¤ āĻ•āĻ°āĻž āĻšāĻŦā§‡
  3. āĻ…ā§āĻ¯āĻžāĻĒā§āĻ˛āĻŋāĻ•ā§‡āĻļāĻ¨ (āĻ¸ā§āĻ•ā§āĻ°āĻŋāĻĒā§āĻŸ) āĻāĻ‡ āĻĒā§āĻ¯āĻžāĻ°āĻžāĻŽāĻŋāĻŸāĻžāĻ°āĻ—ā§āĻ˛āĻŋ āĻ—ā§āĻ°āĻšāĻŖ āĻ•āĻ°āĻ¤ā§‡ āĻšāĻŦā§‡ āĻāĻŦāĻ‚, āĻ¯āĻĻāĻŋ āĻ•ā§‹āĻĄāĻŸāĻŋ āĻĒā§āĻ°āĻžāĻĒā§āĻ¤ āĻšāĻ¯āĻŧ, āĻŸā§‹āĻ•ā§‡āĻ¨āĻ—ā§āĻ˛āĻŋ āĻĒāĻžāĻ“āĻ¯āĻŧāĻžāĻ° āĻœāĻ¨ā§āĻ¯ āĻ¨āĻŋāĻŽā§āĻ¨āĻ˛āĻŋāĻ–āĻŋāĻ¤ āĻ…āĻ¨ā§āĻ°ā§‹āĻ§ āĻ•āĻ°ā§āĻ¨
  4. āĻ…āĻ¨ā§āĻ°ā§‹āĻ§āĻŸāĻŋ āĻ¸āĻ āĻŋāĻ• āĻšāĻ˛ā§‡, Google API āĻĢā§‡āĻ°āĻ¤ āĻĻā§‡āĻ¯āĻŧ:
    • āĻ…ā§āĻ¯āĻžāĻ•ā§āĻ¸ā§‡āĻ¸ āĻŸā§‹āĻ•ā§‡āĻ¨ āĻ¯āĻž āĻĻāĻŋāĻ¯āĻŧā§‡ āĻ†āĻŽāĻ°āĻž āĻ…āĻ¨ā§āĻ°ā§‹āĻ§ āĻ•āĻ°āĻ¤ā§‡ āĻĒāĻžāĻ°āĻŋ
    • āĻāĻ‡ āĻŸā§‹āĻ•ā§‡āĻ¨ā§‡āĻ° āĻŦā§ˆāĻ§āĻ¤āĻžāĻ° āĻ¸āĻŽāĻ¯āĻŧāĻ•āĻžāĻ˛
    • āĻ…ā§āĻ¯āĻžāĻ•ā§āĻ¸ā§‡āĻ¸ āĻŸā§‹āĻ•ā§‡āĻ¨ āĻ°āĻŋāĻĢā§āĻ°ā§‡āĻļ āĻ•āĻ°āĻ¤ā§‡ āĻ°āĻŋāĻĢā§āĻ°ā§‡āĻļ āĻŸā§‹āĻ•ā§‡āĻ¨ āĻĒā§āĻ°āĻ¯āĻŧā§‹āĻœāĻ¨āĨ¤

āĻĒā§āĻ°āĻĨāĻŽā§‡ āĻ†āĻĒāĻ¨āĻžāĻ•ā§‡ Google API āĻ•āĻ¨āĻ¸ā§‹āĻ˛ā§‡ āĻ¯ā§‡āĻ¤ā§‡ āĻšāĻŦā§‡: āĻļāĻ‚āĻ¸āĻžāĻĒāĻ¤ā§āĻ° - Google API āĻ•āĻ¨āĻ¸ā§‹āĻ˛, āĻĒāĻ›āĻ¨ā§āĻĻāĻ¸āĻ‡ āĻ…ā§āĻ¯āĻžāĻĒā§āĻ˛āĻŋāĻ•ā§‡āĻļāĻ¨ āĻ¨āĻŋāĻ°ā§āĻŦāĻžāĻšāĻ¨ āĻ•āĻ°ā§āĻ¨ āĻāĻŦāĻ‚ āĻļāĻ‚āĻ¸āĻžāĻĒāĻ¤ā§āĻ° āĻŦāĻŋāĻ­āĻžāĻ—ā§‡ āĻāĻ•āĻŸāĻŋ āĻ•ā§āĻ˛āĻžāĻ¯āĻŧā§‡āĻ¨ā§āĻŸ OAuth āĻļāĻ¨āĻžāĻ•ā§āĻ¤āĻ•āĻžāĻ°ā§€ āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°ā§āĻ¨āĨ¤ āĻ¸ā§‡āĻ–āĻžāĻ¨ā§‡ (āĻŦāĻž āĻĒāĻ°ā§‡, āĻ¤ā§ˆāĻ°āĻŋ āĻļāĻ¨āĻžāĻ•ā§āĻ¤āĻ•āĻžāĻ°ā§€āĻ° āĻŦā§ˆāĻļāĻŋāĻˇā§āĻŸā§āĻ¯āĻ—ā§āĻ˛āĻŋāĻ¤ā§‡) āĻ†āĻĒāĻ¨āĻžāĻ•ā§‡ āĻ¸ā§‡āĻ‡ āĻ āĻŋāĻ•āĻžāĻ¨āĻžāĻ—ā§āĻ˛āĻŋ āĻ¨āĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āĻŸ āĻ•āĻ°āĻ¤ā§‡ āĻšāĻŦā§‡ āĻ¯ā§‡āĻ–āĻžāĻ¨ā§‡ āĻĒā§āĻ¨āĻ°ā§āĻ¨āĻŋāĻ°ā§āĻĻā§‡āĻļ āĻ…āĻ¨ā§āĻŽā§‹āĻĻāĻŋāĻ¤āĨ¤ āĻ†āĻŽāĻžāĻĻā§‡āĻ° āĻ•ā§āĻˇā§‡āĻ¤ā§āĻ°ā§‡, āĻāĻ—ā§āĻ˛āĻŋ āĻŦāĻŋāĻ­āĻŋāĻ¨ā§āĻ¨ āĻĒā§‹āĻ°ā§āĻŸ āĻ¸āĻš āĻŦā§‡āĻļ āĻ•āĻ¯āĻŧā§‡āĻ•āĻŸāĻŋ āĻ˛ā§‹āĻ•āĻžāĻ˛āĻšā§‹āĻ¸ā§āĻŸ āĻāĻ¨ā§āĻŸā§āĻ°āĻŋ āĻšāĻŦā§‡ (āĻ¨ā§€āĻšā§‡ āĻĻā§‡āĻ–ā§āĻ¨)āĨ¤

āĻ¸ā§āĻ•ā§āĻ°āĻŋāĻĒā§āĻŸ āĻ…ā§āĻ¯āĻžāĻ˛āĻ—āĻ°āĻŋāĻĻāĻŽ āĻĒāĻĄāĻŧāĻž āĻ†āĻ°āĻ“ āĻ¸ā§āĻŦāĻŋāĻ§āĻžāĻœāĻ¨āĻ• āĻ•āĻ°āĻ¤ā§‡, āĻ†āĻĒāĻ¨āĻŋ āĻāĻ•āĻŸāĻŋ āĻĒā§ƒāĻĨāĻ• āĻĢāĻžāĻ‚āĻļāĻ¨ā§‡ āĻĒā§āĻ°āĻĨāĻŽ āĻĒāĻĻāĻ•ā§āĻˇā§‡āĻĒāĻ—ā§āĻ˛āĻŋ āĻĒā§āĻ°āĻĻāĻ°ā§āĻļāĻ¨ āĻ•āĻ°āĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡āĻ¨ āĻ¯āĻž āĻ…ā§āĻ¯āĻžāĻĒā§āĻ˛āĻŋāĻ•ā§‡āĻļāĻ¨ā§‡āĻ° āĻœāĻ¨ā§āĻ¯ āĻ…ā§āĻ¯āĻžāĻ•ā§āĻ¸ā§‡āĻ¸ āĻāĻŦāĻ‚ āĻ°āĻŋāĻĢā§āĻ°ā§‡āĻļ āĻŸā§‹āĻ•ā§‡āĻ¨āĻ—ā§āĻ˛āĻŋ āĻĢāĻŋāĻ°āĻŋāĻ¯āĻŧā§‡ āĻĻā§‡āĻŦā§‡:

$client_secret = 'Our Client Secret'
$client_id = 'Our Client ID'
function Get-GoogleAuthToken {
  if (-not [System.Net.HttpListener]::IsSupported) {
    "HttpListener is not supported."
    exit 1
  }
  $codeverifier = -join ((65..90) + (97..122) + (48..57) + 45 + 46 + 95 + 126 |Get-Random -Count 60| % {[char]$_})
  $hasher = new-object System.Security.Cryptography.SHA256Managed
  $hashByteArray = $hasher.ComputeHash([System.Text.Encoding]::UTF8.GetBytes($codeverifier))
  $base64 = ((([System.Convert]::ToBase64String($hashByteArray)).replace('=','')).replace('+','-')).replace('/','_')
  $ports = @(10600,15084,39700,42847,65387,32079)
  $port = $ports[(get-random -Minimum 0 -maximum 5)]
  Write-Host "Start browser..."
  Start-Process "https://accounts.google.com/o/oauth2/v2/auth?code_challenge_method=S256&code_challenge=$base64&access_type=offline&client_id=$client_id&redirect_uri=http://localhost:$port&response_type=code&scope=https://www.googleapis.com/auth/admin.directory.user https://www.googleapis.com/auth/admin.directory.group"
  $listener = New-Object System.Net.HttpListener
  $listener.Prefixes.Add("http://localhost:"+$port+'/')
  try {$listener.Start()} catch {
    "Unable to start listener."
    exit 1
  }
  while (($code -eq $null)) {
    $context = $listener.GetContext()
    Write-Host "Connection accepted" -f 'mag'
    $url = $context.Request.RawUrl
    $code = $url.split('?')[1].split('=')[1].split('&')[0]
    if ($url.split('?')[1].split('=')[0] -eq 'error') {
      Write-Host "Error!"$code -f 'red'
      $buffer = [System.Text.Encoding]::UTF8.GetBytes("Error!"+$code)
      $context.Response.ContentLength64 = $buffer.Length
      $context.Response.OutputStream.Write($buffer, 0, $buffer.Length)
      $context.Response.OutputStream.Close()
      $listener.Stop()
      exit 1
    }
    $buffer = [System.Text.Encoding]::UTF8.GetBytes("Now you can close this browser tab.")
    $context.Response.ContentLength64 = $buffer.Length
    $context.Response.OutputStream.Write($buffer, 0, $buffer.Length)
    $context.Response.OutputStream.Close()
    $listener.Stop()
  }
  Return Invoke-RestMethod -Method Post -Uri "https://www.googleapis.com/oauth2/v4/token" -Body @{
    code = $code
    client_id = $client_id
    client_secret = $client_secret
    redirect_uri = 'http://localhost:'+$port
    grant_type = 'authorization_code'
    code_verifier   = $codeverifier
  }
  $code = $null

āĻ†āĻŽāĻ°āĻž OAuth āĻ•ā§āĻ˛āĻžāĻ¯āĻŧā§‡āĻ¨ā§āĻŸ āĻļāĻ¨āĻžāĻ•ā§āĻ¤āĻ•āĻžāĻ°ā§€ āĻŦā§ˆāĻļāĻŋāĻˇā§āĻŸā§āĻ¯āĻ—ā§āĻ˛āĻŋāĻ¤ā§‡ āĻĒā§āĻ°āĻžāĻĒā§āĻ¤ āĻ•ā§āĻ˛āĻžāĻ¯āĻŧā§‡āĻ¨ā§āĻŸ āĻ†āĻ‡āĻĄāĻŋ āĻāĻŦāĻ‚ āĻ•ā§āĻ˛āĻžāĻ¯āĻŧā§‡āĻ¨ā§āĻŸ āĻ¸āĻŋāĻ•ā§āĻ°ā§‡āĻŸ āĻ¸ā§‡āĻŸ āĻ•āĻ°āĻŋ āĻāĻŦāĻ‚ āĻ•ā§‹āĻĄ āĻ¯āĻžāĻšāĻžāĻ‡āĻ•āĻžāĻ°ā§€ āĻšāĻ˛ 43 āĻĨā§‡āĻ•ā§‡ 128 āĻ…āĻ•ā§āĻˇāĻ°ā§‡āĻ° āĻāĻ•āĻŸāĻŋ āĻ¸ā§āĻŸā§āĻ°āĻŋāĻ‚ āĻ¯āĻž āĻ…āĻŦāĻļā§āĻ¯āĻ‡ āĻ…āĻ¸āĻ‚āĻ°āĻ•ā§āĻˇāĻŋāĻ¤ āĻ…āĻ•ā§āĻˇāĻ°āĻ—ā§āĻ˛āĻŋ āĻĨā§‡āĻ•ā§‡ āĻāĻ˛ā§‹āĻŽā§‡āĻ˛ā§‹āĻ­āĻžāĻŦā§‡ āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°āĻž āĻ‰āĻšāĻŋāĻ¤: [AZ] / [az] / [0-9 ] / "-" / "āĨ¤" / "_" / "~"āĨ¤

āĻāĻ‡ āĻ•ā§‹āĻĄ āĻ¤āĻžāĻ°āĻĒāĻ° āĻ†āĻŦāĻžāĻ° āĻĒā§āĻ°ā§‡āĻ°āĻŖ āĻ•āĻ°āĻž āĻšāĻŦā§‡. āĻāĻŸāĻŋ āĻāĻŽāĻ¨ āĻĻā§āĻ°ā§āĻŦāĻ˛āĻ¤āĻž āĻĻā§‚āĻ° āĻ•āĻ°ā§‡ āĻ¯ā§‡āĻ–āĻžāĻ¨ā§‡ āĻāĻ•āĻœāĻ¨ āĻ†āĻ•ā§āĻ°āĻŽāĻŖāĻ•āĻžāĻ°ā§€ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°āĻ•āĻžāĻ°ā§€āĻ° āĻ…āĻ¨ā§āĻŽā§‹āĻĻāĻ¨ā§‡āĻ° āĻĒāĻ°ā§‡ āĻāĻ•āĻŸāĻŋ āĻĒā§āĻ¨āĻƒāĻ¨āĻŋāĻ°ā§āĻĻā§‡āĻļ āĻšāĻŋāĻ¸āĻžāĻŦā§‡ āĻĢāĻŋāĻ°ā§‡ āĻ†āĻ¸āĻž āĻĒā§āĻ°āĻ¤āĻŋāĻ•ā§āĻ°āĻŋāĻ¯āĻŧāĻžāĻ•ā§‡ āĻŦāĻžāĻ§āĻž āĻĻāĻŋāĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡āĨ¤
āĻ†āĻĒāĻ¨āĻŋ āĻ¸ā§āĻĒāĻˇā§āĻŸ āĻĒāĻžāĻ ā§āĻ¯ā§‡ āĻŦāĻ°ā§āĻ¤āĻŽāĻžāĻ¨ āĻ…āĻ¨ā§āĻ°ā§‹āĻ§ā§‡ āĻāĻ•āĻŸāĻŋ āĻ•ā§‹āĻĄ āĻ¯āĻžāĻšāĻžāĻ‡āĻ•āĻžāĻ°ā§€ āĻĒāĻžāĻ āĻžāĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡āĻ¨ (āĻ¯āĻž āĻāĻŸāĻŋāĻ•ā§‡ āĻ…āĻ°ā§āĻĨāĻšā§€āĻ¨ āĻ•āĻ°ā§‡ āĻ¤ā§‹āĻ˛ā§‡ - āĻāĻŸāĻŋ āĻ•ā§‡āĻŦāĻ˛āĻŽāĻžāĻ¤ā§āĻ° āĻ¸ā§‡āĻ‡ āĻ¸āĻŋāĻ¸ā§āĻŸā§‡āĻŽāĻ—ā§āĻ˛āĻŋāĻ° āĻœāĻ¨ā§āĻ¯ āĻ‰āĻĒāĻ¯ā§āĻ•ā§āĻ¤ āĻ¯āĻž SHA256 āĻ¸āĻŽāĻ°ā§āĻĨāĻ¨ āĻ•āĻ°ā§‡ āĻ¨āĻž), āĻŦāĻž SHA256 āĻ…ā§āĻ¯āĻžāĻ˛āĻ—āĻ°āĻŋāĻĻāĻŽ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°ā§‡ āĻāĻ•āĻŸāĻŋ āĻšā§āĻ¯āĻžāĻļ āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°ā§‡, āĻ¯āĻž BASE64Url-āĻ āĻāĻ¨āĻ•ā§‹āĻĄ āĻ•āĻ°āĻž āĻ†āĻŦāĻļā§āĻ¯āĻ• (āĻ­āĻŋāĻ¨ā§āĻ¨ āĻŦā§‡āĻ¸ 64 āĻĨā§‡āĻ•ā§‡ āĻĻā§āĻŸāĻŋ āĻŸā§‡āĻŦāĻŋāĻ˛ āĻ…āĻ•ā§āĻˇāĻ° āĻĻā§āĻŦāĻžāĻ°āĻž) āĻāĻŦāĻ‚ āĻ…āĻ•ā§āĻˇāĻ° āĻ˛āĻžāĻ‡āĻ¨ā§‡āĻ° āĻļā§‡āĻˇāĻ—ā§āĻ˛āĻŋ āĻ¸āĻ°āĻžāĻ¨ā§‹ āĻšāĻšā§āĻ›ā§‡: =āĨ¤

āĻāĻ° āĻĒāĻ°ā§‡, āĻ…āĻ¨ā§āĻŽā§‹āĻĻāĻ¨ā§‡āĻ° āĻĒāĻ°ā§‡ āĻāĻ•āĻŸāĻŋ āĻĒā§āĻ°āĻ¤āĻŋāĻ•ā§āĻ°āĻŋāĻ¯āĻŧāĻž āĻĒāĻžāĻ“āĻ¯āĻŧāĻžāĻ° āĻœāĻ¨ā§āĻ¯ āĻ†āĻŽāĻžāĻĻā§‡āĻ° āĻ¸ā§āĻĨāĻžāĻ¨ā§€āĻ¯āĻŧ āĻŽā§‡āĻļāĻŋāĻ¨ā§‡ http āĻļā§‹āĻ¨āĻž āĻļā§āĻ°ā§ āĻ•āĻ°āĻ¤ā§‡ āĻšāĻŦā§‡, āĻ¯āĻž āĻāĻ•āĻŸāĻŋ āĻĒā§āĻ¨āĻƒāĻ¨āĻŋāĻ°ā§āĻĻā§‡āĻļ āĻšāĻŋāĻ¸āĻžāĻŦā§‡ āĻĢāĻŋāĻ°ā§‡ āĻ†āĻ¸āĻŦā§‡āĨ¤

āĻĒā§āĻ°āĻļāĻžāĻ¸āĻ¨āĻŋāĻ• āĻ•āĻžāĻœāĻ—ā§āĻ˛āĻŋ āĻāĻ•āĻŸāĻŋ āĻŦāĻŋāĻļā§‡āĻˇ āĻ¸āĻžāĻ°ā§āĻ­āĻžāĻ°ā§‡ āĻ¸āĻžā§āĻšāĻžāĻ˛āĻŋāĻ¤ āĻšāĻ¯āĻŧ, āĻ†āĻŽāĻ°āĻž āĻ¸āĻŽā§āĻ­āĻžāĻŦāĻ¨āĻžāĻ•ā§‡ āĻ‰āĻĄāĻŧāĻŋāĻ¯āĻŧā§‡ āĻĻāĻŋāĻ¤ā§‡ āĻĒāĻžāĻ°āĻŋ āĻ¨āĻž āĻ¯ā§‡ āĻāĻ•āĻžāĻ§āĻŋāĻ• āĻĒā§āĻ°āĻļāĻžāĻ¸āĻ• āĻāĻ•āĻ‡ āĻ¸āĻŽāĻ¯āĻŧā§‡ āĻ¸ā§āĻ•ā§āĻ°āĻŋāĻĒā§āĻŸāĻŸāĻŋ āĻšāĻžāĻ˛āĻžāĻŦā§‡āĻ¨, āĻ¤āĻžāĻ‡ āĻāĻŸāĻŋ āĻŦāĻ°ā§āĻ¤āĻŽāĻžāĻ¨ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°āĻ•āĻžāĻ°ā§€āĻ° āĻœāĻ¨ā§āĻ¯ āĻāĻ˛ā§‹āĻŽā§‡āĻ˛ā§‹āĻ­āĻžāĻŦā§‡ āĻāĻ•āĻŸāĻŋ āĻĒā§‹āĻ°ā§āĻŸ āĻ¨āĻŋāĻ°ā§āĻŦāĻžāĻšāĻ¨ āĻ•āĻ°āĻŦā§‡, āĻ¤āĻŦā§‡ āĻ†āĻŽāĻŋ āĻĒā§‚āĻ°ā§āĻŦāĻ¨āĻŋāĻ°ā§āĻ§āĻžāĻ°āĻŋāĻ¤ āĻĒā§‹āĻ°ā§āĻŸāĻ—ā§āĻ˛āĻŋ āĻ¨āĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āĻŸ āĻ•āĻ°ā§‡āĻ›āĻŋ āĻ•āĻžāĻ°āĻŖ āĻāĻ—ā§āĻ˛āĻŋāĻ•ā§‡ āĻ…āĻŦāĻļā§āĻ¯āĻ‡ API āĻ•āĻ¨āĻ¸ā§‹āĻ˛ā§‡ āĻŦāĻŋāĻļā§āĻŦāĻ¸ā§āĻ¤ āĻšāĻŋāĻ¸āĻžāĻŦā§‡ āĻ¯ā§āĻ•ā§āĻ¤ āĻ•āĻ°āĻ¤ā§‡ āĻšāĻŦā§‡āĨ¤

āĻ…ā§āĻ¯āĻžāĻ•ā§āĻ¸ā§‡āĻ¸_āĻŸāĻžāĻ‡āĻĒ=āĻ…āĻĢāĻ˛āĻžāĻ‡āĻ¨ āĻāĻ° āĻŽāĻžāĻ¨ā§‡ āĻšāĻ˛ āĻ¯ā§‡ āĻ…ā§āĻ¯āĻžāĻĒā§āĻ˛āĻŋāĻ•ā§‡āĻļāĻ¨āĻŸāĻŋ āĻŦā§āĻ°āĻžāĻ‰āĻœāĻžāĻ°ā§‡āĻ° āĻ¸āĻžāĻĨā§‡ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°āĻ•āĻžāĻ°ā§€āĻ° āĻŽāĻŋāĻĨāĻ¸ā§āĻ•ā§āĻ°āĻŋāĻ¯āĻŧāĻž āĻ›āĻžāĻĄāĻŧāĻžāĻ‡ āĻāĻ•āĻŸāĻŋ āĻŽā§‡āĻ¯āĻŧāĻžāĻĻā§‹āĻ¤ā§āĻ¤ā§€āĻ°ā§āĻŖ āĻŸā§‹āĻ•ā§‡āĻ¨ āĻ†āĻĒāĻĄā§‡āĻŸ āĻ•āĻ°āĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡,
āĻĒā§āĻ°āĻ¤āĻŋāĻ•ā§āĻ°āĻŋāĻ¯āĻŧāĻž_āĻĒā§āĻ°āĻ•āĻžāĻ° = āĻ•ā§‹āĻĄ āĻ•ā§‹āĻĄāĻŸāĻŋ āĻ•ā§€āĻ­āĻžāĻŦā§‡ āĻĢā§‡āĻ°āĻ¤ āĻĻā§‡āĻ“āĻ¯āĻŧāĻž āĻšāĻŦā§‡ āĻ¤āĻžāĻ° āĻŦāĻŋāĻ¨ā§āĻ¯āĻžāĻ¸ āĻ¸ā§‡āĻŸ āĻ•āĻ°ā§‡ (āĻĒā§āĻ°āĻžāĻ¨ā§‹ āĻ…āĻ¨ā§āĻŽā§‹āĻĻāĻ¨ āĻĒāĻĻā§āĻ§āĻ¤āĻŋāĻ° āĻāĻ•āĻŸāĻŋ āĻ°ā§‡āĻĢāĻžāĻ°ā§‡āĻ¨ā§āĻ¸, āĻ¯āĻ–āĻ¨ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°āĻ•āĻžāĻ°ā§€ āĻŦā§āĻ°āĻžāĻ‰āĻœāĻžāĻ° āĻĨā§‡āĻ•ā§‡ āĻ•ā§‹āĻĄāĻŸāĻŋ āĻ¸ā§āĻ•ā§āĻ°āĻŋāĻĒā§āĻŸā§‡ āĻ…āĻ¨ā§āĻ˛āĻŋāĻĒāĻŋ āĻ•āĻ°ā§‡),
āĻ¸ā§āĻ¯ā§‹āĻ— āĻ¸ā§āĻ¯ā§‹āĻ— āĻāĻŦāĻ‚ āĻ…ā§āĻ¯āĻžāĻ•ā§āĻ¸ā§‡āĻ¸ā§‡āĻ° āĻ§āĻ°āĻ¨ āĻ¨āĻŋāĻ°ā§āĻĻā§‡āĻļ āĻ•āĻ°ā§‡āĨ¤ āĻāĻ—ā§āĻ˛āĻŋ āĻ…āĻŦāĻļā§āĻ¯āĻ‡ āĻ¸ā§āĻĒā§‡āĻ¸ āĻŦāĻž %20 (āĻ‡āĻ‰āĻ†āĻ°āĻāĻ˛ āĻāĻ¨āĻ•ā§‹āĻĄāĻŋāĻ‚ āĻ…āĻ¨ā§āĻ¯āĻžāĻ¯āĻŧā§€) āĻĻā§āĻŦāĻžāĻ°āĻž āĻĒā§ƒāĻĨāĻ• āĻ•āĻ°āĻž āĻ‰āĻšāĻŋāĻ¤āĨ¤ āĻĒā§āĻ°āĻ•āĻžāĻ° āĻ¸āĻš āĻ…ā§āĻ¯āĻžāĻ•ā§āĻ¸ā§‡āĻ¸ āĻāĻ˛āĻžāĻ•āĻžāĻ° āĻāĻ•āĻŸāĻŋ āĻ¤āĻžāĻ˛āĻŋāĻ•āĻž āĻāĻ–āĻžāĻ¨ā§‡ āĻĻā§‡āĻ–āĻž āĻ¯ā§‡āĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡: Google API-āĻāĻ° āĻœāĻ¨ā§āĻ¯ OAuth 2.0 āĻ¸ā§āĻ•ā§‹āĻĒ.

āĻ…āĻ¨ā§āĻŽā§‹āĻĻāĻ¨ āĻ•ā§‹āĻĄ āĻĒāĻžāĻ“āĻ¯āĻŧāĻžāĻ° āĻĒāĻ°ā§‡, āĻ…ā§āĻ¯āĻžāĻĒā§āĻ˛āĻŋāĻ•ā§‡āĻļāĻ¨āĻŸāĻŋ āĻŦā§āĻ°āĻžāĻ‰āĻœāĻžāĻ°ā§‡ āĻāĻ•āĻŸāĻŋ āĻ˜āĻ¨āĻŋāĻˇā§āĻ  āĻŦāĻžāĻ°ā§āĻ¤āĻž āĻĢā§‡āĻ°āĻ¤ āĻĻā§‡āĻŦā§‡, āĻĒā§‹āĻ°ā§āĻŸā§‡ āĻļā§‹āĻ¨āĻž āĻŦāĻ¨ā§āĻ§ āĻ•āĻ°āĻŦā§‡ āĻāĻŦāĻ‚ āĻŸā§‹āĻ•ā§‡āĻ¨ āĻĒāĻžāĻ“āĻ¯āĻŧāĻžāĻ° āĻœāĻ¨ā§āĻ¯ āĻāĻ•āĻŸāĻŋ POST āĻ…āĻ¨ā§āĻ°ā§‹āĻ§ āĻĒāĻžāĻ āĻžāĻŦā§‡āĨ¤ āĻ†āĻŽāĻ°āĻž āĻāĻ¤ā§‡ āĻĒā§‚āĻ°ā§āĻŦā§‡ āĻ¨āĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āĻŸ āĻ•āĻ°āĻž āĻ†āĻ‡āĻĄāĻŋ āĻāĻŦāĻ‚ āĻ•āĻ¨āĻ¸ā§‹āĻ˛ API āĻĨā§‡āĻ•ā§‡ āĻ—ā§‹āĻĒāĻ¨ā§€āĻ¯āĻŧāĻ¤āĻž āĻ¨āĻŋāĻ°ā§āĻĻā§‡āĻļ āĻ•āĻ°āĻŋ, āĻ¯ā§‡ āĻ āĻŋāĻ•āĻžāĻ¨āĻžāĻ¯āĻŧ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°āĻ•āĻžāĻ°ā§€āĻ•ā§‡ āĻĒā§āĻ¨āĻƒāĻ¨āĻŋāĻ°ā§āĻĻā§‡āĻļāĻŋāĻ¤ āĻ•āĻ°āĻž āĻšāĻŦā§‡ āĻāĻŦāĻ‚ āĻĒā§āĻ°ā§‹āĻŸā§‹āĻ•āĻ˛ āĻ¸ā§āĻĒā§‡āĻ¸āĻŋāĻĢāĻŋāĻ•ā§‡āĻļāĻ¨ āĻ…āĻ¨ā§āĻ¯āĻžāĻ¯āĻŧā§€ grant_typeāĨ¤

āĻĒā§āĻ°āĻ¤āĻŋāĻ•ā§āĻ°āĻŋāĻ¯āĻŧāĻž āĻšāĻŋāĻ¸āĻžāĻŦā§‡, āĻ†āĻŽāĻ°āĻž āĻāĻ•āĻŸāĻŋ āĻ…ā§āĻ¯āĻžāĻ•ā§āĻ¸ā§‡āĻ¸ āĻŸā§‹āĻ•ā§‡āĻ¨, āĻ¸ā§‡āĻ•ā§‡āĻ¨ā§āĻĄā§‡ āĻāĻ° āĻŽā§‡āĻ¯āĻŧāĻžāĻĻāĻ•āĻžāĻ˛ āĻāĻŦāĻ‚ āĻāĻ•āĻŸāĻŋ āĻ°āĻŋāĻĢā§āĻ°ā§‡āĻļ āĻŸā§‹āĻ•ā§‡āĻ¨ āĻĒāĻžāĻŦ, āĻ¯āĻžāĻ° āĻ¸āĻžāĻšāĻžāĻ¯ā§āĻ¯ā§‡ āĻ†āĻŽāĻ°āĻž āĻ…ā§āĻ¯āĻžāĻ•ā§āĻ¸ā§‡āĻ¸ āĻŸā§‹āĻ•ā§‡āĻ¨ āĻ†āĻĒāĻĄā§‡āĻŸ āĻ•āĻ°āĻ¤ā§‡ āĻĒāĻžāĻ°āĻŋāĨ¤

āĻ…ā§āĻ¯āĻžāĻĒā§āĻ˛āĻŋāĻ•ā§‡āĻļāĻ¨āĻŸāĻŋāĻ•ā§‡ āĻ…āĻŦāĻļā§āĻ¯āĻ‡ āĻāĻ•āĻŸāĻŋ āĻĻā§€āĻ°ā§āĻ˜ āĻļā§‡āĻ˛āĻĢ āĻ˛āĻžāĻ‡āĻĢ āĻ¸āĻš āĻāĻ•āĻŸāĻŋ āĻ¨āĻŋāĻ°āĻžāĻĒāĻĻ āĻ¸ā§āĻĨāĻžāĻ¨ā§‡ āĻŸā§‹āĻ•ā§‡āĻ¨ āĻ¸āĻ‚āĻ°āĻ•ā§āĻˇāĻŖ āĻ•āĻ°āĻ¤ā§‡ āĻšāĻŦā§‡, āĻ¤āĻžāĻ‡ āĻ¯āĻ¤āĻ•ā§āĻˇāĻŖ āĻ¨āĻž āĻ†āĻŽāĻ°āĻž āĻĒā§āĻ°āĻžāĻĒā§āĻ¤ āĻ…ā§āĻ¯āĻžāĻ•ā§āĻ¸ā§‡āĻ¸ āĻĒā§āĻ°āĻ¤ā§āĻ¯āĻžāĻšāĻžāĻ° āĻ•āĻ°āĻŋ, āĻ…ā§āĻ¯āĻžāĻĒā§āĻ˛āĻŋāĻ•ā§‡āĻļāĻ¨āĻŸāĻŋ āĻ°āĻŋāĻĢā§āĻ°ā§‡āĻļ āĻŸā§‹āĻ•ā§‡āĻ¨āĻŸāĻŋ āĻĢā§‡āĻ°āĻ¤ āĻĻā§‡āĻŦā§‡ āĻ¨āĻžāĨ¤ āĻļā§‡āĻˇā§‡, āĻ†āĻŽāĻŋ āĻŸā§‹āĻ•ā§‡āĻ¨ āĻĒā§āĻ°āĻ¤ā§āĻ¯āĻžāĻšāĻžāĻ° āĻ•āĻ°āĻžāĻ° āĻœāĻ¨ā§āĻ¯ āĻāĻ•āĻŸāĻŋ āĻ…āĻ¨ā§āĻ°ā§‹āĻ§ āĻ¯ā§‹āĻ— āĻ•āĻ°ā§‡āĻ›āĻŋ; āĻ¯āĻĻāĻŋ āĻ…ā§āĻ¯āĻžāĻĒā§āĻ˛āĻŋāĻ•ā§‡āĻļāĻ¨āĻŸāĻŋ āĻ¸āĻĢāĻ˛āĻ­āĻžāĻŦā§‡ āĻ¸āĻŽā§āĻĒāĻ¨ā§āĻ¨ āĻ¨āĻž āĻšāĻ¯āĻŧ āĻāĻŦāĻ‚ āĻ°āĻŋāĻĢā§āĻ°ā§‡āĻļ āĻŸā§‹āĻ•ā§‡āĻ¨āĻŸāĻŋ āĻĢā§‡āĻ°āĻ¤ āĻ¨āĻž āĻĻā§‡āĻ“āĻ¯āĻŧāĻž āĻšāĻ¯āĻŧ, āĻ¤āĻŦā§‡ āĻāĻŸāĻŋ āĻ†āĻŦāĻžāĻ° āĻĒāĻĻā§āĻ§āĻ¤āĻŋ āĻļā§āĻ°ā§ āĻ•āĻ°āĻŦā§‡ (āĻ†āĻŽāĻ°āĻž āĻŸāĻžāĻ°ā§āĻŽāĻŋāĻ¨āĻžāĻ˛ā§‡ āĻ¸ā§āĻĨāĻžāĻ¨ā§€āĻ¯āĻŧāĻ­āĻžāĻŦā§‡ āĻŸā§‹āĻ•ā§‡āĻ¨ āĻ¸āĻ‚āĻ°āĻ•ā§āĻˇāĻŖ āĻ•āĻ°āĻž āĻ…āĻ¨āĻŋāĻ°āĻžāĻĒāĻĻ āĻŦāĻ˛ā§‡ āĻŽāĻ¨ā§‡ āĻ•āĻ°ā§‡āĻ›āĻŋ, āĻāĻŦāĻ‚ āĻ†āĻŽāĻ°āĻž āĻ¤āĻž āĻ•āĻ°āĻŋ āĻ¨āĻžāĨ¤ āĻ•ā§āĻ°āĻŋāĻĒā§āĻŸā§‹āĻ—ā§āĻ°āĻžāĻĢāĻŋ āĻĻāĻŋāĻ¯āĻŧā§‡ āĻœāĻŋāĻ¨āĻŋāĻ¸āĻ—ā§āĻ˛āĻŋāĻ•ā§‡ āĻœāĻŸāĻŋāĻ˛ āĻ•āĻ°āĻ¤ā§‡ āĻšāĻžāĻ‡ āĻ¨āĻž āĻŦāĻž āĻ˜āĻ¨ āĻ˜āĻ¨ āĻŦā§āĻ°āĻžāĻ‰āĻœāĻžāĻ° āĻ–ā§āĻ˛āĻ¤ā§‡ āĻšāĻžāĻ‡ āĻ¨āĻž)āĨ¤

do {
  $token_result = Get-GoogleAuthToken
  $token = $token_result.access_token
  if ($token_result.refresh_token -eq $null) {
    Write-Host ("Session is not destroyed. Revoking token...")
    Invoke-WebRequest -Uri ("https://accounts.google.com/o/oauth2/revoke?token="+$token)
  }
} while ($token_result.refresh_token -eq $null)
$refresh_token = $token_result.refresh_token
$minute = ([int]("{0:mm}" -f ([timespan]::fromseconds($token_result.expires_in))))+((Get-date).Minute)-2
if ($minute -lt 0) {$minute += 60}
elseif ($minute -gt 59) {$minute -=60}
$token_expire = @{
  hour = ([int]("{0:hh}" -f ([timespan]::fromseconds($token_result.expires_in))))+((Get-date).Hour)
  minute = $minute
}

āĻ†āĻĒāĻ¨āĻŋ āĻ‡āĻ¤āĻŋāĻŽāĻ§ā§āĻ¯ā§‡āĻ‡ āĻ˛āĻ•ā§āĻˇā§āĻ¯ āĻ•āĻ°ā§‡āĻ›ā§‡āĻ¨, āĻāĻ•āĻŸāĻŋ āĻŸā§‹āĻ•ā§‡āĻ¨ āĻĒā§āĻ°āĻ¤ā§āĻ¯āĻžāĻšāĻžāĻ° āĻ•āĻ°āĻžāĻ° āĻ¸āĻŽāĻ¯āĻŧ, Invoke-WebRequest āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻž āĻšāĻ¯āĻŧāĨ¤ Invoke-RestMethod āĻāĻ° āĻŦāĻŋāĻĒāĻ°ā§€āĻ¤ā§‡, āĻāĻŸāĻŋ āĻāĻ•āĻŸāĻŋ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°āĻ¯ā§‹āĻ—ā§āĻ¯ āĻŦāĻŋāĻ¨ā§āĻ¯āĻžāĻ¸ā§‡ āĻĒā§āĻ°āĻžāĻĒā§āĻ¤ āĻĄā§‡āĻŸāĻž āĻĢā§‡āĻ°āĻ¤ āĻĻā§‡āĻ¯āĻŧ āĻ¨āĻž āĻāĻŦāĻ‚ āĻ…āĻ¨ā§āĻ°ā§‹āĻ§ā§‡āĻ° āĻ¸ā§āĻĨāĻŋāĻ¤āĻŋ āĻĻā§‡āĻ–āĻžāĻ¯āĻŧāĨ¤

āĻāĻ°āĻĒāĻ°ā§‡, āĻ¸ā§āĻ•ā§āĻ°āĻŋāĻĒā§āĻŸāĻŸāĻŋ āĻ†āĻĒāĻ¨āĻžāĻ•ā§‡ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°āĻ•āĻžāĻ°ā§€āĻ° āĻĒā§āĻ°āĻĨāĻŽ āĻāĻŦāĻ‚ āĻļā§‡āĻˇ āĻ¨āĻžāĻŽ āĻ˛āĻŋāĻ–āĻ¤ā§‡ āĻŦāĻ˛ā§‡, āĻāĻ•āĻŸāĻŋ āĻ˛āĻ—āĻ‡āĻ¨ + āĻ‡āĻŽā§‡āĻ˛ āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°ā§‡āĨ¤

āĻ…āĻ¨ā§āĻ°ā§‹āĻ§

āĻĒāĻ°āĻŦāĻ°ā§āĻ¤ā§€ āĻ…āĻ¨ā§āĻ°ā§‹āĻ§āĻ—ā§āĻ˛āĻŋ āĻš'āĻ˛ - āĻĒā§āĻ°āĻĨāĻŽāĻ¤, āĻ†āĻĒāĻ¨āĻžāĻ•ā§‡ āĻāĻ•āĻŸāĻŋ āĻ¨āĻ¤ā§āĻ¨ āĻ¤ā§ˆāĻ°āĻŋ āĻŦāĻž āĻŦāĻ°ā§āĻ¤āĻŽāĻžāĻ¨āĻŸāĻŋ āĻ¸āĻ•ā§āĻˇāĻŽ āĻ•āĻ°āĻžāĻ° āĻ¸āĻŋāĻĻā§āĻ§āĻžāĻ¨ā§āĻ¤ āĻ¨ā§‡āĻ“āĻ¯āĻŧāĻžāĻ° āĻœāĻ¨ā§āĻ¯ āĻāĻ•āĻ‡ āĻ˛āĻ—āĻ‡āĻ¨ āĻ¸āĻš āĻ•ā§‹āĻ¨āĻ“ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°āĻ•āĻžāĻ°ā§€ āĻ‡āĻ¤āĻŋāĻŽāĻ§ā§āĻ¯ā§‡āĻ‡ āĻŦāĻŋāĻĻā§āĻ¯āĻŽāĻžāĻ¨ āĻ•āĻŋāĻ¨āĻž āĻ¤āĻž āĻĒāĻ°ā§€āĻ•ā§āĻˇāĻž āĻ•āĻ°āĻ¤ā§‡ āĻšāĻŦā§‡ā§ˇ

āĻ†āĻŽāĻŋ āĻ¸ā§āĻ‡āĻš āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°ā§‡ āĻāĻ•āĻŸāĻŋ āĻ¨āĻŋāĻ°ā§āĻŦāĻžāĻšāĻ¨ āĻ¸āĻš āĻāĻ•āĻŸāĻŋ āĻĢāĻžāĻ‚āĻļāĻ¨ā§‡āĻ° āĻŦāĻŋāĻ¨ā§āĻ¯āĻžāĻ¸ā§‡ āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻ…āĻ¨ā§āĻ°ā§‹āĻ§ āĻŦāĻžāĻ¸ā§āĻ¤āĻŦāĻžāĻ¯āĻŧāĻ¨ āĻ•āĻ°āĻžāĻ° āĻ¸āĻŋāĻĻā§āĻ§āĻžāĻ¨ā§āĻ¤ āĻ¨āĻŋāĻ¯āĻŧā§‡āĻ›āĻŋ:

function GoogleQuery {
  param (
    $type,
    $query
  )
  switch ($type) {
    "SearchAccount" {
      Return Invoke-RestMethod -Method Get -Uri "https://www.googleapis.com/admin/directory/v1/users" -Headers @{Authorization = "Bearer "+(Get-GoogleToken)} -Body @{
        domain = 'rocketguys.com'
        query  = "email:$query"
      }
    }
    "UpdateAccount" {
      $body = @{
        name  = @{
          givenName = $query['givenName']
          familyName = $query['familyName']
        }
        suspended = 'false'
        password = $query['password']
        changePasswordAtNextLogin = 'true'
        phones = @(@{
          primary = 'true'
          value = $query['phone']
          type = "mobile"
        })
        orgUnitPath = $query['orgunit']
      }
      Return Invoke-RestMethod -Method Put -Uri ("https://www.googleapis.com/admin/directory/v1/users/"+$query['email']) -Headers @{Authorization = "Bearer "+(Get-GoogleToken)} -Body (ConvertTo-Json $body) -ContentType 'application/json; charset=utf-8'
    }
    
    "CreateAccount" {
      $body = @{
        primaryEmail = $query['email']
        name  = @{
          givenName = $query['givenName']
          familyName = $query['familyName']
        }
        suspended = 'false'
        password = $query['password']
        changePasswordAtNextLogin = 'true'
        phones = @(@{
          primary = 'true'
          value = $query['phone']
          type = "mobile"
        })
        orgUnitPath = $query['orgunit']
      }
      Return Invoke-RestMethod -Method Post -Uri "https://www.googleapis.com/admin/directory/v1/users" -Headers @{Authorization = "Bearer "+(Get-GoogleToken)} -Body (ConvertTo-Json $body) -ContentType 'application/json; charset=utf-8'
    }
    "AddMember" {
      $body = @{
        userKey = $query['email']
      }
      $ifrequest = Invoke-RestMethod -Method Get -Uri "https://www.googleapis.com/admin/directory/v1/groups" -Headers @{Authorization = "Bearer "+(Get-GoogleToken)} -Body $body
      $array = @()
      foreach ($group in $ifrequest.groups) {$array += $group.email}
      if ($array -notcontains $query['groupkey']) {
        $body = @{
          email = $query['email']
          role = "MEMBER"
        }
        Return Invoke-RestMethod -Method Post -Uri ("https://www.googleapis.com/admin/directory/v1/groups/"+$query['groupkey']+"/members") -Headers @{Authorization = "Bearer "+(Get-GoogleToken)} -Body (ConvertTo-Json $body) -ContentType 'application/json; charset=utf-8'
      } else {
        Return ($query['email']+" now is a member of "+$query['groupkey'])
      }
    }
  }
}

āĻĒā§āĻ°āĻ¤āĻŋāĻŸāĻŋ āĻ…āĻ¨ā§āĻ°ā§‹āĻ§ā§‡, āĻ†āĻĒāĻ¨āĻžāĻ•ā§‡ āĻāĻ•āĻŸāĻŋ āĻ…āĻ¨ā§āĻŽā§‹āĻĻāĻ¨ āĻļāĻŋāĻ°ā§‹āĻ¨āĻžāĻŽ āĻĒāĻžāĻ āĻžāĻ¤ā§‡ āĻšāĻŦā§‡ āĻ¯āĻžāĻ¤ā§‡ āĻŸā§‹āĻ•ā§‡āĻ¨ā§‡āĻ° āĻ§āĻ°āĻ¨ āĻāĻŦāĻ‚ āĻ…ā§āĻ¯āĻžāĻ•ā§āĻ¸ā§‡āĻ¸ āĻŸā§‹āĻ•ā§‡āĻ¨ āĻĨāĻžāĻ•ā§‡āĨ¤ āĻŦāĻ°ā§āĻ¤āĻŽāĻžāĻ¨ā§‡, āĻŸā§‹āĻ•ā§‡āĻ¨ āĻŸāĻžāĻ‡āĻĒ āĻ¸āĻŦāĻ¸āĻŽāĻ¯āĻŧ Bearer āĻšāĻ¯āĻŧāĨ¤ āĻ•āĻžāĻ°āĻŖ āĻ†āĻŽāĻžāĻĻā§‡āĻ° āĻšā§‡āĻ• āĻ•āĻ°āĻ¤ā§‡ āĻšāĻŦā§‡ āĻ¯ā§‡ āĻŸā§‹āĻ•ā§‡āĻ¨ā§‡āĻ° āĻŽā§‡āĻ¯āĻŧāĻžāĻĻ āĻļā§‡āĻˇ āĻšāĻ¯āĻŧāĻ¨āĻŋ āĻāĻŦāĻ‚ āĻāĻŸāĻŋ āĻœāĻžāĻ°āĻŋ āĻ•āĻ°āĻžāĻ° āĻŽā§āĻšā§āĻ°ā§āĻ¤ āĻĨā§‡āĻ•ā§‡ āĻāĻ• āĻ˜āĻ¨ā§āĻŸāĻž āĻĒāĻ°ā§‡ āĻ†āĻĒāĻĄā§‡āĻŸ āĻ•āĻ°ā§āĻ¨, āĻ†āĻŽāĻŋ āĻ…āĻ¨ā§āĻ¯ āĻāĻ•āĻŸāĻŋ āĻĢāĻžāĻ‚āĻļāĻ¨ā§‡āĻ° āĻœāĻ¨ā§āĻ¯ āĻāĻ•āĻŸāĻŋ āĻ…āĻ¨ā§āĻ°ā§‹āĻ§ āĻ‰āĻ˛ā§āĻ˛ā§‡āĻ– āĻ•āĻ°ā§‡āĻ›āĻŋ āĻ¯āĻž āĻāĻ•āĻŸāĻŋ āĻ…ā§āĻ¯āĻžāĻ•ā§āĻ¸ā§‡āĻ¸ āĻŸā§‹āĻ•ā§‡āĻ¨ āĻĢā§‡āĻ°āĻ¤ āĻĻā§‡āĻ¯āĻŧāĨ¤ āĻĒā§āĻ°āĻĨāĻŽ āĻ…ā§āĻ¯āĻžāĻ•ā§āĻ¸ā§‡āĻ¸ āĻŸā§‹āĻ•ā§‡āĻ¨ āĻĒāĻžāĻ“āĻ¯āĻŧāĻžāĻ° āĻ¸āĻŽāĻ¯āĻŧ āĻ•ā§‹āĻĄā§‡āĻ° āĻāĻ•āĻ‡ āĻ…āĻ‚āĻļ āĻ¸ā§āĻ•ā§āĻ°āĻŋāĻĒā§āĻŸā§‡āĻ° āĻļā§āĻ°ā§āĻ¤ā§‡ āĻĨāĻžāĻ•ā§‡:

function Get-GoogleToken {
  if (((Get-date).Hour -gt $token_expire.hour) -or (((Get-date).Hour -ge $token_expire.hour) -and ((Get-date).Minute -gt $token_expire.minute))) {
  Write-Host "Token Expired. Refreshing..."
    $request = (Invoke-RestMethod -Method Post -Uri "https://www.googleapis.com/oauth2/v4/token" -ContentType 'application/x-www-form-urlencoded' -Body @{
      client_id = $client_id
      client_secret = $client_secret
      refresh_token = $refresh_token
      grant_type = 'refresh_token'
    })
    $token = $request.access_token
    $minute = ([int]("{0:mm}" -f ([timespan]::fromseconds($request.expires_in))))+((Get-date).Minute)-2
    if ($minute -lt 0) {$minute += 60}
    elseif ($minute -gt 59) {$minute -=60}
    $script:token_expire = @{
      hour = ([int]("{0:hh}" -f ([timespan]::fromseconds($request.expires_in))))+((Get-date).Hour)
      minute = $minute
    }
  }
  return $token
}

āĻ…āĻ¸ā§āĻ¤āĻŋāĻ¤ā§āĻŦā§‡āĻ° āĻœāĻ¨ā§āĻ¯ āĻ˛āĻ—āĻ‡āĻ¨ āĻĒāĻ°ā§€āĻ•ā§āĻˇāĻž āĻ•āĻ°āĻž āĻšāĻšā§āĻ›ā§‡:

function Check_Google {
  $query = (GoogleQuery 'SearchAccount' $username)
  if ($query.users -ne $null) {
    $user = $query.users[0]
    Write-Host $user.name.fullName' - '$user.PrimaryEmail' - suspended: '$user.Suspended
    $GAresult = $user
  }
  if ($GAresult) {
      $return = $GAresult
  } else {$return = 'gg'}
  return $return
}

āĻ‡āĻŽā§‡āĻ˛:$query āĻ…āĻ¨ā§āĻ°ā§‹āĻ§āĻŸāĻŋ āĻāĻĒāĻŋāĻ†āĻ‡āĻ•ā§‡ āĻ‰āĻĒāĻ¨āĻžāĻŽ āĻ¸āĻš āĻ āĻŋāĻ• āĻ¸ā§‡āĻ‡ āĻ‡āĻŽā§‡āĻ˛ āĻ¸āĻš āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°āĻ•āĻžāĻ°ā§€āĻ° āĻ¸āĻ¨ā§āĻ§āĻžāĻ¨ āĻ•āĻ°āĻ¤ā§‡ āĻŦāĻ˛āĻŦā§‡āĨ¤ āĻ†āĻĒāĻ¨āĻŋ āĻ“āĻ¯āĻŧāĻžāĻ‡āĻ˛ā§āĻĄāĻ•āĻžāĻ°ā§āĻĄāĻ“ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡āĻ¨: =, :, :{PREFIX}*.

āĻĄā§‡āĻŸāĻž āĻĒā§‡āĻ¤ā§‡, GET āĻ…āĻ¨ā§āĻ°ā§‹āĻ§ āĻĒāĻĻā§āĻ§āĻ¤āĻŋ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°ā§āĻ¨, āĻĄā§‡āĻŸāĻž āĻ¸āĻ¨ā§āĻ¨āĻŋāĻŦā§‡āĻļ āĻ•āĻ°āĻ¤ā§‡ (āĻāĻ•āĻŸāĻŋ āĻ…ā§āĻ¯āĻžāĻ•āĻžāĻ‰āĻ¨ā§āĻŸ āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°āĻž āĻŦāĻž āĻāĻ•āĻŸāĻŋ āĻ—ā§āĻ°ā§āĻĒā§‡ āĻ¸āĻĻāĻ¸ā§āĻ¯ āĻ¯ā§‹āĻ— āĻ•āĻ°āĻž) - POST, āĻŦāĻŋāĻĻā§āĻ¯āĻŽāĻžāĻ¨ āĻĄā§‡āĻŸāĻž āĻ†āĻĒāĻĄā§‡āĻŸ āĻ•āĻ°āĻžāĻ° āĻœāĻ¨ā§āĻ¯ - PUT, āĻāĻ•āĻŸāĻŋ āĻ°ā§‡āĻ•āĻ°ā§āĻĄ āĻŽā§āĻ›ā§‡ āĻĢā§‡āĻ˛āĻžāĻ° āĻœāĻ¨ā§āĻ¯ (āĻ‰āĻĻāĻžāĻšāĻ°āĻŖāĻ¸ā§āĻŦāĻ°ā§‚āĻĒ, āĻāĻ•āĻŸāĻŋ āĻ—ā§‹āĻˇā§āĻ ā§€āĻ° āĻ¸āĻĻāĻ¸ā§āĻ¯) - āĻŽā§āĻ›ā§‡ āĻĢā§‡āĻ˛āĻž.

āĻ¸ā§āĻ•ā§āĻ°āĻŋāĻĒā§āĻŸāĻŸāĻŋ āĻāĻ•āĻŸāĻŋ āĻĢā§‹āĻ¨ āĻ¨āĻŽā§āĻŦāĻ° (āĻāĻ•āĻŸāĻŋ āĻ…āĻĒā§āĻ°āĻŽāĻžāĻŖāĻŋāĻ¤ āĻ¸ā§āĻŸā§āĻ°āĻŋāĻ‚) āĻāĻŦāĻ‚ āĻāĻ•āĻŸāĻŋ āĻ†āĻžā§āĻšāĻ˛āĻŋāĻ• āĻŦāĻŋāĻ¤āĻ°āĻŖ āĻ—ā§‹āĻˇā§āĻ ā§€āĻ¤ā§‡ āĻ…āĻ¨ā§āĻ¤āĻ°ā§āĻ­ā§āĻ•ā§āĻ¤āĻŋāĻ° āĻœāĻ¨ā§āĻ¯āĻ“ āĻœāĻŋāĻœā§āĻžāĻžāĻ¸āĻž āĻ•āĻ°āĻŦā§‡ā§ˇ āĻāĻŸāĻŋ āĻ¨āĻŋāĻ°ā§āĻŦāĻžāĻšāĻŋāĻ¤ āĻ¸āĻ•ā§āĻ°āĻŋāĻ¯āĻŧ āĻĄāĻŋāĻ°ā§‡āĻ•ā§āĻŸāĻ°āĻŋ OU āĻāĻ° āĻ‰āĻĒāĻ° āĻ­āĻŋāĻ¤ā§āĻ¤āĻŋ āĻ•āĻ°ā§‡ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°āĻ•āĻžāĻ°ā§€āĻ° āĻ•ā§‹āĻ¨ āĻ¸āĻžāĻ‚āĻ—āĻ āĻ¨āĻŋāĻ• āĻ‡āĻ‰āĻ¨āĻŋāĻŸ āĻĨāĻžāĻ•āĻž āĻ‰āĻšāĻŋāĻ¤ āĻ¤āĻž āĻ¨āĻŋāĻ°ā§āĻ§āĻžāĻ°āĻŖ āĻ•āĻ°ā§‡ āĻāĻŦāĻ‚ āĻāĻ•āĻŸāĻŋ āĻĒāĻžāĻ¸āĻ“āĻ¯āĻŧāĻžāĻ°ā§āĻĄ āĻ¨āĻŋāĻ¯āĻŧā§‡ āĻ†āĻ¸ā§‡:

do {
  $phone = Read-Host "ĐĸĐĩĐģĐĩŅ„ĐžĐŊ в Ņ„ĐžŅ€ĐŧĐ°Ņ‚Đĩ +7Ņ…Ņ…Ņ…Ņ…Ņ…Ņ…Ņ…Ņ…"
} while (-not $phone)
do {
    $moscow = Read-Host "В МоŅĐēОвŅĐēиК ĐžŅ„иŅ? (y/n) "
} while (-not (($moscow -eq 'y') -or ($moscow -eq 'n')))
$orgunit = '/'
if ($OU -like "*OU=Delivery,OU=Users,OU=ROOT,DC=rocket,DC=local") {
    Write-host "БŅƒĐ´ĐĩŅ‚ ŅĐžĐˇĐ´Đ°ĐŊĐ° в /Team delivery"
    $orgunit = "/Team delivery"
}
$Password =  -join ( 48..57 + 65..90 + 97..122 | Get-Random -Count 12 | % {[char]$_})+"*Ba"

āĻāĻŦāĻ‚ āĻ¤āĻžāĻ°āĻĒāĻ°ā§‡ āĻ¤āĻŋāĻ¨āĻŋ āĻ…ā§āĻ¯āĻžāĻ•āĻžāĻ‰āĻ¨ā§āĻŸāĻŸāĻŋ āĻĒāĻ°āĻŋāĻšāĻžāĻ˛āĻ¨āĻž āĻ•āĻ°āĻ¤ā§‡ āĻļā§āĻ°ā§ āĻ•āĻ°ā§‡āĻ¨:

$query = @{
  email = $email
  givenName = $firstname
  familyName = $lastname
  password = $password
  phone = $phone
  orgunit = $orgunit
}
if ($GMailExist) {
  Write-Host "ЗаĐŋŅƒŅĐēĐ°ĐĩĐŧ иСĐŧĐĩĐŊĐĩĐŊиĐĩ Đ°ĐēĐēĐ°ŅƒĐŊŅ‚Đ°" -f mag
  (GoogleQuery 'UpdateAccount' $query) | fl
  write-host "НĐĩ СайŅƒĐ´ŅŒ ĐŋŅ€ĐžĐ˛ĐĩŅ€Đ¸Ņ‚ŅŒ ĐŗŅ€ŅƒĐŋĐŋŅ‹ Ņƒ вĐēĐģŅŽŅ‡ĐĩĐŊĐŊĐžĐŗĐž $Username в Google."
} else {
  Write-Host "ЗаĐŋŅƒŅĐēĐ°ĐĩĐŧ ŅĐžĐˇĐ´Đ°ĐŊиĐĩ Đ°ĐēĐēĐ°ŅƒĐŊŅ‚Đ°" -f mag
  (GoogleQuery 'CreateAccount' $query) | fl
}
if ($moscow -eq "y"){
  write-host "ДобавĐģŅĐĩĐŧ в ĐŗŅ€ŅƒĐŋĐŋŅƒ moscowoffice"
  $query = @{
    groupkey = '[email protected]'
    email = $email
  }
  (GoogleQuery 'AddMember' $query) | fl
}

āĻāĻ•āĻŸāĻŋ āĻ…ā§āĻ¯āĻžāĻ•āĻžāĻ‰āĻ¨ā§āĻŸ āĻ†āĻĒāĻĄā§‡āĻŸ āĻ•āĻ°āĻžāĻ° āĻāĻŦāĻ‚ āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°āĻžāĻ° āĻĢāĻžāĻ‚āĻļāĻ¨āĻ—ā§āĻ˛āĻŋāĻ° āĻāĻ•āĻŸāĻŋ āĻ…āĻ¨ā§āĻ°ā§‚āĻĒ āĻ¸āĻŋāĻ¨āĻŸā§āĻ¯āĻžāĻ•ā§āĻ¸ āĻ°āĻ¯āĻŧā§‡āĻ›ā§‡; āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻ…āĻ¤āĻŋāĻ°āĻŋāĻ•ā§āĻ¤ āĻ•ā§āĻˇā§‡āĻ¤ā§āĻ° āĻĒā§āĻ°āĻ¯āĻŧā§‹āĻœāĻ¨ āĻšāĻ¯āĻŧ āĻ¨āĻž; āĻĢā§‹āĻ¨ āĻ¨āĻŽā§āĻŦāĻ° āĻ¸āĻš āĻŦāĻŋāĻ­āĻžāĻ—ā§‡, āĻ†āĻĒāĻ¨āĻžāĻ•ā§‡ āĻāĻ•āĻŸāĻŋ āĻ…ā§āĻ¯āĻžāĻ°ā§‡ āĻ¨āĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āĻŸ āĻ•āĻ°āĻ¤ā§‡ āĻšāĻŦā§‡ āĻ¯āĻžāĻ¤ā§‡ āĻ¨āĻŽā§āĻŦāĻ° āĻāĻŦāĻ‚ āĻāĻ° āĻĒā§āĻ°āĻ•āĻžāĻ° āĻ¸āĻš āĻāĻ•āĻŸāĻŋ āĻĒāĻ°ā§āĻ¯āĻ¨ā§āĻ¤ āĻ°ā§‡āĻ•āĻ°ā§āĻĄ āĻĨāĻžāĻ•āĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡āĨ¤

āĻāĻ•āĻŸāĻŋ āĻ—ā§‹āĻˇā§āĻ ā§€āĻ¤ā§‡ āĻ•ā§‹āĻ¨āĻ“ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°āĻ•āĻžāĻ°ā§€āĻ•ā§‡ āĻ¯ā§āĻ•ā§āĻ¤ āĻ•āĻ°āĻžāĻ° āĻ¸āĻŽāĻ¯āĻŧ āĻ•ā§‹āĻ¨āĻ“ āĻ¤ā§āĻ°ā§āĻŸāĻŋ āĻ¨āĻž āĻĒāĻžāĻ“āĻ¯āĻŧāĻžāĻ° āĻœāĻ¨ā§āĻ¯, āĻ†āĻŽāĻ°āĻž āĻĒā§āĻ°āĻĨāĻŽā§‡ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°āĻ•āĻžāĻ°ā§€āĻ° āĻ•āĻžāĻ› āĻĨā§‡āĻ•ā§‡ āĻ—ā§‹āĻˇā§āĻ ā§€āĻ° āĻ¸āĻĻāĻ¸ā§āĻ¯ āĻŦāĻž āĻ•āĻŽā§āĻĒā§‹āĻœāĻŋāĻļāĻ¨ā§‡āĻ° āĻāĻ•āĻŸāĻŋ āĻ¤āĻžāĻ˛āĻŋāĻ•āĻž āĻĒā§‡āĻ¯āĻŧā§‡ āĻ¤āĻŋāĻ¨āĻŋ āĻ‡āĻ¤āĻŋāĻŽāĻ§ā§āĻ¯ā§‡ āĻāĻ‡ āĻ—ā§‹āĻˇā§āĻ ā§€āĻ° āĻ¸āĻĻāĻ¸ā§āĻ¯ āĻ•āĻŋāĻ¨āĻž āĻ¤āĻž āĻĒāĻ°ā§€āĻ•ā§āĻˇāĻž āĻ•āĻ°āĻ¤ā§‡ āĻĒāĻžāĻ°āĻŋāĨ¤

āĻāĻ•āĻŸāĻŋ āĻ¨āĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āĻŸ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°āĻ•āĻžāĻ°ā§€āĻ° āĻ—ā§āĻ°ā§āĻĒ āĻ¸āĻĻāĻ¸ā§āĻ¯āĻĒāĻĻ āĻœāĻŋāĻœā§āĻžāĻžāĻ¸āĻž āĻĒā§āĻ¨āĻ°āĻžāĻŦā§ƒāĻ¤ā§āĻ¤āĻŋāĻŽā§‚āĻ˛āĻ• āĻšāĻŦā§‡ āĻ¨āĻž āĻāĻŦāĻ‚ āĻļā§āĻ§ā§āĻŽāĻžāĻ¤ā§āĻ° āĻ¸āĻ°āĻžāĻ¸āĻ°āĻŋ āĻ¸āĻĻāĻ¸ā§āĻ¯āĻ¤āĻž āĻĻā§‡āĻ–āĻžāĻŦā§‡. āĻāĻ•āĻŸāĻŋ āĻ…āĻ­āĻŋāĻ­āĻžāĻŦāĻ• āĻ—ā§‹āĻˇā§āĻ ā§€āĻ¤ā§‡ āĻāĻ•āĻœāĻ¨ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°āĻ•āĻžāĻ°ā§€āĻ•ā§‡ āĻ…āĻ¨ā§āĻ¤āĻ°ā§āĻ­ā§āĻ•ā§āĻ¤ āĻ•āĻ°āĻž āĻ¯āĻžāĻ° āĻŽāĻ§ā§āĻ¯ā§‡ āĻ‡āĻ¤āĻŋāĻŽāĻ§ā§āĻ¯ā§‡āĻ‡ āĻāĻ•āĻŸāĻŋ āĻšāĻžāĻ‡āĻ˛ā§āĻĄ āĻ—ā§āĻ°ā§āĻĒ āĻ°āĻ¯āĻŧā§‡āĻ›ā§‡ āĻ¯ā§‡ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°āĻ•āĻžāĻ°ā§€āĻ° āĻāĻ•āĻœāĻ¨ āĻ¸āĻĻāĻ¸ā§āĻ¯ āĻ¸āĻĢāĻ˛ āĻšāĻŦā§‡ā§ˇ

āĻ‰āĻĒāĻ¸āĻ‚āĻšāĻžāĻ°

āĻ¯āĻž āĻ…āĻŦāĻļāĻŋāĻˇā§āĻŸ āĻĨāĻžāĻ•ā§‡ āĻ¤āĻž āĻšāĻ˛ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°āĻ•āĻžāĻ°ā§€āĻ•ā§‡ āĻ¨āĻ¤ā§āĻ¨ āĻ…ā§āĻ¯āĻžāĻ•āĻžāĻ‰āĻ¨ā§āĻŸā§‡āĻ° āĻœāĻ¨ā§āĻ¯ āĻĒāĻžāĻ¸āĻ“āĻ¯āĻŧāĻžāĻ°ā§āĻĄ āĻĒāĻžāĻ āĻžāĻ¤ā§‡āĨ¤ āĻ†āĻŽāĻ°āĻž āĻāĻ¸āĻāĻŽāĻāĻ¸ā§‡āĻ° āĻŽāĻžāĻ§ā§āĻ¯āĻŽā§‡ āĻāĻŸāĻŋ āĻ•āĻ°āĻŋ, āĻāĻŦāĻ‚ āĻ¨āĻŋāĻ°ā§āĻĻā§‡āĻļāĻžāĻŦāĻ˛ā§€ āĻ¸āĻš āĻ¸āĻžāĻ§āĻžāĻ°āĻŖ āĻ¤āĻĨā§āĻ¯ āĻĒāĻžāĻ āĻžāĻ‡ āĻāĻŦāĻ‚ āĻāĻ•āĻŸāĻŋ āĻŦā§āĻ¯āĻ•ā§āĻ¤āĻŋāĻ—āĻ¤ āĻ‡āĻŽā§‡āĻ˛ā§‡ āĻ˛āĻ—āĻ‡āĻ¨ āĻ•āĻ°āĻŋ, āĻ¯āĻž āĻāĻ•āĻŸāĻŋ āĻĢā§‹āĻ¨ āĻ¨āĻŽā§āĻŦāĻ° āĻ¸āĻš, āĻ¨āĻŋāĻ¯āĻŧā§‹āĻ— āĻŦāĻŋāĻ­āĻžāĻ— āĻĻā§āĻŦāĻžāĻ°āĻž āĻ¸āĻ°āĻŦāĻ°āĻžāĻš āĻ•āĻ°āĻž āĻšāĻ¯āĻŧā§‡āĻ›āĻŋāĻ˛āĨ¤ āĻāĻ•āĻŸāĻŋ āĻŦāĻŋāĻ•āĻ˛ā§āĻĒ āĻšāĻŋāĻ¸āĻžāĻŦā§‡, āĻ†āĻĒāĻ¨āĻŋ āĻ…āĻ°ā§āĻĨ āĻ¸āĻžā§āĻšāĻ¯āĻŧ āĻ•āĻ°āĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡āĻ¨ āĻāĻŦāĻ‚ āĻāĻ•āĻŸāĻŋ āĻ—ā§‹āĻĒāĻ¨ āĻŸā§‡āĻ˛āĻŋāĻ—ā§āĻ°āĻžāĻŽ āĻšā§āĻ¯āĻžāĻŸā§‡ āĻ†āĻĒāĻ¨āĻžāĻ° āĻĒāĻžāĻ¸āĻ“āĻ¯āĻŧāĻžāĻ°ā§āĻĄ āĻĒāĻžāĻ āĻžāĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡āĻ¨, āĻ¯āĻž āĻĻā§āĻŦāĻŋāĻ¤ā§€āĻ¯āĻŧ āĻĢā§āĻ¯āĻžāĻ•ā§āĻŸāĻ° āĻšāĻŋāĻ¸āĻžāĻŦā§‡ āĻŦāĻŋāĻŦā§‡āĻšāĻŋāĻ¤ āĻšāĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡ (āĻŽā§āĻ¯āĻžāĻ•āĻŦā§āĻ•āĻ—ā§āĻ˛āĻŋ āĻāĻ•āĻŸāĻŋ āĻŦā§āĻ¯āĻ¤āĻŋāĻ•ā§āĻ°āĻŽ āĻšāĻŦā§‡)āĨ¤

āĻļā§‡āĻˇ āĻĒāĻ°ā§āĻ¯āĻ¨ā§āĻ¤ āĻĒāĻĄāĻŧāĻžāĻ° āĻœāĻ¨ā§āĻ¯ āĻ†āĻĒāĻ¨āĻžāĻ•ā§‡ āĻ§āĻ¨ā§āĻ¯āĻŦāĻžāĻĻ. āĻ†āĻŽāĻŋ āĻ¨āĻŋāĻŦāĻ¨ā§āĻ§ āĻ˛ā§‡āĻ–āĻžāĻ° āĻļā§ˆāĻ˛ā§€ āĻ‰āĻ¨ā§āĻ¨āĻ¤ āĻ•āĻ°āĻžāĻ° āĻœāĻ¨ā§āĻ¯ āĻĒāĻ°āĻžāĻŽāĻ°ā§āĻļāĻ—ā§āĻ˛āĻŋ āĻĻā§‡āĻ–ā§‡ āĻ–ā§āĻļāĻŋ āĻšāĻŦ āĻāĻŦāĻ‚ āĻ¸ā§āĻ•ā§āĻ°āĻŋāĻĒā§āĻŸ āĻ˛ā§‡āĻ–āĻžāĻ° āĻ¸āĻŽāĻ¯āĻŧ āĻ†āĻĒāĻ¨āĻŋ āĻ•āĻŽ āĻ¤ā§āĻ°ā§āĻŸāĻŋ āĻ§āĻ°āĻ¤ā§‡ āĻšāĻžāĻ¨ =)

āĻ˛āĻŋāĻ™ā§āĻ•āĻ—ā§āĻ˛āĻŋāĻ° āĻ¤āĻžāĻ˛āĻŋāĻ•āĻž āĻ¯āĻž āĻŦāĻŋāĻˇāĻ¯āĻŧāĻ—āĻ¤āĻ­āĻžāĻŦā§‡ āĻ‰āĻĒāĻ¯ā§‹āĻ—ā§€ āĻšāĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡ āĻŦāĻž āĻ¸āĻšāĻœāĻ­āĻžāĻŦā§‡ āĻĒā§āĻ°āĻļā§āĻ¨ā§‡āĻ° āĻ‰āĻ¤ā§āĻ¤āĻ° āĻĻāĻŋāĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡:

āĻ‰āĻ¤ā§āĻ¸: www.habr.com

āĻāĻ•āĻŸāĻŋ āĻŽāĻ¨ā§āĻ¤āĻŦā§āĻ¯ āĻœā§āĻĄāĻŧā§āĻ¨