Wie kann ich den aktuellen Benutzernamen in Windows PowerShell abrufen?
Bitte erklären Sie, was dieser Code bewirkt und warum er nützlicher ist als eine der kürzeren Methoden.
Wie kann ich den aktuellen Benutzernamen in Windows PowerShell abrufen?
Ich habe nichts gesehen. Add-Type basierte Beispiele. Hier ist eines, das den GetUserName direkt aus advapi32.dll verwendet.
$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()
Bitte erklären Sie, was dieser Code bewirkt und warum er nützlicher ist als eine der kürzeren Methoden.
@BenjaminHubbard In der Frage wird nicht nach der kürzesten Methode gefragt, sondern danach, wie man die Aufgabe mit Powershell bewältigen kann. Dies macht den Trick anders als die anderen Beispiele, indem die Funktion innerhalb der DLL aufgerufen und die Add-Type-Methode für den Zugriff auf .NET verwendet wird.
Dies ist zwar ein neuartiger Codeblock, aber es wäre toll, wenn ich wüsste, was zum Teufel er tut. Können Sie ihn vielleicht mit Kommentaren versehen? Vielen Dank!
Ich stimme ab, weil: a) Sie die $(...)
ist überflüssig: $a = cmd.exe /c echo %username%
funktioniert, b) es ist nicht portabel, c) es beantwortet nicht die Frage, wie man es in Powershell macht, sondern wie man es in Dos macht, und es ist besser, einem Mann eine Angelrute zu geben, als ihm einen Fisch zu geben, z.B. powershell puts environment variables into $env, so %username% = $env:username
.
Ich finde es am einfachsten: cd $home \Desktop\
In meinem Fall musste ich den Benutzernamen abrufen, damit das Skript den Pfad ändern kann, d. h. c: \users\ %Benutzername%. Ich musste das Skript starten, indem ich den Pfad zum Desktop des Benutzers änderte. Mit Hilfe von oben und anderen Quellen konnte ich dies mit dem Applet get-location erreichen.
Vielleicht haben Sie eine andere oder sogar bessere Methode, aber bei mir hat es so funktioniert:
$Pfad = Get-Location
Set-Location $Pfad \Desktop
Annahmen, die sich auf das Home-Verzeichnis stützen, funktionieren nur unter ganz bestimmten Bedingungen.
Wenn Sie in einem Powershell-Terminal arbeiten und nur schnell herausfinden wollen, welcher Benutzer Sie sind, dann sollten Sie "ls ~" eingeben. Wie der oben genannte Poster kann es Ausnahmen geben, und dies ist definitiv nicht gut für Skripte, also verwenden Sie in diesem Fall das Beispiel von Edouard Poor.
In meinem Fall musste ich den Benutzernamen abrufen, damit das Skript den Pfad ändern konnte, d. h.. c:\users\%username%\
. Ich musste das Skript starten, indem ich den Pfad zum Desktop des Benutzers änderte. Mit Hilfe der oben genannten und anderer Quellen konnte ich dies erreichen, indem ich die get-location Applet.
Vielleicht haben Sie eine andere oder sogar bessere Methode, aber bei mir hat es so funktioniert:
$Path = Get-Location
Set-Location $Path\Desktop
Willkommen bei Stapelüberlauf ! Dies ist gleichbedeutend mit Set-Location Desktop
. ( Get-Location
gibt lediglich den aktuellen Standort zurück, was bei einer Set-Location
mit einem relativen Pfad).
CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.