如何在Windows PowerShell中获取当前用户名?


当前回答

如果你习惯批处理,你可以打电话

$user=$(cmd.exe /c echo %username%)

这基本上窃取了如果你有一个只有“echo %username%”的批处理文件的输出。

其他回答

我找到了:

$env:UserName

还有:

$env:UserDomain
$env:ComputerName

只是在其他人工作的基础上:

[String] ${stUserDomain},[String]  ${stUserAccount} = [System.Security.Principal.WindowsIdentity]::GetCurrent().Name.split("\")

在Windows上,你可以:

[System.Security.Principal.WindowsIdentity]::GetCurrent().Name

如果你习惯批处理,你可以打电话

$user=$(cmd.exe /c echo %username%)

这基本上窃取了如果你有一个只有“echo %username%”的批处理文件的输出。

我没有看到任何基于Add-Type的例子。这里是一个使用GetUserName直接从advapi32.dll。

$sig = @'
[DllImport("advapi32.dll", SetLastError = true)]
public static extern bool GetUserName(System.Text.StringBuilder sb, ref Int32 length);
'@

Add-Type -MemberDefinition $sig -Namespace Advapi32 -Name Util

$size = 64
$str = New-Object System.Text.StringBuilder -ArgumentList $size

[Advapi32.util]::GetUserName($str, [ref]$size) |Out-Null
$str.ToString()