kreuzberger
Goto Top

SMB Freigabe - Kapazität und freien Platz abfragen

Mahlzeit Digitalfreunde,

ich grübele gerade darüber, wie man die Größe und den freiern Platz von SMB Freigaben im Netzwerk (remote) per Powershell abfragen könnte. Und das nicht nur von Windows-Servern, sondern auch von NAS-Boxen etc.

Bekannt ist also:
//Servername/Freigabename
Unerreicht: Lesen & Schreiben

Direkt den freien Plattenplatz und Plattengröße abfragen wird dann wohl nur auf Windows-Systemen per Powershall Gene, oder? Wenn Samba im Einsatz ist, ist wohl diese direkte Abfrage ausgeschlossen.


Geht sowas?

Danke

Content-ID: 9610230804

Url: https://administrator.de/contentid/9610230804

Ausgedruckt am: 24.11.2024 um 02:11 Uhr

Xerebus
Xerebus 20.05.2024 um 16:56:40 Uhr
Goto Top
Hallo

mit WMI. gibt aber noch viele andere möglichkeiten.
Systeminfo mit filter Powershell.....

gwmi Win32_LogicalDisk -Computer MyPC|%{$_.name, [math]::truncate($_.freespace/1GB)}
kreuzberger
kreuzberger 20.05.2024 um 16:59:51 Uhr
Goto Top
Danke @Xerebus

genau das:

gwmi Win32_LogicalDisk -Computer MyPC|%{$_.name, [math]::truncate($_.freespace/1GB)}

hatte ich ausprobiert und scheiterte mit „Zugriff verweigert“.

Kreuzberger
Xerebus
Xerebus 20.05.2024 um 17:13:54 Uhr
Goto Top
Tja,
hast du rechte auf die Kiste. Läuft die CMD in dem Benutzerkontext?
kreuzberger
kreuzberger 20.05.2024 um 17:53:43 Uhr
Goto Top
@Xerebus

Ja, rechte hab ich, ich starte die PowerShell als Admin.
Es geht wohl aber eher um entsprechende Rechte auf dem abzufragenden Rechner/Server.

Kreuzberger
13034433319
13034433319 20.05.2024 aktualisiert um 18:26:36 Uhr
Goto Top
Dafür gibt's die Credential Parameter ...
$remoteComputer = "MyComputer"  
$shareName = "MyShare"  
$credential = Get-Credential

$session = New-CimSession -ComputerName $remoteComputer -Credential $credential
$share = Get-CimInstance -CimSession $session -Query "SELECT * FROM Win32_Share WHERE Name='$shareName'"  

if ($share) {
    $logicalDisk = Get-CimInstance -CimSession $session -Query "SELECT * FROM Win32_LogicalDisk WHERE DeviceID='$(split-path $share.Path -qualifier)'"  
    [pscustomobject][ordered]@{
        ShareName = $shareName
        Size = "{0:F2} GB" -f ((Get-ChildItem -Path "\\$remoteComputer\$shareName" -Recurse -Force -ErrorAction SilentlyContinue -File | measure Length -Sum).Sum /1GB)  
        FreeSpace = "{0:F2} GB" -f ($logicalDisk.FreeSpace / 1GB)  
    }
} else {
    Write-Error "Share $shareName not found on $remoteComputer"  
}

Remove-CimSession -CimSession $session
Firewall-Freigabe für RemoteManagement natürlich Voraussetzung. Ansonsten geht's auch per Invoke-Command auf der Maschine mit Get-SMBShare und Get-Volume, wie immer 1001 Wege nach Rom.

Auf Linux Devices kannst du Freespace oder diskusage per SSH abfragen z.B. mit df oder du

ssh user@remote.host "df -h /pfad"  
ssh user@remote.host "du -hd1 /pfad"  

Gruß
user217
user217 21.05.2024 um 10:59:55 Uhr
Goto Top
Im monitoringsystem wie zabbix via snmp/agent abfragen
ThePinky777
ThePinky777 21.05.2024 um 16:15:54 Uhr
Goto Top
oder wenn alle stricke raussen von irgend ner windows maschine aus

dir \\server\share

Das ganze aber umleiten in ein txt file also:

dir \\server\share >>c:\auswertung.txt

dann steht unten die zeile drin:

4 Verzeichnis(se), 373’987’098’624 Bytes frei
oder sowas

das kannste dann per scriptsprache also öffnen das txt file und die zeile rausfiltern.
Dann die Zahle umformatieren und umkalkulieren in GB, dann haste die Zahl an GB die noch frei sind.
Und dann kannst machen was du willst mit der info face-smile