尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

gogcli 管理 Google Workspace 组织单位:`gog admin orgunits create` 命令全解析

gogcli 管理 Google Workspace 组织单位:`gog admin orgunits create` 命令全解析 gogcli 管理 Google Workspace 组织单位gog admin orgunits create命令全解析【免费下载链接】gogcliGoogle Workspace in your terminal.项目地址: https://gitcode.com/GitHub_Trending/gogcl/gogcli本命令页面由gog schema --json自动生成参见 docs/commands/gog-admin-orgunits-create.md 顶部说明重新生成需执行make docs-commands。导读gog admin orgunits create是 gogcliGoogle Workspace in your terminal提供的用于在 Google Workspace 中创建组织单位Organizational UnitOU的命令。它是gog admin orgunits子命令族的一员面向需要以脚本化、可重复方式搭建企业目录结构的运维与管理员。读完本文你将掌握该命令的完整用法、参数语义、底层 API 调用链基于 Google Admin SDK Directory API 的Orgunits.Insert、前置权限要求、输出格式选项以及相关的测试验证方式能够直接在你的终端中落地创建组织单位的操作。命令概览与别名该命令位于gog admin orgunits命令族下完整用法为gog admin orgunits (org-units,ou) create (add,new) name [flags]从源码看子命令与别名定义在 internal/cmd/admin_orgunits.gotype AdminOrgunitsCmd struct { List AdminOrgunitsListCmd cmd: name:list aliases:ls help:List organizational units Get AdminOrgunitsGetCmd cmd: name:get aliases:info,show help:Get organizational unit details Create AdminOrgunitsCreateCmd cmd: name:create aliases:add,new help:Create an organizational unit Update AdminOrgunitsUpdateCmd cmd: name:update aliases:edit,set help:Update an organizational unit Delete AdminOrgunitsDeleteCmd cmd: name:delete aliases:rm,del,remove help:Delete an organizational unit }因此以下写法完全等价gog admin orgunits create Engineering gog admin orgunits add Engineering gog admin orgunits new Engineering gog admin ou create Engineering gog admin org-units create Engineeringgog admin orgunits命令族还包含 get、list、update、delete 等子命令详见 gog admin orgunits其父命令为 gog admin。位置参数与业务参数create子命令接受一个必选位置参数和两个可选业务参数定义于 internal/cmd/admin_orgunits.gotype AdminOrgunitsCreateCmd struct { Name string arg: name:name help:Org unit name Parent string name:parent help:Parent org unit path default:/ Description string name:description help:Description }参数类型必填说明namestring位置参数是新建组织单位的名称。源码中会先TrimSpace去除首尾空白若为空则报错org unit name required--parentstring否父组织单位路径默认值为/即根目录。传入/Product这类以/开头的路径即可--descriptionstring否组织单位的描述信息同样会被去除首尾空白后写入默认父路径与参数清洗逻辑create的参数清洗与默认值逻辑在 internal/cmd/admin_orgunit_plan.go 中实现func newAdminOrgUnitCreatePlan(input adminOrgUnitCreateInput) (adminOrgUnitCreatePlan, error) { name : strings.TrimSpace(input.Name) if name { return adminOrgUnitCreatePlan{}, usage(org unit name required) } parent : strings.TrimSpace(input.Parent) if parent { parent / } return adminOrgUnitCreatePlan{ Request: admin.OrgUnit{ Name: name, ParentOrgUnitPath: parent, Description: strings.TrimSpace(input.Description), }, }, nil }值得注意的两点实现事实名称必填name为空或全为空白时命令直接以org unit name required的用法错误退出父路径兜底--parent即使显式传入空字符串也会被回退为/保证组织单位始终挂在某个父节点之下根路径为/。底层执行流程与 Admin SDK API 调用create子命令的Run方法internal/cmd/admin_orgunits.go按以下顺序执行构建创建计划adminOrgUnitCreatePlan即上文的参数清洗与默认值处理调用dryRunExit(ctx, flags, admin.orgunits.create, plan.Request)检查是否处于--dry-run模式——若启用则只打印将要执行的动作并成功退出不会真正改动云端数据调用requireAdminAccount(flags)校验账户通过adminOrgUnitDirectoryService(ctx, account)获取 Admin SDK Directory 服务见 internal/cmd/runtime_services.go调用 Directory API 的Orgunits.Insert(adminCustomerID, plan.Request)创建组织单位其中adminCustomerID固定为my_customer见 internal/cmd/admin_common.go表示操作当前 Workspace 客户域按输出模式输出结果JSON 模式下输出 API 返回的完整OrgUnit对象普通模式下打印Created org unit: name (path)。created, err : svc.Orgunits.Insert(adminCustomerID, plan.Request).Context(ctx).Do() if err ! nil { return wrapAdminOrgUnitDirectoryError(err, account) } if outfmt.IsJSON(ctx) { return outfmt.WriteJSON(ctx, stdoutWriter(ctx), created) } u.Out().Linef(Created org unit: %s (%s), created.Name, created.OrgUnitPath)成功创建后API 返回的OrgUnit对象会带上服务端生成的OrgUnitPath如/Engineering与OrgUnitId可用get/list子命令复核。前置条件账户与权限要求创建组织单位属于管理类写操作requireAdminAccountinternal/cmd/admin_common.go会强制要求使用Google Workspace 账户普通消费者账户gmail.com / googlemail.com会被直接拒绝Admin SDK Directory API requires a Google Workspace account with domain-wide delegation; consumer accounts (gmail.com/googlemail.com) are not supported.同时wrapAdminOrgUnitDirectoryErrorinternal/cmd/admin_common.go会针对常见失败场景给出可操作的错误提示accessNotConfigured/Admin SDK API has not been used提示先在 Google Cloud Console 启用 Admin SDK APIadmin.googleapis.cominsufficientPermissions/Not Authorized提示服务账号需启用admin.directory.orgunit作用域的域级委派domain-wide delegationdomain_wide_delegation/invalid_grant提示在 Google Workspace 管理控制台正确配置域级委派。因此运行本命令前请确保已配置 Workspace 管理员账户--account指定或--acct别名并具备admin.directory.orgunit读写作用域的授权。完整 Flags 参考除业务参数外gog admin orgunits create继承 gogcli 全部全局标志完整清单如下与 docs/commands/gog-admin-orgunits-create.md 一致Flag类型默认值说明--access-tokenstring直接使用提供的访问令牌绕过已存储的刷新令牌令牌约 1 小时过期-a--account--acctstring用于 Google API 认证命令的账户邮箱、别名或auto--clientstringOAuth 客户端名称选择已存储的凭据与令牌桶--colorstringauto彩色输出auto\|always\|never--descriptionstring组织单位描述--disable-commandsstring逗号分隔的禁用命令列表支持点路径-n--dry-run--dryrun--noop--previewbool不做任何修改打印预期动作并以成功状态退出--enable-commandsstring逗号分隔的启用命令前缀列表支持点路径限制 CLI 可用范围--enable-commands-exactstring逗号分隔的精确启用命令列表支持点路径父命令不会自动启用子命令-y--force--assume-yes--yesbool跳过破坏性命令的确认提示--gmail-no-sendboolfalse阻止 Gmail 发送操作Agent 安全开关-h--helpkong.helpFlag显示上下文相关帮助--homestring覆盖 gogcli 配置/数据/状态/缓存根目录等价于GOG_HOME-j--json--machineboolfalse向 stdout 输出 JSON最适合脚本化处理--no-input--non-interactive--noninteractivebool永不提示改为直接失败适合 CI--parentstring/父组织单位路径-p--plain--tsvboolfalse向 stdout 输出稳定、可解析的纯文本TSV无颜色--quota-projectstring用于 API 用量计费的 Google Cloud 项目以X-Goog-User-Project头发送部分 API 在--access-token或 ADC 模式下要求此参数--readonlyboolfalse运行时阻止变更型 API 请求auth add也仅申请只读 OAuth 作用域--results-onlyboolJSON 模式下仅输出主结果丢弃nextPageToken等信封字段--select--pick--projectstringJSON 模式下按逗号分隔选择字段尽力而为支持点路径。更推荐使用--fields-v--verbosebool开启详细日志--versionkong.VersionFlag打印版本并退出--wrap-untrustedboolfalseJSON/raw 输出中将抓取到的文本字段包裹在外部不可信内容标记中实战示例1. 在根目录下创建组织单位gog admin orgunits create Engineering输出示例Created org unit: Engineering (/Engineering)2. 指定父路径与描述gog admin orgunits create Frontend --parent /Engineering --description Web frontend team3. 使用别名与账户指定gog admin ou add Frontend --parent /Engineering --acct adminexample.com4. 预演模式不真正创建gog admin orgunits create Engineering --dry-run--dry-run别名-n/--noop/--preview会调用dryRunExit见 internal/cmd/dryrun.go打印预期动作后成功退出适合在批量建 OU 前校验脚本对应的端到端测试位于 internal/cmd/dryrun_e2e_test.go。5. 脚本化JSON 输出gog admin orgunits create Analytics --jsonJSON 模式直接输出 Admin SDK 返回的OrgUnit对象含orgUnitPath、orgUnitId、parentOrgUnitPath等字段方便被下游脚本消费配合--results-only可只保留主结果。输出校验与后续操作创建成功后可以用同族的 list--parent、--type支持或 get 验证结果。list的表格输出列定义在 internal/cmd/admin_presentation.go包含PATH、NAME、ID、PARENT、DESCRIPTION五列gog admin orgunits list gog admin orgunits get /Engineering需要调整名称、父路径或描述时使用 update需要移除组织单位时使用 delete该命令为破坏性操作会触发确认提示可通过-y/--force跳过。完整命令索引见 docs/commands/README.md。测试与实现佐证仓库为创建计划的参数处理提供了单元测试internal/cmd/admin_orgunit_plan_test.go可验证三个关键行为首尾空白清理Name: Engineering 会被整理为EngineeringParent: /Product 会被整理为/Product默认父路径未传--parent时ParentOrgUnitPath为/名称必填校验空名称返回org unit name required见同文件TestNewAdminOrgUnitPlanValidation。总结gog admin orgunits create将 Google Workspace 管理控制台中新建组织单位的操作完整映射为一条可脚本化、可预演、可 JSON 输出的 CLI 命令。其核心链路为参数清洗admin_orgunit_plan.go→ 账户与权限校验admin_common.go→ Admin SDK Directory APIOrgunits.Insert。结合--dry-run预演、--json结构化输出以及同族的list/get/update/delete子命令可以安全、高效地以代码方式维护整个 Workspace 的组织架构。【免费下载链接】gogcliGoogle Workspace in your terminal.项目地址: https://gitcode.com/GitHub_Trending/gogcl/gogcli创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表