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-Key: 9610230804

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

Printed on: June 3, 2024 at 00:06 o'clock

Member: Xerebus
Xerebus May 20, 2024 at 14:56:40 (UTC)
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)}
Member: kreuzberger
kreuzberger May 20, 2024 at 14:59:51 (UTC)
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
Member: Xerebus
Xerebus May 20, 2024 at 15:13:54 (UTC)
Goto Top
Tja,
hast du rechte auf die Kiste. Läuft die CMD in dem Benutzerkontext?
Member: kreuzberger
kreuzberger May 20, 2024 at 15:53:43 (UTC)
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
Member: hempel
hempel May 20, 2024 updated at 16:26:36 (UTC)
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ß
Member: user217
user217 May 21, 2024 at 08:59:55 (UTC)
Goto Top
Im monitoringsystem wie zabbix via snmp/agent abfragen
Member: ThePinky777
ThePinky777 May 21, 2024 at 14:15:54 (UTC)
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