Во-первых, это аккуратный сервис, api.ipify.org, мне придется использовать его в будущем.
Во-вторых, я думаю, что единственная проблема здесь - это ваше определение $url
,
Синтаксис, который вы использовали ранее, фактически выдает ошибку, если вы пытаетесь запустить строку самостоятельно, ошибка, показанная здесь.
"https://username:password.google.com/nic/update?hostname=home.domain.com&myip="$ip""
At line:1 char:81
+ ... e:password.google.com/nic/update?hostname=home.domain.com&myip="$ip""
+ ~~~~~
Unexpected token '$ip""' in expression or statement.
В PowerShell вы должны использовать синтаксис расширения строки, как этот, вместо вложенных кавычек.
$uri = "https://username:password.google.com/nic/update?hostname=home.domain.com&myip=$($ip)"
Обновление
Здесь вы найдете документы по API https://support.google.com/domains/answer/6147083?hl=en. Они говорят, чтобы предоставить ваше имя пользователя и пароль, используя Basi c Auth, что делает закодированную в base64 строку ваших учетных данных. Мы можем сделать это в PowerShell довольно легко!
Вы можете предоставить свои учетные данные, используя командлет Get-Credential
для их сохранения, затем передать их в Invoke-RestMethod
и добавить -Credential
и -Authentication
в качестве параметров. Вот как будет выглядеть законченное решение.
$ipuri = "https://api.ipify.org"
$ip = Invoke-RestMethod -Uri $ipuri
#Send fetched IP address to Google Domains through their API
$myCredential = Get-Credential #you'll be prompted to provide your google username and pwd.
$uri = "https://domains.google.com/nic/update?hostname=home.domain.com&myip=$($ip)"
Invoke-RestMethod -Method 'POST' -Uri $uri -Credential $myCredential -Authentication Basic