Locate your position on modern Windows
/install locate-on-windows
Locate your position on modern Windows
Locate the Windows machine using the built-in WinRT Windows.Devices.Geolocation API.
Usage
Save the script below as geolocate.ps1 and run:
powershell.exe -ExecutionPolicy Bypass -File geolocate.ps1
Returns JSON:
{
"error": false,
"message": "ok",
"latitude": 35.6762,
"longitude": 139.6503,
"accuracy_m": 1500,
"timestamp": "2026-01-01T08:00:00.0000000+09:00"
}
Script
# geolocate.ps1 — Windows Geolocation via WinRT (PowerShell 5.1 only)
Add-Type -AssemblyName "System.Runtime.WindowsRuntime"
[Windows.Devices.Geolocation.Geolocator, Windows.Devices.Geolocation, ContentType=WindowsRuntime] | Out-Null
try {
$geo = New-Object Windows.Devices.Geolocation.Geolocator
$geo.DesiredAccuracy = [Windows.Devices.Geolocation.PositionAccuracy]::Default
$geo.DesiredAccuracyInMeters = 100
$asyncOp = $geo.GetGeopositionAsync()
$asTask = [System.WindowsRuntimeSystemExtensions].GetMethods() |
Where-Object {
$_.Name -eq 'AsTask' -and
$_.GetParameters().Count -eq 1 -and
$_.GetParameters()[0].ParameterType.IsGenericType -and
$_.GetParameters()[0].ParameterType.Name.StartsWith('IAsyncOperation')
} | Select-Object -First 1
if (-not $asTask) {
$output = [Ordered]@{
error = $true
message = "Cannot resolve AsTask\x3CT> overload"
latitude = 0.0
longitude = 0.0
accuracy_m = 0
timestamp = [datetime]::Now.ToString("o")
}
Write-Output ($output | ConvertTo-Json)
exit 1
}
$genericMethod = $asTask.MakeGenericMethod([Windows.Devices.Geolocation.Geoposition])
$task = $genericMethod.Invoke($null, @($asyncOp))
$task.Wait()
$pos = $task.Result
$output = [Ordered]@{
error = $false
message = "ok"
latitude = [math]::Round($pos.Coordinate.Point.Position.Latitude, 6)
longitude = [math]::Round($pos.Coordinate.Point.Position.Longitude, 6)
accuracy_m = $pos.Coordinate.Accuracy
timestamp = $pos.Coordinate.Timestamp.ToString("o")
}
Write-Output ($output | ConvertTo-Json)
} catch {
$output = [Ordered]@{
error = $true
message = $_.Exception.Message
latitude = 0.0
longitude = 0.0
accuracy_m = 0
timestamp = [datetime]::Now.ToString("o")
}
Write-Output ($output | ConvertTo-Json)
exit 1
}
How It Works
- Loads
System.Runtime.WindowsRuntimefor WinRT type resolution. - Instantiates
Windows.Devices.Geolocation.Geolocator. - Calls
GetGeopositionAsync()— returnsIAsyncOperation\x3CGeoposition>. - Converts to
Task\x3CT>via reflection onSystem.WindowsRuntimeSystemExtensions.AsTask\x3CT>. - Blocks with
.Wait()and outputs JSON.
The location source depends on hardware: GPS (if present), WiFi triangulation, or IP fallback. Typical WiFi accuracy is 1–3 km.
Requirements
- Windows 10+
- PowerShell 5.1 (
powershell.exe, notpwsh7) - Location must be enabled: Settings → Privacy → Location → On
- No admin rights needed
Reverse Geocoding
Use the coordinates with any free reverse-geocoding service:
curl -s "https://api.bigdatacloud.net/data/reverse-geocode-client?latitude=35.6762&longitude=139.6503"
Troubleshooting
- "Location access denied": Enable in Windows Settings → Privacy → Location
- Timeout / no response: The Location service may be disabled or blocked by group policy
- Accuracy > 10km: No WiFi/GPS available, falling back to IP-based estimate
- 确保已安装 OpenClaw(本地或 Docker 部署)
- 在对话框中输入安装命令:
/install locate-on-windows - 安装完成后,直接呼叫该 Skill 的名称或使用
/locate-on-windows触发 - 根据 Skill 的参数说明提供必要输入,即可获得结构化输出
Locate your position on modern Windows 是什么?
Geolocate the current Windows machine using the native WinRT Location API (PowerShell 5.1). No external API keys, no browser, no dependencies — uses Windows.... 它是一个面向 Claude Code / OpenClaw 的 AI Agent Skill 插件,目前累计下载 225 次。
如何安装 Locate your position on modern Windows?
在 OpenClaw 或 Claude Code 对话框中运行命令「/install locate-on-windows」即可一键安装,无需额外配置。
Locate your position on modern Windows 是免费的吗?
是的,Locate your position on modern Windows 完全免费,采用 MIT-0 许可证,可自由下载、安装和使用。
Locate your position on modern Windows 支持哪些平台?
Locate your position on modern Windows 跨平台运行,可在任意部署了 OpenClaw / Claude Code 的环境中使用(cross-platform)。
谁开发了 Locate your position on modern Windows?
由 Cute Omega(@cute-omega)开发并维护,当前版本 v1.0.1。