ΠΠ΄ΡΠ°Π²ΠΎ!
ΠΠ²Π°Ρ ΡΠ»Π°Π½Π°ΠΊ ΡΠ΅ ΠΎΠΏΠΈΡΠ°ΡΠΈ ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½ΡΠ°ΡΠΈΡΡ ΠΠΎΠ²Π΅ΡΠ‘Ρ Π΅Π»Π» ΠΈΠ½ΡΠ΅ΡΠ°ΠΊΡΠΈΡΠ΅ ΡΠ° ΠΠΎΠΎΠ³Π»Π΅ ΠΠΠ-ΡΠ΅ΠΌ Π·Π° ΠΌΠ°Π½ΠΈΠΏΡΠ»Π°ΡΠΈΡΡ Π Π‘ΡΠΈΡΠ΅ ΠΊΠΎΡΠΈΡΠ½ΠΈΡΠΈΠΌΠ°.
ΠΠΎΡΠΈΡΡΠΈΠΌΠΎ Π½Π΅ΠΊΠΎΠ»ΠΈΠΊΠΎ ΠΈΠ½ΡΠ΅ΡΠ½ΠΈΡ
ΡΡΠ»ΡΠ³Π° ΠΈ ΡΡΠ»ΡΠ³Π° Ρ ΠΎΠ±Π»Π°ΠΊΡ ΡΠΈΡΠΎΠΌ ΠΎΡΠ³Π°Π½ΠΈΠ·Π°ΡΠΈΡΠ΅. Π£Π³Π»Π°Π²Π½ΠΎΠΌ ΡΠ΅ Π°ΡΡΠΎΡΠΈΠ·Π°ΡΠΈΡΠ° Ρ ΡΠΈΠΌΠ° ΡΠ²ΠΎΠ΄ΠΈ Π½Π° ΠΠΎΠΎΠ³Π»Π΅ ΠΈΠ»ΠΈ ΠΡΡΠΈΠ²Π΅ ΠΠΈΡΠ΅ΡΡΠΎΡΠΈ, ΠΈΠ·ΠΌΠ΅ΡΡ ΠΊΠΎΡΠΈΡ
Π½Π΅ ΠΌΠΎΠΆΠ΅ΠΌΠΎ ΠΎΠ΄ΡΠΆΠ°Π²Π°ΡΠΈ ΡΠ΅ΠΏΠ»ΠΈΠΊΡ, ΡΡ
ΠΎΠ΄Π½ΠΎ ΡΠΎΠΌΠ΅, ΠΊΠ°Π΄Π° Π½ΠΎΠ²ΠΈ Π·Π°ΠΏΠΎΡΠ»Π΅Π½ΠΈ ΠΎΠ΄Π΅, ΠΏΠΎΡΡΠ΅Π±Π½ΠΎ ΡΠ΅ Π΄Π° ΠΊΡΠ΅ΠΈΡΠ°ΡΠ΅/ΠΎΠΌΠΎΠ³ΡΡΠΈΡΠ΅ Π½Π°Π»ΠΎΠ³ Ρ ΠΎΠ²Π° Π΄Π²Π° ΡΠΈΡΡΠ΅ΠΌΠ°. ΠΠ° Π±ΠΈΡΠΌΠΎ Π°ΡΡΠΎΠΌΠ°ΡΠΈΠ·ΠΎΠ²Π°Π»ΠΈ ΠΏΡΠΎΡΠ΅Ρ, ΠΎΠ΄Π»ΡΡΠΈΠ»ΠΈ ΡΠΌΠΎ Π΄Π° Π½Π°ΠΏΠΈΡΠ΅ΠΌΠΎ ΡΠΊΡΠΈΠΏΡΡ ΠΊΠΎΡΠ° ΠΏΡΠΈΠΊΡΠΏΡΠ° ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡΠ΅ ΠΈ ΡΠ°ΡΠ΅ ΠΈΡ
ΠΎΠ±Π΅ΠΌΠ° ΡΡΠ»ΡΠ³Π°ΠΌΠ°.
ΠΠ²Π»Π°ΡΡΠ΅ΡΠ΅
ΠΡΠΈΠ»ΠΈΠΊΠΎΠΌ ΡΠ°ΡΡΠ°Π²ΡΠ°ΡΠ° Π·Π°Ρ ΡΠ΅Π²Π° ΠΎΠ΄Π»ΡΡΠΈΠ»ΠΈ ΡΠΌΠΎ Π΄Π° ΠΊΠΎΡΠΈΡΡΠΈΠΌΠΎ ΠΏΡΠ°Π²Π΅ ΡΡΠ΄ΡΠΊΠ΅ Π°Π΄ΠΌΠΈΠ½ΠΈΡΡΡΠ°ΡΠΎΡΠ΅ Π·Π° Π°ΡΡΠΎΡΠΈΠ·Π°ΡΠΈΡΡ, ΡΡΠΎ ΠΏΠΎΡΠ΅Π΄Π½ΠΎΡΡΠ°Π²ΡΡΡΠ΅ Π°Π½Π°Π»ΠΈΠ·Ρ ΠΏΠΎΡΡΡΠΏΠ°ΡΠ° Ρ ΡΠ»ΡΡΠ°ΡΡ ΡΠ»ΡΡΠ°ΡΠ½ΠΈΡ ΠΈΠ»ΠΈ Π½Π°ΠΌΠ΅ΡΠ½ΠΈΡ ΠΌΠ°ΡΠΎΠ²Π½ΠΈΡ ΠΏΡΠΎΠΌΠ΅Π½Π°.
ΠΠΎΠΎΠ³Π»Π΅ ΠΠΠ-ΡΠΈ ΠΊΠΎΡΠΈΡΡΠ΅ ΠΠΡΡΡ
2.0 ΠΏΡΠΎΡΠΎΠΊΠΎΠ» Π·Π° Π°ΡΡΠ΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡΡ ΠΈ Π°ΡΡΠΎΡΠΈΠ·Π°ΡΠΈΡΡ. Π‘Π»ΡΡΠ°ΡΠ΅Π²ΠΈ ΠΊΠΎΡΠΈΡΡΠ΅ΡΠ° ΠΈ Π΄Π΅ΡΠ°ΡΠ½ΠΈΡΠΈ ΠΎΠΏΠΈΡΠΈ ΠΌΠΎΠ³Ρ ΡΠ΅ Π½Π°ΡΠΈ ΠΎΠ²Π΄Π΅:
ΠΠ·Π°Π±ΡΠ°ΠΎ ΡΠ°ΠΌ ΡΠΊΡΠΈΠΏΡΡ ΠΊΠΎΡΠ° ΡΠ΅ ΠΊΠΎΡΠΈΡΡΠΈ Π·Π° Π°ΡΡΠΎΡΠΈΠ·Π°ΡΠΈΡΡ Ρ Π΄Π΅ΡΠΊΡΠΎΠΏ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ°ΠΌΠ°. ΠΠΎΡΡΠΎΡΠΈ ΠΈ ΠΎΠΏΡΠΈΡΠ° ΠΊΠΎΡΠΈΡΡΠ΅ΡΠ° Π½Π°Π»ΠΎΠ³Π° ΡΡΠ»ΡΠ³Π΅, ΠΊΠΎΡΠ° Π½Π΅ Π·Π°Ρ ΡΠ΅Π²Π° Π½Π΅ΠΏΠΎΡΡΠ΅Π±Π½Π° ΠΊΡΠ΅ΡΠ°ΡΠ° ΠΎΠ΄ ΠΊΠΎΡΠΈΡΠ½ΠΈΠΊΠ°.
Π‘Π»ΠΈΠΊΠ° ΠΈΡΠΏΠΎΠ΄ ΡΠ΅ ΡΠ΅ΠΌΠ°ΡΡΠΊΠΈ ΠΎΠΏΠΈΡ ΠΎΠ΄Π°Π±ΡΠ°Π½ΠΎΠ³ ΡΡΠ΅Π½Π°ΡΠΈΡΠ° ΡΠ° ΠΠΎΠΎΠ³Π»Π΅ ΡΡΡΠ°Π½ΠΈΡΠ΅.
- ΠΡΠ²ΠΎ ΡΠ°ΡΠ΅ΠΌΠΎ ΠΊΠΎΡΠΈΡΠ½ΠΈΠΊΠ° Π½Π° ΡΡΡΠ°Π½ΠΈΡΡ Π·Π° ΠΏΠΎΡΠ²ΡΠ΄Ρ Π°ΡΡΠ΅Π½ΡΠΈΡΠ½ΠΎΡΡΠΈ ΠΠΎΠΎΠ³Π»Π΅ Π½Π°Π»ΠΎΠ³Π°, Π½Π°Π²ΠΎΠ΄Π΅ΡΠΈ ΠΠΠ’ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ΅:
- ΠΠ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ΅
- ΠΎΠ±Π»Π°ΡΡΠΈ ΠΊΠΎΡΠΈΠΌΠ° Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ° ΡΡΠ΅Π±Π° ΠΏΡΠΈΡΡΡΠΏ
- Π°Π΄ΡΠ΅ΡΡ Π½Π° ΠΊΠΎΡΡ ΡΠ΅ ΠΊΠΎΡΠΈΡΠ½ΠΈΠΊ Π±ΠΈΡΠΈ ΠΏΡΠ΅ΡΡΠΌΠ΅ΡΠ΅Π½ Π½Π°ΠΊΠΎΠ½ Π·Π°Π²ΡΡΠ΅Π½ΠΎΠ³ ΠΏΠΎΡΡΡΠΏΠΊΠ°
- Π½Π°ΡΠΈΠ½ Π½Π° ΠΊΠΎΡΠΈ ΡΠ΅ΠΌΠΎ Π°ΠΆΡΡΠΈΡΠ°ΡΠΈ ΡΠΎΠΊΠ΅Π½
- Π‘ΠΈΠ³ΡΡΠ½ΠΎΡΠ½ΠΈ ΠΊΠΎΠ΄
- ΡΠΎΡΠΌΠ°Ρ ΠΏΡΠ΅Π½ΠΎΡΠ° Π²Π΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΎΠ½ΠΎΠ³ ΠΊΠΎΠ΄Π°
- ΠΠ°ΠΊΠΎΠ½ ΡΡΠΎ ΡΠ΅ Π°ΡΡΠΎΡΠΈΠ·Π°ΡΠΈΡΠ° Π·Π°Π²ΡΡΠ΅Π½Π°, ΠΊΠΎΡΠΈΡΠ½ΠΈΠΊ ΡΠ΅ Π±ΠΈΡΠΈ ΠΏΡΠ΅ΡΡΠΌΠ΅ΡΠ΅Π½ Π½Π° ΡΡΡΠ°Π½ΠΈΡΡ Π½Π°Π²Π΅Π΄Π΅Π½Ρ Ρ ΠΏΡΠ²ΠΎΠΌ Π·Π°Ρ ΡΠ΅Π²Ρ, ΡΠ° Π³ΡΠ΅ΡΠΊΠΎΠΌ ΠΈΠ»ΠΈ ΠΊΠΎΠ΄ΠΎΠΌ Π·Π° Π°ΡΡΠΎΡΠΈΠ·Π°ΡΠΈΡΡ ΠΊΠΎΡΠΈ ΡΡ ΠΏΡΠΎΡΠ»Π΅ΡΠΈΠ²Π°Π»ΠΈ ΠΠΠ’ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΈ
- ΠΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ° (ΡΠΊΡΠΈΠΏΡΠ°) ΡΠ΅ ΠΌΠΎΡΠ°ΡΠΈ Π΄Π° ΠΏΡΠΈΠΌΠΈ ΠΎΠ²Π΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ΅ ΠΈ, Π°ΠΊΠΎ Π΄ΠΎΠ±ΠΈΡΠ΅ ΠΊΠΎΠ΄, ΡΠΏΡΡΠΈ ΡΠ»Π΅Π΄Π΅ΡΠΈ Π·Π°Ρ ΡΠ΅Π² Π·Π° Π΄ΠΎΠ±ΠΈΡΠ°ΡΠ΅ ΡΠΎΠΊΠ΅Π½Π°
- ΠΠΊΠΎ ΡΠ΅ Π·Π°Ρ
ΡΠ΅Π² ΡΠ°ΡΠ°Π½, ΠΠΎΠΎΠ³Π»Π΅ ΠΠΠ Π²ΡΠ°ΡΠ°:
- ΠΡΠΈΡΡΡΠΏΠ½ΠΈ ΡΠΎΠΊΠ΅Π½ ΡΠ° ΠΊΠΎΡΠΈΠΌ ΠΌΠΎΠΆΠ΅ΠΌΠΎ Π΄Π° ΠΏΠΎΡΡΠ°Π²ΡΠ°ΠΌΠΎ Π·Π°Ρ ΡΠ΅Π²Π΅
- ΠΠ΅ΡΠΈΠΎΠ΄ Π²Π°ΠΆΠ΅ΡΠ° ΠΎΠ²ΠΎΠ³ ΡΠΎΠΊΠ΅Π½Π°
- ΠΠ° ΠΎΡΠ²Π΅ΠΆΠ°Π²Π°ΡΠ΅ ΡΠΎΠΊΠ΅Π½Π° Π·Π° ΠΏΡΠΈΡΡΡΠΏ ΠΏΠΎΡΡΠ΅Π±Π°Π½ ΡΠ΅ ΠΎΡΠ²Π΅ΠΆΠ°Π²Π°ΡΡΡΠΈ ΡΠΎΠΊΠ΅Π½.
ΠΡΠ²ΠΎ ΠΌΠΎΡΠ°ΡΠ΅ Π΄Π° ΠΎΠ΄Π΅ΡΠ΅ Π½Π° ΠΠΎΠΎΠ³Π»Π΅ ΠΠΠ ΠΊΠΎΠ½Π·ΠΎΠ»Ρ:
ΠΠ° Π±ΠΈΡΡΠ΅ ΠΎΠ»Π°ΠΊΡΠ°Π»ΠΈ ΡΠΈΡΠ°ΡΠ΅ Π°Π»Π³ΠΎΡΠΈΡΠΌΠ° ΡΠΊΡΠΈΠΏΡΠ΅, ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΡΠΈΠΊΠ°Π·Π°ΡΠΈ ΠΏΡΠ²Π΅ ΠΊΠΎΡΠ°ΠΊΠ΅ Ρ ΠΏΠΎΡΠ΅Π±Π½ΠΎΡ ΡΡΠ½ΠΊΡΠΈΡΠΈ ΠΊΠΎΡΠ° ΡΠ΅ Π²ΡΠ°ΡΠΈΡΠΈ ΡΠΎΠΊΠ΅Π½Π΅ Π·Π° ΠΏΡΠΈΡΡΡΠΏ ΠΈ ΠΎΡΠ²Π΅ΠΆΠ°Π²Π°ΡΠ΅ Π·Π° Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΡ:
$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
ΠΠΎΡΡΠ°Π²ΠΈΠ»ΠΈ ΡΠΌΠΎ Π¦Π»ΠΈΠ΅Π½Ρ ΠΠ ΠΈ Π¦Π»ΠΈΠ΅Π½Ρ Π‘Π΅ΡΡΠ΅Ρ Π΄ΠΎΠ±ΠΈΡΠ΅Π½Π΅ Ρ ΡΠ²ΠΎΡΡΡΠ²ΠΈΠΌΠ° ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΠ° ΠΠΡΡΡ ΠΊΠ»ΠΈΡΠ΅Π½ΡΠ°, Π° Π²Π΅ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ ΠΊΠΎΠ΄Π° ΡΠ΅ Π½ΠΈΠ· ΠΎΠ΄ 43 Π΄ΠΎ 128 Π·Π½Π°ΠΊΠΎΠ²Π° ΠΊΠΎΡΠΈ ΠΌΠΎΡΠ° Π±ΠΈΡΠΈ Π½Π°ΡΡΠΌΠΈΡΠ½ΠΎ Π³Π΅Π½Π΅ΡΠΈΡΠ°Π½ ΠΎΠ΄ Π½Π΅ΡΠ΅Π·Π΅ΡΠ²ΠΈΡΠ°Π½ΠΈΡ Π·Π½Π°ΠΊΠΎΠ²Π°: [ΠΠ] / [Π°Π·] / [0-9 ] / "-" / "." / "_" / "~".
ΠΠ²Π°Ρ ΠΊΠΎΠ΄ ΡΠ΅ ΡΠ΅ Π·Π°ΡΠΈΠΌ ΠΏΠΎΠ½ΠΎΠ²ΠΎ ΠΏΡΠ΅Π½Π΅ΡΠΈ. ΠΠ½ Π΅Π»ΠΈΠΌΠΈΠ½ΠΈΡΠ΅ ΡΠ°ΡΠΈΠ²ΠΎΡΡ Ρ ΠΊΠΎΡΠΎΡ Π±ΠΈ Π½Π°ΠΏΠ°Π΄Π°Ρ ΠΌΠΎΠ³Π°ΠΎ Π΄Π° ΠΏΡΠ΅ΡΡΠ΅ΡΠ½Π΅ ΠΎΠ΄Π³ΠΎΠ²ΠΎΡ Π²ΡΠ°ΡΠ΅Π½ ΠΊΠ°ΠΎ ΠΏΡΠ΅ΡΡΠΌΠ΅ΡΠ°Π²Π°ΡΠ΅ Π½Π°ΠΊΠΎΠ½ Π°ΡΡΠΎΡΠΈΠ·Π°ΡΠΈΡΠ΅ ΠΊΠΎΡΠΈΡΠ½ΠΈΠΊΠ°.
ΠΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΠΏΠΎΡΠ°ΡΠ΅ΡΠ΅ Π²Π΅ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ ΠΊΠΎΠ΄Π° Ρ ΡΡΠ΅Π½ΡΡΠ½ΠΎΠΌ Π·Π°Ρ
ΡΠ΅Π²Ρ Ρ ΡΠΈΡΡΠΎΠΌ ΡΠ΅ΠΊΡΡΡ (ΡΡΠΎ Π³Π° ΡΠΈΠ½ΠΈ Π±Π΅ΡΠΌΠΈΡΠ»Π΅Π½ΠΈΠΌ β ΠΎΠ²ΠΎ ΡΠ΅ ΠΏΠΎΠ³ΠΎΠ΄Π½ΠΎ ΡΠ°ΠΌΠΎ Π·Π° ΡΠΈΡΡΠ΅ΠΌΠ΅ ΠΊΠΎΡΠΈ Π½Π΅ ΠΏΠΎΠ΄ΡΠΆΠ°Π²Π°ΡΡ Π‘Π₯Π256) ΠΈΠ»ΠΈ ΠΊΡΠ΅ΠΈΡΠ°ΡΠ΅ΠΌ Ρ
Π΅Ρ ΠΊΠΎΡΠΈΡΡΠ΅ΡΠΈ Π‘Π₯Π256 Π°Π»Π³ΠΎΡΠΈΡΠ°ΠΌ, ΠΊΠΎΡΠΈ ΠΌΠΎΡΠ° Π±ΠΈΡΠΈ ΠΊΠΎΠ΄ΠΈΡΠ°Π½ Ρ ΠΠΠ‘Π64Π£ΡΠ» (ΡΠ°Π·Π»ΠΈΠΊΡΡΠ΅ ΡΠ΅ ΠΈΠ· ΠΠ°ΡΠ΅64 ΡΠ° Π΄Π²Π° Π·Π½Π°ΠΊΠ° ΡΠ°Π±Π΅Π»Π΅) ΠΈ ΡΠΊΠ»Π°ΡΠ°ΡΠ΅ΠΌ Π·Π°Π²ΡΡΠ΅ΡΠ°ΠΊΠ° ΡΠ΅Π΄ΠΎΠ²Π° Π·Π½Π°ΠΊΠΎΠ²Π°: =.
ΠΠ°ΡΠΈΠΌ ΡΡΠ΅Π±Π° Π΄Π° ΠΏΠΎΡΠ½Π΅ΠΌΠΎ Π΄Π° ΡΠ»ΡΡΠ°ΠΌΠΎ Ρ ΡΡΠΏ Π½Π° Π»ΠΎΠΊΠ°Π»Π½ΠΎΡ ΠΌΠ°ΡΠΈΠ½ΠΈ Π΄Π° Π±ΠΈΡΠΌΠΎ Π΄ΠΎΠ±ΠΈΠ»ΠΈ ΠΎΠ΄Π³ΠΎΠ²ΠΎΡ Π½Π°ΠΊΠΎΠ½ Π°ΡΡΠΎΡΠΈΠ·Π°ΡΠΈΡΠ΅, ΠΊΠΎΡΠΈ ΡΠ΅ Π±ΠΈΡΠΈ Π²ΡΠ°ΡΠ΅Π½ ΠΊΠ°ΠΎ ΠΏΡΠ΅ΡΡΠΌΠ΅ΡΠ°Π²Π°ΡΠ΅.
ΠΠ΄ΠΌΠΈΠ½ΠΈΡΡΡΠ°ΡΠΈΠ²Π½ΠΈ Π·Π°Π΄Π°ΡΠΈ ΡΠ΅ ΠΎΠ±Π°Π²ΡΠ°ΡΡ Π½Π° ΠΏΠΎΡΠ΅Π±Π½ΠΎΠΌ ΡΠ΅ΡΠ²Π΅ΡΡ, Π½Π΅ ΠΌΠΎΠΆΠ΅ΠΌΠΎ ΠΈΡΠΊΡΡΡΠΈΡΠΈ ΠΌΠΎΠ³ΡΡΠ½ΠΎΡΡ Π΄Π° Π½Π΅ΠΊΠΎΠ»ΠΈΠΊΠΎ Π°Π΄ΠΌΠΈΠ½ΠΈΡΡΡΠ°ΡΠΎΡΠ° ΠΈΡΡΠΎΠ²ΡΠ΅ΠΌΠ΅Π½ΠΎ ΠΏΠΎΠΊΡΠ΅ΡΠ΅ ΡΠΊΡΠΈΠΏΡΡ, ΠΏΠ° ΡΠ΅ Π½Π°ΡΡΠΌΠΈΡΠ½ΠΎ Π±ΠΈΡΠ°ΡΠΈ ΠΏΠΎΡΡ Π·Π° ΡΡΠ΅Π½ΡΡΠ½ΠΎΠ³ ΠΊΠΎΡΠΈΡΠ½ΠΈΠΊΠ°, Π°Π»ΠΈ ΡΠ°ΠΌ Π½Π°Π²Π΅ΠΎ ΡΠ½Π°ΠΏΡΠ΅Π΄ Π΄Π΅ΡΠΈΠ½ΠΈΡΠ°Π½Π΅ ΠΏΠΎΡΡΠΎΠ²Π΅ ΡΠ΅Ρ ΠΎΠ½ΠΈ ΡΠ°ΠΊΠΎΡΠ΅ ΠΌΠΎΡΠ°ΡΡ Π±ΠΈΡΠΈ Π΄ΠΎΠ΄Π°ΡΠΈ ΠΊΠ°ΠΎ ΠΏΠΎΡΠ·Π΄Π°Π½ΠΈ Ρ ΠΠΠ ΠΊΠΎΠ½Π·ΠΎΠ»ΠΈ.
Π°ΡΡΠ΅ΡΡ_ΡΠΈΠΏΠ΅=ΠΎΡΡΠ»ΠΈΠ½Π΅ Π·Π½Π°ΡΠΈ Π΄Π° Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ° ΠΌΠΎΠΆΠ΅ ΡΠ°ΠΌΠ° Π΄Π° Π°ΠΆΡΡΠΈΡΠ° ΡΠΎΠΊΠ΅Π½ ΠΊΠΎΡΠΈ ΡΠ΅ ΠΈΡΡΠ΅ΠΊΠ°ΠΎ Π±Π΅Π· ΠΈΠ½ΡΠ΅ΡΠ°ΠΊΡΠΈΡΠ΅ ΠΊΠΎΡΠΈΡΠ½ΠΈΠΊΠ° ΡΠ° ΠΏΡΠ΅Π³Π»Π΅Π΄Π°ΡΠ΅ΠΌ,
ΡΠ΅ΡΠΏΠΎΠ½ΡΠ΅_ΡΠΈΠΏΠ΅=ΡΠΎΠ΄Π΅ ΠΏΠΎΡΡΠ°Π²ΡΠ° ΡΠΎΡΠΌΠ°Ρ ΠΊΠ°ΠΊΠΎ ΡΠ΅ ΠΊΠΎΠ΄ Π±ΠΈΡΠΈ Π²ΡΠ°ΡΠ΅Π½ (ΡΠ΅ΡΠ΅ΡΠ΅Π½ΡΠ° Π½Π° ΡΡΠ°ΡΠΈ ΠΌΠ΅ΡΠΎΠ΄ Π°ΡΡΠΎΡΠΈΠ·Π°ΡΠΈΡΠ΅, ΠΊΠ°Π΄Π° ΡΠ΅ ΠΊΠΎΡΠΈΡΠ½ΠΈΠΊ ΠΊΠΎΠΏΠΈΡΠ°ΠΎ ΠΊΠΎΠ΄ ΠΈΠ· ΠΏΡΠ΅ΡΡΠ°ΠΆΠΈΠ²Π°ΡΠ° Ρ ΡΠΊΡΠΈΠΏΡΡ),
ΠΎΠ±ΠΈΠΌ ΠΎΠ·Π½Π°ΡΠ°Π²Π° ΠΎΠ±ΠΈΠΌ ΠΈ Π²ΡΡΡΡ ΠΏΡΠΈΡΡΡΠΏΠ°. ΠΠΎΡΠ°ΡΡ Π±ΠΈΡΠΈ ΡΠ°Π·Π΄Π²ΠΎΡΠ΅Π½ΠΈ ΡΠ°Π·ΠΌΠ°ΡΠΈΠΌΠ° ΠΈΠ»ΠΈ %20 (ΠΏΡΠ΅ΠΌΠ° Π£Π Π ΠΊΠΎΠ΄ΠΈΡΠ°ΡΡ). Π‘ΠΏΠΈΡΠ°ΠΊ ΠΏΡΠΈΡΡΡΠΏΠ½ΠΈΡ
ΠΏΠΎΠ΄ΡΡΡΡΠ° ΡΠ° ΡΠΈΠΏΠΎΠ²ΠΈΠΌΠ° ΠΌΠΎΠΆΠ΅ΡΠ΅ Π²ΠΈΠ΄Π΅ΡΠΈ ΠΎΠ²Π΄Π΅:
ΠΠ°ΠΊΠΎΠ½ ΡΡΠΎ ΠΏΡΠΈΠΌΠΈ Π°ΡΡΠΎΡΠΈΠ·Π°ΡΠΈΠΎΠ½ΠΈ ΠΊΠΎΠ΄, Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ° ΡΠ΅ Π²ΡΠ°ΡΠΈΡΠΈ ΠΏΡΠ΅ΡΡΠ°ΠΆΠΈΠ²Π°ΡΡ ΠΏΠΎΡΡΠΊΡ ΠΎ Π·Π°ΡΠ²Π°ΡΠ°ΡΡ, ΠΏΡΠ΅ΡΡΠ°ΡΠΈ Π΄Π° ΡΠ»ΡΡΠ° ΠΏΠΎΡΡ ΠΈ ΠΏΠΎΡΠ»Π°ΡΠΈ ΠΠΠ‘Π’ Π·Π°Ρ ΡΠ΅Π² Π·Π° Π΄ΠΎΠ±ΠΈΡΠ°ΡΠ΅ ΡΠΎΠΊΠ΅Π½Π°. Π£ ΡΠ΅ΠΌΡ Π½Π°Π²ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΡΠ΅ΡΡ ΠΎΠ΄Π½ΠΎ Π½Π°Π²Π΅Π΄Π΅Π½ΠΈ ΠΈΠ΄ ΠΈ ΡΠ°ΡΠ½Ρ ΠΈΠ· ΠΠΠ-ΡΠ° ΠΊΠΎΠ½Π·ΠΎΠ»Π΅, Π°Π΄ΡΠ΅ΡΡ Π½Π° ΠΊΠΎΡΡ ΡΠ΅ ΠΊΠΎΡΠΈΡΠ½ΠΈΠΊ Π±ΠΈΡΠΈ ΠΏΡΠ΅ΡΡΠΌΠ΅ΡΠ΅Π½ ΠΈ Π³ΡΠ°Π½Ρ_ΡΠΈΠΏΠ΅ Ρ ΡΠΊΠ»Π°Π΄Ρ ΡΠ° ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡΠΎΠΌ ΠΏΡΠΎΡΠΎΠΊΠΎΠ»Π°.
ΠΠ°ΠΎ ΠΎΠ΄Π³ΠΎΠ²ΠΎΡ, Π΄ΠΎΠ±ΠΈΡΠ΅ΠΌΠΎ ΡΠΎΠΊΠ΅Π½ Π·Π° ΠΏΡΠΈΡΡΡΠΏ, ΡΠ΅Π³ΠΎΠ² ΠΏΠ΅ΡΠΈΠΎΠ΄ Π²Π°ΠΆΠ΅ΡΠ° Ρ ΡΠ΅ΠΊΡΠ½Π΄Π°ΠΌΠ° ΠΈ ΡΠΎΠΊΠ΅Π½ Π·Π° ΠΎΡΠ²Π΅ΠΆΠ°Π²Π°ΡΠ΅, ΠΏΠΎΠΌΠΎΡΡ ΠΊΠΎΡΠ΅Π³ ΠΌΠΎΠΆΠ΅ΠΌΠΎ Π΄Π° Π°ΠΆΡΡΠΈΡΠ°ΠΌΠΎ ΡΠΎΠΊΠ΅Π½ Π·Π° ΠΏΡΠΈΡΡΡΠΏ.
ΠΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ° ΠΌΠΎΡΠ° Π΄Π° ΡΡΠ²Π° ΡΠΎΠΊΠ΅Π½Π΅ Π½Π° Π±Π΅Π·Π±Π΅Π΄Π½ΠΎΠΌ ΠΌΠ΅ΡΡΡ ΡΠ° Π΄ΡΠ³ΠΈΠΌ ΡΠΎΠΊΠΎΠΌ ΡΡΠ°ΡΠ°ΡΠ°, ΡΠ°ΠΊΠΎ Π΄Π° Π΄ΠΎΠΊ Π½Π΅ ΠΎΠΏΠΎΠ·ΠΎΠ²Π΅ΠΌΠΎ ΠΏΡΠΈΠΌΡΠ΅Π½ΠΈ ΠΏΡΠΈΡΡΡΠΏ, Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ° Π½Π΅ΡΠ΅ Π²ΡΠ°ΡΠΈΡΠΈ ΡΠΎΠΊΠ΅Π½ Π·Π° ΠΎΡΠ²Π΅ΠΆΠ°Π²Π°ΡΠ΅. ΠΠ° ΠΊΡΠ°ΡΡ ΡΠ°ΠΌ Π΄ΠΎΠ΄Π°ΠΎ Π·Π°Ρ ΡΠ΅Π² Π·Π° ΠΎΠΏΠΎΠ·ΠΈΠ² ΡΠΎΠΊΠ΅Π½Π°; Π°ΠΊΠΎ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ° Π½ΠΈΡΠ΅ ΡΡΠΏΠ΅ΡΠ½ΠΎ Π·Π°Π²ΡΡΠ΅Π½Π° ΠΈ ΡΠΎΠΊΠ΅Π½ Π·Π° ΠΎΡΠ²Π΅ΠΆΠ°Π²Π°ΡΠ΅ Π½ΠΈΡΠ΅ Π²ΡΠ°ΡΠ΅Π½, ΠΏΠΎΠ½ΠΎΠ²ΠΎ ΡΠ΅ ΠΏΠΎΠΊΡΠ΅Π½ΡΡΠΈ ΠΏΡΠΎΡΠ΅Π΄ΡΡΡ (ΡΠΌΠ°ΡΡΠ°Π»ΠΈ ΡΠΌΠΎ Π΄Π° Π½ΠΈΡΠ΅ Π±Π΅Π·Π±Π΅Π΄Π½ΠΎ ΡΡΠ²Π°ΡΠΈ ΡΠΎΠΊΠ΅Π½Π΅ Π»ΠΎΠΊΠ°Π»Π½ΠΎ Π½Π° ΡΠ΅ΡΠΌΠΈΠ½Π°Π»Ρ, Π° ΠΌΠΈ Π½Π΅ Π½Π΅ ΠΆΠ΅Π»ΠΈΠΌ Π΄Π° ΠΊΠΎΠΌΠΏΠ»ΠΈΠΊΡΡΠ΅ΠΌ ΡΡΠ²Π°ΡΠΈ ΡΠ° ΠΊΡΠΈΠΏΡΠΎΠ³ΡΠ°ΡΠΈΡΠΎΠΌ ΠΈΠ»ΠΈ ΡΠ΅ΡΡΠΎ ΠΎΡΠ²Π°ΡΠ°ΠΌ ΠΏΡΠ΅ΡΡΠ°ΠΆΠΈΠ²Π°Ρ).
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
}
ΠΠ°ΠΎ ΡΡΠΎ ΡΡΠ΅ Π²Π΅Ρ ΠΏΡΠΈΠΌΠ΅ΡΠΈΠ»ΠΈ, ΠΏΡΠΈΠ»ΠΈΠΊΠΎΠΌ ΠΎΠΏΠΎΠ·ΠΈΠ²Π° ΡΠΎΠΊΠ΅Π½Π°, ΠΊΠΎΡΠΈΡΡΠΈ ΡΠ΅ ΠΠ½Π²ΠΎΠΊΠ΅-ΠΠ΅Π±Π Π΅ΠΊΡΠ΅ΡΡ. ΠΠ° ΡΠ°Π·Π»ΠΈΠΊΡ ΠΎΠ΄ ΠΠ½Π²ΠΎΠΊΠ΅-Π Π΅ΡΡΠΠ΅ΡΡ ΠΎΠ΄, ΠΎΠ½ Π½Π΅ Π²ΡΠ°ΡΠ° ΠΏΡΠΈΠΌΡΠ΅Π½Π΅ ΠΏΠΎΠ΄Π°ΡΠΊΠ΅ Ρ ΡΠΏΠΎΡΡΠ΅Π±ΡΠΈΠ²ΠΎΠΌ ΡΠΎΡΠΌΠ°ΡΡ ΠΈ ΠΏΡΠΈΠΊΠ°Π·ΡΡΠ΅ ΡΡΠ°ΡΡΡ Π·Π°Ρ ΡΠ΅Π²Π°.
ΠΠ°ΡΠΈΠΌ, ΡΠΊΡΠΈΠΏΡΠ° ΠΎΠ΄ Π²Π°Ρ ΡΡΠ°ΠΆΠΈ Π΄Π° ΡΠ½Π΅ΡΠ΅ΡΠ΅ ΠΈΠΌΠ΅ ΠΈ ΠΏΡΠ΅Π·ΠΈΠΌΠ΅ ΠΊΠΎΡΠΈΡΠ½ΠΈΠΊΠ°, Π³Π΅Π½Π΅ΡΠΈΡΡΡΠΈ ΠΏΡΠΈΡΠ°Π²Ρ + Π°Π΄ΡΠ΅ΡΡ Π΅-ΠΏΠΎΡΡΠ΅.
zahtevi
Π‘Π»Π΅Π΄Π΅ΡΠΈ Π·Π°Ρ ΡΠ΅Π²ΠΈ ΡΠ΅ Π±ΠΈΡΠΈ β ΠΏΡΠ΅ ΡΠ²Π΅Π³Π°, ΠΏΠΎΡΡΠ΅Π±Π½ΠΎ ΡΠ΅ Π΄Π° ΠΏΡΠΎΠ²Π΅ΡΠΈΡΠ΅ Π΄Π° Π»ΠΈ ΠΊΠΎΡΠΈΡΠ½ΠΈΠΊ ΡΠ° ΠΈΡΡΠΈΠΌ Π»ΠΎΠ³ΠΎΠΌ Π²Π΅Ρ ΠΏΠΎΡΡΠΎΡΠΈ Π΄Π° Π±ΠΈΡΡΠ΅ Π΄ΠΎΠ±ΠΈΠ»ΠΈ ΠΎΠ΄Π»ΡΠΊΡ ΠΎ ΠΊΡΠ΅ΠΈΡΠ°ΡΡ Π½ΠΎΠ²ΠΎΠ³ ΠΈΠ»ΠΈ ΠΎΠΌΠΎΠ³ΡΡΠ°Π²Π°ΡΡ ΠΏΠΎΡΡΠΎΡΠ΅ΡΠ΅Π³.
ΠΠ΄Π»ΡΡΠΈΠΎ ΡΠ°ΠΌ Π΄Π° ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½ΡΠΈΡΠ°ΠΌ ΡΠ²Π΅ Π·Π°Ρ ΡΠ΅Π²Π΅ Ρ ΡΠΎΡΠΌΠ°ΡΡ ΡΠ΅Π΄Π½Π΅ ΡΡΠ½ΠΊΡΠΈΡΠ΅ ΡΠ° ΠΈΠ·Π±ΠΎΡΠΎΠΌ, ΠΊΠΎΡΠΈΡΡΠ΅ΡΠΈ ΠΏΡΠ΅ΠΊΠΈΠ΄Π°Ρ:
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'])
}
}
}
}
Π£ ΡΠ²Π°ΠΊΠΎΠΌ Π·Π°Ρ ΡΠ΅Π²Ρ, ΠΏΠΎΡΡΠ΅Π±Π½ΠΎ ΡΠ΅ Π΄Π° ΠΏΠΎΡΠ°ΡΠ΅ΡΠ΅ Π·Π°Π³Π»Π°Π²ΡΠ΅ Π°ΡΡΠΎΡΠΈΠ·Π°ΡΠΈΡΠ΅ ΠΊΠΎΡΠ΅ ΡΠ°Π΄ΡΠΆΠΈ ΡΠΈΠΏ ΡΠΎΠΊΠ΅Π½Π° ΠΈ ΡΠ°ΠΌ ΡΠΎΠΊΠ΅Π½ Π·Π° ΠΏΡΠΈΡΡΡΠΏ. Π’ΡΠ΅Π½ΡΡΠ½ΠΎ ΡΠ΅ ΡΠΈΠΏ ΡΠΎΠΊΠ΅Π½Π° ΡΠ²Π΅ΠΊ Π½ΠΎΡΠΈΠ»Π°Ρ. ΠΠ΅Ρ ΠΌΠΎΡΠ°ΠΌΠΎ Π΄Π° ΠΏΡΠΎΠ²Π΅ΡΠΈΠΌΠΎ Π΄Π° ΡΠΎΠΊΠ΅Π½ Π½ΠΈΡΠ΅ ΠΈΡΡΠ΅ΠΊΠ°ΠΎ ΠΈ Π΄Π° Π³Π° Π°ΠΆΡΡΠΈΡΠ°ΠΌΠΎ Π½Π°ΠΊΠΎΠ½ ΡΠ°Ρ Π²ΡΠ΅ΠΌΠ΅Π½Π° ΠΎΠ΄ ΡΡΠ΅Π½ΡΡΠΊΠ° ΠΊΠ°Π΄Π° ΡΠ΅ ΠΈΠ·Π΄Π°Ρ, Π½Π°Π²Π΅ΠΎ ΡΠ°ΠΌ Π·Π°Ρ ΡΠ΅Π² Π·Π° Π΄ΡΡΠ³Ρ ΡΡΠ½ΠΊΡΠΈΡΡ ΠΊΠΎΡΠ° Π²ΡΠ°ΡΠ° ΠΡΡΠ΅ΡΡ ΡΠΎΠΊΠ΅Π½. ΠΡΡΠΈ Π΄Π΅ΠΎ ΠΊΠΎΠ΄Π° ΡΠ΅ Π½Π° ΠΏΠΎΡΠ΅ΡΠΊΡ ΡΠΊΡΠΈΠΏΡΠ΅ ΠΊΠ°Π΄Π° ΡΠ΅ ΠΏΡΠΈΠΌΠΈ ΠΏΡΠ²ΠΈ ΡΠΎΠΊΠ΅Π½ Π·Π° ΠΏΡΠΈΡΡΡΠΏ:
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
}
ΠΠ°Ρ ΡΠ΅Π² Π΅ΠΌΠ°ΠΈΠ»:$ΠΊΡΠ΅ΡΠΈ ΡΠ΅ ΡΡΠ°ΠΆΠΈΡΠΈ ΠΎΠ΄ ΠΠΠ-ΡΠ° Π΄Π° ΠΏΠΎΡΡΠ°ΠΆΠΈ ΠΊΠΎΡΠΈΡΠ½ΠΈΠΊΠ° ΡΠ° ΡΠΏΡΠ°Π²ΠΎ ΡΠΎΠΌ Π΅-ΠΏΠΎΡΡΠΎΠΌ, ΡΠΊΡΡΡΡΡΡΡΠΈ ΠΏΡΠ΅ΡΠ΄ΠΎΠ½ΠΈΠΌΠ΅. Π’Π°ΠΊΠΎΡΠ΅ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΊΠΎΡΠΈΡΡΠΈΡΠΈ ΡΠΎΠΊΠ΅Ρ Π·Π½Π°ΠΊ: =, :, :{ΠΠ ΠΠ€ΠΠΠ‘}*.
ΠΠ° Π΄ΠΎΠ±ΠΈΡΠ°ΡΠ΅ ΠΏΠΎΠ΄Π°ΡΠ°ΠΊΠ° ΠΊΠΎΡΠΈΡΡΠΈΡΠ΅ ΠΌΠ΅ΡΠΎΠ΄ ΠΠΠ’ Π·Π°Ρ ΡΠ΅Π²Π°, Π·Π° ΡΠ±Π°ΡΠΈΠ²Π°ΡΠ΅ ΠΏΠΎΠ΄Π°ΡΠ°ΠΊΠ° (ΠΊΡΠ΅ΠΈΡΠ°ΡΠ΅ Π½Π°Π»ΠΎΠ³Π° ΠΈΠ»ΠΈ Π΄ΠΎΠ΄Π°Π²Π°ΡΠ΅ ΡΠ»Π°Π½Π° Ρ Π³ΡΡΠΏΡ) - ΠΠΠ‘Π’, Π·Π° Π°ΠΆΡΡΠΈΡΠ°ΡΠ΅ ΠΏΠΎΡΡΠΎΡΠ΅ΡΠΈΡ ΠΏΠΎΠ΄Π°ΡΠ°ΠΊΠ° - ΠΠ£Π’, Π·Π° Π±ΡΠΈΡΠ°ΡΠ΅ Π·Π°ΠΏΠΈΡΠ° (Π½Π° ΠΏΡΠΈΠΌΠ΅Ρ, ΡΠ»Π°Π½Π° ΠΈΠ· Π³ΡΡΠΏΠ΅) - ΠΠΠΠ ΠΠ¨Π.
Π‘ΠΊΡΠΈΠΏΡΠ° ΡΠ΅ ΡΠ°ΠΊΠΎΡΠ΅ ΡΡΠ°ΠΆΠΈΡΠΈ Π±ΡΠΎΡ ΡΠ΅Π»Π΅ΡΠΎΠ½Π° (Π½Π΅ΠΏΠΎΡΠ²ΡΡΠ΅Π½ ΡΡΡΠΈΠ½Π³) ΠΈ ΡΠΊΡΡΡΠΈΠ²Π°ΡΠ΅ Ρ ΡΠ΅Π³ΠΈΠΎΠ½Π°Π»Π½Ρ Π³ΡΡΠΏΡ Π·Π° Π΄ΠΈΡΡΡΠΈΠ±ΡΡΠΈΡΡ. ΠΠ΄Π»ΡΡΡΡΠ΅ ΠΊΠΎΡΡ ΠΎΡΠ³Π°Π½ΠΈΠ·Π°ΡΠΈΠΎΠ½Ρ ΡΠ΅Π΄ΠΈΠ½ΠΈΡΡ ΠΊΠΎΡΠΈΡΠ½ΠΈΠΊ ΡΡΠ΅Π±Π° Π΄Π° ΠΈΠΌΠ° Π½Π° ΠΎΡΠ½ΠΎΠ²Ρ ΠΈΠ·Π°Π±ΡΠ°Π½ΠΎΠ³ ΠΡΡΠΈΠ²Π΅ ΠΠΈΡΠ΅ΡΡΠΎΡΠΈ ΠΠ£ ΠΈ Π΄ΠΎΠ½ΠΎΡΠΈ Π»ΠΎΠ·ΠΈΠ½ΠΊΡ:
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
}
Π€ΡΠ½ΠΊΡΠΈΡΠ΅ Π·Π° Π°ΠΆΡΡΠΈΡΠ°ΡΠ΅ ΠΈ ΠΊΡΠ΅ΠΈΡΠ°ΡΠ΅ Π½Π°Π»ΠΎΠ³Π° ΠΈΠΌΠ°ΡΡ ΡΠ»ΠΈΡΠ½Ρ ΡΠΈΠ½ΡΠ°ΠΊΡΡ, Π½ΠΈΡΡ ΠΏΠΎΡΡΠ΅Π±Π½Π° ΡΠ²Π° Π΄ΠΎΠ΄Π°ΡΠ½Π° ΠΏΠΎΡΠ°, Ρ ΠΎΠ΄Π΅ΡΠΊΡ ΡΠ° Π±ΡΠΎΡΠ΅Π²ΠΈΠΌΠ° ΡΠ΅Π»Π΅ΡΠΎΠ½Π° ΠΏΠΎΡΡΠ΅Π±Π½ΠΎ ΡΠ΅ Π΄Π° Π½Π°Π²Π΅Π΄Π΅ΡΠ΅ Π½ΠΈΠ· ΠΊΠΎΡΠΈ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ°Π΄ΡΠΆΠΈ Π΄ΠΎ ΡΠ΅Π΄Π½ΠΎΠ³ Π·Π°ΠΏΠΈΡΠ° ΡΠ° Π±ΡΠΎΡΠ΅ΠΌ ΠΈ ΡΠ΅Π³ΠΎΠ²ΠΈΠΌ ΡΠΈΠΏΠΎΠΌ.
ΠΠ° Π½Π΅ Π±ΠΈΡΠΌΠΎ Π΄ΠΎΠ±ΠΈΠ»ΠΈ Π³ΡΠ΅ΡΠΊΡ ΠΏΡΠΈΠ»ΠΈΠΊΠΎΠΌ Π΄ΠΎΠ΄Π°Π²Π°ΡΠ° ΠΊΠΎΡΠΈΡΠ½ΠΈΠΊΠ° Ρ Π³ΡΡΠΏΡ, ΠΏΡΠ²ΠΎ ΠΌΠΎΠΆΠ΅ΠΌΠΎ Π΄Π° ΠΏΡΠΎΠ²Π΅ΡΠΈΠΌΠΎ Π΄Π° Π»ΠΈ ΡΠ΅ Π²Π΅Ρ ΡΠ»Π°Π½ ΠΎΠ²Π΅ Π³ΡΡΠΏΠ΅ ΡΠ°ΠΊΠΎ ΡΡΠΎ ΡΠ΅ΠΌΠΎ ΠΎΠ΄ ΡΠ°ΠΌΠΎΠ³ ΠΊΠΎΡΠΈΡΠ½ΠΈΠΊΠ° Π΄ΠΎΠ±ΠΈΡΠΈ Π»ΠΈΡΡΡ ΡΠ»Π°Π½ΠΎΠ²Π° Π³ΡΡΠΏΠ΅ ΠΈΠ»ΠΈ ΡΠ°ΡΡΠ°Π².
ΠΠΎΡΡΠ°Π²ΡΠ°ΡΠ΅ ΡΠΏΠΈΡΠ° ΠΎ ΡΠ»Π°Π½ΡΡΠ²Ρ Ρ Π³ΡΡΠΏΠΈ ΠΎΠ΄ΡΠ΅ΡΠ΅Π½ΠΎΠ³ ΠΊΠΎΡΠΈΡΠ½ΠΈΠΊΠ° Π½Π΅ΡΠ΅ Π±ΠΈΡΠΈ ΡΠ΅ΠΊΡΡΠ·ΠΈΠ²Π½ΠΎ ΠΈ ΠΏΠΎΠΊΠ°Π·Π°ΡΠ΅ ΡΠ°ΠΌΠΎ Π΄ΠΈΡΠ΅ΠΊΡΠ½ΠΎ ΡΠ»Π°Π½ΡΡΠ²ΠΎ. Π£ΠΊΡΡΡΠΈΠ²Π°ΡΠ΅ ΠΊΠΎΡΠΈΡΠ½ΠΈΠΊΠ° Ρ ΡΠΎΠ΄ΠΈΡΠ΅ΡΡΠΊΡ Π³ΡΡΠΏΡ ΠΊΠΎΡΠ° Π²Π΅Ρ ΠΈΠΌΠ° ΠΏΠΎΠ΄ΡΠ΅ΡΠ΅Π½Ρ Π³ΡΡΠΏΡ ΡΠΈΡΠΈ ΡΠ΅ ΠΊΠΎΡΠΈΡΠ½ΠΈΠΊ ΡΠ»Π°Π½ ΡΠ΅ ΡΡΠΏΠ΅ΡΠΈ.
ΠΠ°ΠΊΡΡΡΠ°ΠΊ
ΠΡΡΠ°ΡΠ΅ ΡΠ°ΠΌΠΎ Π΄Π° ΠΏΠΎΡΠ°ΡΠ΅ΡΠ΅ ΠΊΠΎΡΠΈΡΠ½ΠΈΠΊΡ Π»ΠΎΠ·ΠΈΠ½ΠΊΡ Π·Π° Π½ΠΎΠ²ΠΈ Π½Π°Π»ΠΎΠ³. Π’ΠΎ ΡΠ°Π΄ΠΈΠΌΠΎ ΠΏΡΡΠ΅ΠΌ Π‘ΠΠ‘-Π°, Π° ΠΎΠΏΡΡΠ΅ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡΠ΅ ΡΠ° ΡΠΏΡΡΡΡΠ²ΠΈΠΌΠ° ΠΈ ΠΏΡΠΈΡΠ°Π²ΠΎΠΌ ΡΠ°ΡΠ΅ΠΌΠΎ Π½Π° Π»ΠΈΡΠ½ΠΈ Π΅-ΠΌΠ°ΠΈΠ», ΠΊΠΎΡΠΈ ΡΠ΅, ΡΠ· Π±ΡΠΎΡ ΡΠ΅Π»Π΅ΡΠΎΠ½Π°, Π΄Π°ΠΎ ΠΎΠ΄Π΅ΡΠ΅ΡΠ΅ Π·Π° Π·Π°ΠΏΠΎΡΡΠ°Π²Π°ΡΠ΅. ΠΠ°ΠΎ Π°Π»ΡΠ΅ΡΠ½Π°ΡΠΈΠ²Ρ, ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΡΡΠ΅Π΄Π΅ΡΠΈ Π½ΠΎΠ²Π°Ρ ΠΈ ΠΏΠΎΡΠ»Π°ΡΠΈ ΡΠ²ΠΎΡΡ Π»ΠΎΠ·ΠΈΠ½ΠΊΡ Ρ ΡΠ°ΡΠ½ΠΈ ΡΠ΅Π»Π΅Π³ΡΠ°ΠΌ ΡΠ°ΡΠΊΠ°ΡΠ΅, ΡΡΠΎ ΡΠ΅ ΡΠ°ΠΊΠΎΡΠ΅ ΠΌΠΎΠΆΠ΅ ΡΠΌΠ°ΡΡΠ°ΡΠΈ Π΄ΡΡΠ³ΠΈΠΌ ΡΠ°ΠΊΡΠΎΡΠΎΠΌ (ΠΠ°ΡΠΠΎΠΎΠΊΡ ΡΠ΅ Π±ΠΈΡΠΈ ΠΈΠ·ΡΠ·Π΅ΡΠ°ΠΊ).
Π₯Π²Π°Π»Π° Π²Π°ΠΌ ΡΡΠΎ ΡΡΠ΅ ΠΏΡΠΎΡΠΈΡΠ°Π»ΠΈ Π΄ΠΎ ΠΊΡΠ°ΡΠ°. ΠΠΈΡΠ΅ ΠΌΠΈ Π΄ΡΠ°Π³ΠΎ Π΄Π° Π²ΠΈΠ΄ΠΈΠΌ ΠΏΡΠ΅Π΄Π»ΠΎΠ³Π΅ Π·Π° ΠΏΠΎΠ±ΠΎΡΡΠ°ΡΠ΅ ΡΡΠΈΠ»Π° ΠΏΠΈΡΠ°ΡΠ° ΡΠ»Π°Π½Π°ΠΊΠ° ΠΈ ΠΆΠ΅Π»ΠΈΠΌ Π²Π°ΠΌ Π΄Π° ΡΡ Π²Π°ΡΠΈΡΠ΅ ΠΌΠ°ΡΠ΅ Π³ΡΠ΅ΡΠ°ΠΊΠ° ΠΏΡΠΈ ΠΏΠΈΡΠ°ΡΡ ΡΠΊΡΠΈΠΏΡΠΈ =)
Π‘ΠΏΠΈΡΠ°ΠΊ Π»ΠΈΠ½ΠΊΠΎΠ²Π° ΠΊΠΎΡΠΈ ΠΌΠΎΠ³Ρ Π±ΠΈΡΠΈ ΡΠ΅ΠΌΠ°ΡΡΠΊΠΈ ΠΊΠΎΡΠΈΡΠ½ΠΈ ΠΈΠ»ΠΈ ΡΠ΅Π΄Π½ΠΎΡΡΠ°Π²Π½ΠΎ ΠΎΠ΄Π³ΠΎΠ²ΠΎΡΠΈΡΠΈ Π½Π° ΠΏΠΈΡΠ°ΡΠ°:
ΠΠΡΡΡ 2.0 Π·Π° ΠΌΠΎΠ±ΠΈΠ»Π½Π΅ ΠΈ Π΄Π΅ΡΠΊΡΠΎΠΏ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ΅ ΠΠΎΡΠΈΡΡΠ΅ΡΠ΅ ΠΠΡΡΡ 2.0 Π·Π° Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ΅ Π²Π΅Π± ΡΠ΅ΡΠ²Π΅ΡΠ° ΠΡΡΡ Π΄ΠΎΠΊΠ°Π·Π° Π·Π° ΡΠ°Π·ΠΌΠ΅Π½Ρ ΠΊΠΎΠ΄ΠΎΠ²Π° ΠΎΠ΄ ΡΡΡΠ°Π½Π΅ ΠΠΡΡΡ ΡΠ°Π²Π½ΠΈΡ ΠΊΠ»ΠΈΡΠ΅Π½Π°ΡΠ° ΠΠ΅Π½Π΅ΡΠΈΡΠΈΡΠ΅ Π½Π°ΡΡΠΌΠΈΡΠ½Π° ΡΠ»ΠΎΠ²Π° ΠΏΠΎΠΌΠΎΡΡ ΠΠΎΠ²Π΅ΡΠ‘Ρ Π΅Π»Π»-Π° ΠΠ‘Π¦ΠΠ ΡΠ°Π±Π΅Π»Π° ΠΈ ΠΎΠΏΠΈΡ ΠΠΎΠ²Π΅ΡΠ‘Ρ Π΅Π»Π»: ΠΠΎΠ±ΠΈΡΠ°ΡΠ΅ Ρ Π΅Ρ Π²ΡΠ΅Π΄Π½ΠΎΡΡΠΈ Π·Π° ΡΡΡΠΈΠ½Π³ ΠΠ½ΡΠΎΠ΄Π΅/ΠΠ΅ΡΠΎΠ΄Π΅ ΠΠ°ΡΠ΅64Π£ΡΠ» ΠΠ°ΡΠ΅64 ΠΊΠΎΠ΄ΠΈΡΠ°ΡΠ΅ Π½Π°ΡΠΏΡΠ°ΠΌ ΠΠ°ΡΠ΅64ΡΡΠ» ΠΊΠΎΠ΄ΠΈΡΠ°ΡΠ΅ ΠΠ½Π²ΠΎΠΊΠ΅-Π Π΅ΡΡΠΠ΅ΡΡ ΠΎΠ΄ Ρ ΠΠΎΠ²Π΅ΡΠ‘Ρ Π΅Π»Π»-Ρ 5.1 ΠΠ΅ Π΄ΠΎΠ±ΠΈΡΠ°ΠΌ ΡΠΎΠΊΠ΅Π½ Π·Π° ΠΎΡΠ²Π΅ΠΆΠ°Π²Π°ΡΠ΅ ΠΈΠ°ΠΊΠΎ ΡΠ΅ Π°ΡΡΠ΅ΡΡ_ΡΠΈΠΏΠ΅ ΠΎΡΠ»Π°ΡΠ½ Ρ ΠΊΠΎΡΠ°ΠΊΡ 1 Π ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠΈΠΌΠ° ΠΏΠΎΡΠ΅ΡΠ΅ΡΠ° ΠΠΠ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡΡΠΌΠ°: ΠΊΠΎΡΠΈΡΠ½ΠΈΡΠΊΠΈ Π½Π°Π»ΠΎΠ·ΠΈ Π’ΡΠ°ΠΆΠΈΡΠ΅ ΠΊΠΎΡΠΈΡΠ½ΠΈΠΊΠ΅ ΠΠΠ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡΡΠΌΠ°: Π³ΡΡΠΏΠ΅ Π ΡΠΊΠΎΠ²Π°ΡΠ΅ Π³ΡΠ΅ΡΠΊΠ°ΠΌΠ° Π·Π° ΠΠ½Π²ΠΎΠΊΠ΅-Π Π΅ΡΡΠΠ΅ΡΡ ΠΎΠ΄ β ΠΠΎΠ²Π΅ΡΡΡ Π΅Π»Π»
ΠΠ·Π²ΠΎΡ: Π²Π²Π².Ρ Π°Π±Ρ.ΡΠΎΠΌ