首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Powershell获取当前域或计算机名\USER以及两者之间的区别

Powershell获取当前域或计算机名\USER以及两者之间的区别
EN

Stack Overflow用户
提问于 2019-10-18 07:25:12
回答 2查看 4.9K关注 0票数 0

我正在编写一个脚本,将我的API注册为windows服务。我遵循这个指南这里并尽我最大的能力填充它,因为我是PS的新手:

代码语言:javascript
复制
$acl = Get-Acl "$PSScriptRoot"
$aclRuleArgs = {DOMAIN OR COMPUTER NAME\USER}, "Read,Write,ReadAndExecute", "ContainerInherit,ObjectInherit", "None", "Allow"
$accessRule = New-Object System.Security.AccessControl.FileSystemAccessRule($aclRuleArgs)
$acl.SetAccessRule($accessRule)
$acl | Set-Acl "$PSScriptRoot"

New-Service -Name MyAPIService -BinaryPathName $PSScriptRoot\MyAPIService.exe -Credential {DOMAIN OR COMPUTER NAME\USER} -Description "API" -DisplayName "API Service" -StartupType Automatic

我想知道的是,如何获得当前域名或计算机名称,就像我使用$PSScriptRoot获得当前目录一样。该服务将在Windows 10上运行。

我也不知道是否应该使用域名或计算机名\user?在什么情况下,我需要一个或另一个?

编辑:使用@Patrick使其工作的,下面是工作脚本:

代码语言:javascript
复制
$acl = Get-Acl "$PSScriptRoot"
$aclRuleArgs = "$env:COMPUTERNAME\$env:USERNAME", "Read,Write,ReadAndExecute", "ContainerInherit,ObjectInherit", "None", "Allow"
$accessRule = New-Object System.Security.AccessControl.FileSystemAccessRule($aclRuleArgs)
$acl.SetAccessRule($accessRule)
$acl | Set-Acl "$PSScriptRoot"

New-Service -Name MyAPIService -BinaryPathName $PSScriptRoot\MyAPIService.exe Description "API" -DisplayName "API Service" -StartupType Automatic
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-10-18 08:12:47

看看这里:关于环境变量

代码语言:javascript
复制
$env:COMPUTERNAME
$env:USERNAME
$env:USERDNSDOMAIN

关于用户:

它是本地用户还是域用户?如果是本地的,请使用“COMPUTERNAME\USERNAME”。“域\用户名”

票数 2
EN

Stack Overflow用户

发布于 2019-10-18 10:10:20

代码语言:javascript
复制
[System.Security.Principal.WindowsIdentity]::GetCurrent().Name

它应该包括计算机或域名-所以不需要自己构建这些。但是,这是针对当前登录用户的--就像建议您在其他地方使用的环境变量一样。

此外,它不能通过简单地覆盖环境变量来编辑。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58445871

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档