Ich bin nicht auf der Suche nach User SIDs. Ich suche nach der Computer-SID, die das Active Directory verwenden würde, um den Computer eindeutig zu identifizieren. Ich möchte auch nicht den Active Directory Server abfragen, ich möchte den Computer selbst abfragen.Wie kann ich die SID eines Windows-Computers mithilfe von WMI abrufen?
Antwort
(Ooh, das war ein lustiges! Ich ging auf eine wilde Gans Verfolgung, wie sie sagen, versuchen, die Win32_SID-Instanz, die ein Singleton ist und nicht durch die üblichen InstanzenOf oder Abfrage-Methoden aufzählbar ... yadda yadda yadda.)
Nun, es hängt davon ab, welche Computer SID Sie wollen (ernsthaft!). Es gibt die SID, die der lokale Computer für sich selbst verwendet ... Dazu müssen Sie nur die SID des lokalen Administrator-Benutzers abrufen und die "-500" vom Ende entfernen, um die SID des Computers zu erhalten.
In VBScript, sieht es wie folgt aus:
strComputer = "AFAPC001"
strUsername = "Administrator"
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
Set objAccount = objWMIService.Get("Win32_UserAccount.Name='" & strUsername & "',Domain='" & strComputer & "'")
WScript.Echo "Administrator account SID: " & objAccount.SID
WScript.Echo "Computer's SID: " & Left(objAccount.SID, Len(objAccount.SID) - 4)
In Powershell, wie folgt aus:
function get-sid
{
Param ($DSIdentity)
$ID = new-object System.Security.Principal.NTAccount($DSIdentity)
return $ID.Translate([System.Security.Principal.SecurityIdentifier]).toString()
}
> $admin = get-sid "Administrator"
> $admin.SubString(0, $admin.Length - 4)
In C# auf .NET 3.5:
using System;
using System.Security.Principal;
using System.DirectoryServices;
using System.Linq;
public static SecurityIdentifier GetComputerSid()
{
return new SecurityIdentifier((byte[])new DirectoryEntry(string.Format("WinNT://{0},Computer", Environment.MachineName)).Children.Cast<DirectoryEntry>().First().InvokeGet("objectSID"), 0).AccountDomainSid;
}
Ergebnisse von all diesen stimmen mit der Antwort überein, die ich von PsGetSid.exe erhalte.
Auf der anderen Seite gibt es den SID, die Active Directory verwendet jeden Domäne Mitgliedscomputer zu identifizieren ... Dass man sich, indem man die SID des Computerkontos in der Domäne holen - die eine, die mit Enden ein Dollarzeichen. B. die oben genannte PowerShell-Funktion für ein Domänenmitglied namens "CLIENT", können Sie get-sid "CLIENT$"
eingeben.
+1 Schöne Erklärung zusammen mit verschiedenen Beispielen. – Garett
$ ID.Translate ([System.Security.Principal.SecurityIdentifier]) - hat bereits die Computer-SID (AccountDomainSid) zurückgegeben, würde ich vorschlagen, Get-Sid nicht versuchen, die ID in Zeichenfolge zu konvertieren, so dass der Benutzer jedes Attribut auswählen kann - In diesem Fall die AccountDomainSid. – shalomb
nur eine Randnotiz der PowerShell-Version: '$ admin.SubString (0, $ admin.length() - 4)' sollte '$ admin.SubString (0, $ admin.Length - 4)' sein, um zu funktionieren .. – Luke
Sie können einfach reg query HKLM\SOFTWARE\Microsoft\Cryptography /v MachineGuid
über die Windows-Befehlszeile ausführen.
Hier ist Windows-Batch-Datei Beispiel:
set KEY_REGKEY=HKLM\SOFTWARE\Microsoft\Cryptography
set KEY_REGVAL=MachineGuid
REM Check for presence of key first.
reg query %KEY_REGKEY% /v %KEY_REGVAL% 2>nul || (echo No theme name present! & exit /b 1)
REM query the value. pipe it through findstr in order to find the matching line that has the value. only grab token 3 and the remainder of the line. %%b is what we are interested in here.
set KEY_NAME=
for /f "tokens=2,*" %%a in ('reg query %KEY_REGKEY% /v %KEY_REGVAL% ^| findstr %KEY_REGVAL%') do (
set KEY_NAME=%%b
)
echo %KEY_NAME%
Dies ist nicht die gleiche Sache, diese GUID ist nicht die Maschine SID. – Anders
ein Tool von Microsoft-Website gefunden, die Ihnen die SID leicht
http://technet.microsoft.com/en-us/sysinternals/bb897417.aspx
einfach die Datei herunterladen bekommen, entpacken, öffnen Sie ein Eingabeaufforderung und dann psgetsid.exe ausführen.
Es gibt einige gute Erklärung auf SID von Microsoft-Website als auch
http://blogs.msdn.com/b/aaron_margosis/archive/2009/11/05/machine-sids-and-domain-sids.aspx
- 1. Wie kann ich die SID des aktuellen Windows-Kontos abrufen?
- 2. Wie kann ich die WMI-Leistung mithilfe von Delphi verbessern?
- 3. Wie kann ich die SID einer Oracle XE-Instanz ändern?
- 4. Wie kann ich einen JSF-Komponentenwert mithilfe von EL abrufen?
- 5. ASP.NET - RID für eine DirectoryEntry/SID abrufen
- 6. Wie kann ich die Größe eines Verzeichnisses von Perforce abrufen?
- 7. Erhalten Sie die tatsächlichen Adapterinformationen nur mithilfe von WMI-Abfrage?
- 8. Wie kann ich ein Element innerhalb eines Frameset-Frames mithilfe von JavaScript abrufen?
- 9. WMI-WQL-Abfragen zum Abrufen von Virenschutzinformationen
- 10. Cis-Code zum Abrufen von WMI-Informationen
- 11. Abrufen der Signatur (YPDrawSignatureView) mithilfe eines Abwicklungssegments
- 12. Wie kann ich die Beschreibung eines Git-Zweiges abrufen?
- 13. Kann ich jederzeit die Abonnementdaten eines Benutzers von paypal abrufen?
- 14. Wie kann ich die WMI-Leistung in .NET verbessern?
- 15. Wie kann ich die Ablaufdatumszeit eines HttpRuntime.Cache-Objekts abrufen?
- 16. AX 2012 - Wie kann ich die Labelid eines Feldes abrufen
- 17. Wie kann ich die Konto-ID eines Facebook-Nutzers abrufen?
- 18. C#: Wie kann ich die Beschreibung eines Ordners abrufen?
- 19. Verwenden von WIX zum Installieren eines WMI-Providers
- 20. Wie kann ich mithilfe von Python die Signalstärke naher WLAN-Netzwerke unter Windows abrufen?
- 21. Wert eines benutzerdefinierten Attributs mithilfe von JavaScript oder Jquery abrufen
- 22. Abrufen des Werts eines bestimmten Attributs mithilfe von E Tree
- 23. Wie kann ich ein anderes Modell mithilfe eines Callbacks aktualisieren?
- 24. Wie kann ich den Wert von sqldatasource1 mithilfe von vb.net in textbox1 abrufen?
- 25. Wie kann ich mithilfe von SBT Snapshot-Abhängigkeiten von Nexus abrufen?
- 26. Kann ich die Signatur eines C# -Delegaten nach Typ abrufen?
- 27. Wenn die SID eines Benutzers angegeben wird, wie bekomme ich ihren userPrincipalName?
- 28. Wie kann ich ein Commit mithilfe eines SHA rückgängig machen?
- 29. Kann ich die URL eines anderen Browserfensters abrufen?
- 30. [ORACLE] Wie kann ich die Fremdschlüsselwerte mithilfe der Inline-Ansicht abrufen?
Hat die Computer-SID Änderung mit einer Neuinstallation von Windows? d. h. ist es Betriebssysteminstanzspezifisch oder ist es hardwarebasiert? – Cel