Remote Abfrage von Netzlaufwerken mit PS
Ich würde gerne wissen welche Netzlaufwerke unsere User alle zur Zeit verbunden haben.
Leider gibt es außer dem Home Laufwerk keine Allgemein gültigen Laufwerke.
Deswegen wollen wir jetzt auslesen was alle Benutzer verbunden haben und dann anfangen das zusammenzufassen und per Script neu zu vergeben.
In diesem Zuge suche ich eine Möglichkeit per Powershell die Laufwerke auszulesen.
Ich bin soweit gewesen das ganz mit
zu versuchen, aber dann bekomme ich nichts zurück, da ich mich ja mit dem Admin angemeldet habe und nicht mit dem aktuellen User.
Vielleicht denk ich auch gerade viel zu kompliziert, aber hat jemand eine Idee für eine Lösung ??
Leider gibt es außer dem Home Laufwerk keine Allgemein gültigen Laufwerke.
Deswegen wollen wir jetzt auslesen was alle Benutzer verbunden haben und dann anfangen das zusammenzufassen und per Script neu zu vergeben.
In diesem Zuge suche ich eine Möglichkeit per Powershell die Laufwerke auszulesen.
Ich bin soweit gewesen das ganz mit
$username = "xxx\xxx"
$password = "xxxx"
$secstr = New-Object -TypeName System.Security.SecureString
$password.ToCharArray() | ForEach-Object {$secstr.AppendChar($_)}
$cred = new-object -typename System.Management.Automation.PSCredential -argumentlist $username, $secstr
$Import = Get-ADComputer -filter {name -like "*"} -Properties * | Where-Object {$_.CanonicalName -like "*xxx/xxx*"} | Select-Object Name
foreach ($cpname in $Import.name)
{
$session1 = New-PSSession -ComputerName $cpname -Credential $cred
$shinfo = Invoke-Command -session $session1 -scriptblock { Get-CimInstance -ClassName Win32_MappedLogicalDisk | Select PSComputerName, Name,ProviderName}
Write-Host $cpname "hat folgende Laufwerke" $shinfo.name
}
zu versuchen, aber dann bekomme ich nichts zurück, da ich mich ja mit dem Admin angemeldet habe und nicht mit dem aktuellen User.
Vielleicht denk ich auch gerade viel zu kompliziert, aber hat jemand eine Idee für eine Lösung ??
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 6259300648
Url: https://administrator.de/contentid/6259300648
Ausgedruckt am: 23.11.2024 um 04:11 Uhr
3 Kommentare
Neuester Kommentar
Hi,
du musst die nicht geladenen Registry-Hives der Nutzer laden und dann aus der Registry die verbundenen Laufwerke auslesen.
Habe dazu mal ein Skript geschrieben, musst du eventuell noch was anpassen:
Im Moment ruft es alle PCs aus dem AD ab.
du musst die nicht geladenen Registry-Hives der Nutzer laden und dann aus der Registry die verbundenen Laufwerke auslesen.
Habe dazu mal ein Skript geschrieben, musst du eventuell noch was anpassen:
Im Moment ruft es alle PCs aus dem AD ab.
$computers = (Get-ADComputer -Filter { enabled -eq $true }).Name | Sort-Object Name
$scriptblock = {
$PatternSID = 'S-1-5-21-\d+-\d+\-\d+\-\d+$'
$ProfileList = Get-ItemProperty -ea SilentlyContinue 'HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList\*' | Where-Object { $_.PSChildName -match $PatternSID } |
Select-Object @{name = "SID"; expression = { $_.PSChildName } },
@{name = "UserHive"; expression = { "$($_.ProfileImagePath)\ntuser.dat" } },
@{name = "Username"; expression = { $_.ProfileImagePath -replace '^(.*[\\\/])', '' } }
$LoadedHives = Get-ChildItem -ea SilentlyContinue Registry::HKEY_USERS | Where-Object { $_.PSChildname -match $PatternSID } | Select-Object @{name = "SID"; expression = { $_.PSChildName } }
$UnloadedHives = Compare-Object -ea SilentlyContinue $ProfileList.SID $LoadedHives.SID | Select-Object @{name = "SID"; expression = { $_.InputObject } }, UserHive, Username
Foreach ($item in $ProfileList) {
IF ($item.SID -in $UnloadedHives.SID) {
reg load HKU\$($Item.SID) $($Item.UserHive) | Out-Null
}
"{0}: {1}" -f $($env:computername), $($item.Username) | Write-Output
$drives = Get-ChildItem -ea SilentlyContinue registry::HKEY_USERS\$($Item.SID)\Network
if ($null -ne $drives) {
$drives | ForEach-Object {
$drive = Get-ItemProperty -ea SilentlyContinue -Path "Registry::$_"
"{0} {1}" -f " Name:", $($drive.PSChildName) | Write-Output
"{0} {1}" -f " Path:", $($drive.RemotePath) | Write-Output
}
}
if ($item.SID -in $UnloadedHives.SID) {
[gc]::Collect()
reg unload HKU\$($Item.SID) | Out-Null
}
}
}
Invoke-Command $computers -sc $scriptblock