thl1966
Goto Top

Powershell - Wie kann ich das Laufwerksmapping an einem Remote PC ermitteln

Möchte gerne eine Powershell-Skript schreiben, wo ich auf einene Remote PC die Laufwerkmappings ermitteln kann.
Ist das möglich?
Wenn ja, wie?

Vielen Dank für eure Antworten

Content-Key: 153365

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

Printed on: April 19, 2024 at 23:04 o'clock

Member: Miyamoto
Miyamoto Oct 19, 2010 at 12:45:18 (UTC)
Goto Top
Hi,
du kannst mit
Get-Wmiobject Win32_logicaldisk -Filter DriveType=4
dir alle Informationen über die verbundenen Laufwerke holen.

Gruß Miyamoto
Member: thl1966
thl1966 Oct 19, 2010 at 13:06:40 (UTC)
Goto Top
Danke für die Hilfe.

Wie kann ich das bei einem Remote PC anwenden und z.B. ein bestimmtes Laufwerk
in eine Variable speichern inkl. UNC Pfad?
Member: Miyamoto
Miyamoto Oct 19, 2010 at 13:25:57 (UTC)
Goto Top
Hi,
also was du machen kannst ist folgendes
$laufwerke=Get-Wmiobject Win32_logicaldisk -Filter DriveType=4
foreach ($i in $laufwerke){
    Write-Host $i.DeviceID
    Write-Host $i.ProviderName
}

Gruß Miyamoto
Member: thl1966
thl1966 Oct 19, 2010 at 13:37:34 (UTC)
Goto Top
Danke für die Hilfe.

Wie kann ich das aber bei einem Remote PC anwenden.

z.B.

Ich weiß, dass es am Remote PC immer das Y: Laufwerk ist
und möchte da den Inhalt von Providername haben
wie kann ich das realisieren?
Member: Miyamoto
Miyamoto Oct 20, 2010 at 09:41:42 (UTC)
Goto Top
Hi,
du kannst das so machen:
$laufwerke=invoke-command -computername "PC-Name oder IP" -Scriptblock { Get-Wmiobject Win32_logicaldisk -Filter DriveType=4 }  
foreach ($i in $laufwerke){
    Write-Host $i.DeviceID
    Write-Host $i.ProviderName
}

Dazu muss aber auf dem System mit dem du dich verbinden Möchtest folgender Dienst laufen WinRM.
Den dienst startest du wie folgt:
  1. Auf dem Zielsystem eine PowerShell starten, mit Administrativen rechten.
  2. Folgendes eingeben:
    enable-psremoting -force

nun müsste es klappen

Edit: auf dem Rechner wo das Skript gestartet wird musst du die ISE oder die PowerShell auch mit Administrativen rechten starten.

Gruß Miyamoto
Member: thl1966
thl1966 Oct 20, 2010 at 10:57:57 (UTC)
Goto Top
Danke für den Hinweis, habe ich mitterweilen auch gefunden die Info.

Ich möchte das Skript so schreiben, dass ich den HOST-Namen des Remote PCs übergeben will
und dort das gemappte Laufwerk Y: ermitteln (Providername) und dann
über diesen Pfad eine bestimmte Datei löschen.

Wie kann man das realisieren?
Member: Miyamoto
Miyamoto Oct 20, 2010 at 12:10:40 (UTC)
Goto Top
Hier, das müsste es sein.
$laufwerke=invoke-command -computername "PC-Name oder IP" -Scriptblock { Get-Wmiobject Win32_logicaldisk }  
foreach ($i in $laufwerke){
    if($i.DeviceID -eq "Y:"){  
        $temp=$i.ProviderName+"\pfad\Datei.txt"  
        if(Test-Path -path $temp){
            Remove-Item $temp -Force
        }
    }
}

Gruß Miyamoto
Member: thl1966
thl1966 Oct 20, 2010 at 15:41:15 (UTC)
Goto Top
Es kommt eine Fehlermeldung:

The term 'invoke-command' is not recognized as a cmdlet, function, operable program, or script file
. Verify the term and try again.

Was muss ich tun?

Vermute dass es ein Powershell 2.0 Komando ist.

Leider habe ich nur PowerShell 1.x, kann ich auch nicht ändern!

Gibt es ein Powershell 1.x Kommando, wo ich das realisieren kann?
Member: Miyamoto
Miyamoto Oct 21, 2010 at 10:10:21 (UTC)
Goto Top
Hi,
Ja das ist ein PowerShell 2.0 Kommando.

Probier mal folgendes aus:
$laufwerke=Get-Wmiobject Win32_logicaldisk -ComputerName "PC-Name oder IP"  
foreach ($i in $laufwerke){
    if($i.DeviceID -eq "Y:"){  
        $temp=$i.ProviderName+"\pfad\Datei.txt"  
        if(Test-Path -path $temp){
            Remove-Item $temp -Force
        }
    }
}
auch hier muss die PowerShell oder ISE auf deinem Rechner als Admin gestartet sein.

Gruß Miyamoto