Datei auf einem Remote Rechner durchsuchen
Moin ich habe folgendes problem: Ich möchte remote auf einem Rechner einen Pfad nach einem Bestimmten wort in dem Dateinamen oder im Inhalt suchen.
Nur erhalte ich immer einen Fehler bzgl. Winrm quickconfig
Gibt es auch einen anderen Weg, wie man vielleicht dem winrm ausweichen könnte?
Nur erhalte ich immer einen Fehler bzgl. Winrm quickconfig
Gibt es auch einen anderen Weg, wie man vielleicht dem winrm ausweichen könnte?
Add-Type -AssemblyName System.Windows.Forms
Add-Type -AssemblyName System.Drawing
$form = New-Object System.Windows.Forms.Form
$form.Text = 'Textbox'
$form.Size = New-Object System.Drawing.Size(350,200)
$form.StartPosition = 'CenterScreen'
$okButton = New-Object System.Windows.Forms.Button
$okButton.Location = New-Object System.Drawing.Point(75,120)
$okButton.Size = New-Object System.Drawing.Size(75,23)
$okButton.Text = 'OK'
$okButton.DialogResult = [System.Windows.Forms.DialogResult]::OK
$form.AcceptButton = $okButton
$form.Controls.Add($okButton)
$cancelButton = New-Object System.Windows.Forms.Button
$cancelButton.Location = New-Object System.Drawing.Point(160,120)
$cancelButton.Size = New-Object System.Drawing.Size(75,23)
$cancelButton.Text = 'Cancel'
$cancelButton.DialogResult = [System.Windows.Forms.DialogResult]::Cancel
$form.CancelButton = $cancelButton
$form.Controls.Add($cancelButton)
$label = New-Object System.Windows.Forms.Label
$label.Location = New-Object System.Drawing.Point(10,20)
$label.Size = New-Object System.Drawing.Size(320,20)
$label.Text = 'Please enter the word you are searching for:'
$form.Controls.Add($label)
$textBox = New-Object System.Windows.Forms.TextBox
$textBox.Location = New-Object System.Drawing.Point(10,60)
$textBox.Size = New-Object System.Drawing.Size(285,80)
$form.Controls.Add($textBox)
$form.Topmost = $true
$form.Add_Shown({$textBox.Select()})
$result = $form.ShowDialog()
#Put User Input in a variable
if ($result -eq [System.Windows.Forms.DialogResult]::OK)
{
$UserInput = $textBox.Text
}
#Select the path where the word is to be searched for
Invoke-Command -ComputerName P999CZC7329C0K {$Directory = "C:\Program Files (x86)\Common Files\enteo\NiLogs"
#Execute query and store complete paths of applicable files in variable $files
$files = Get-ChildItem -LiteralPath $Directory -File -Recurse -Force | ?{$_.Name -like "*$UserInput*" -or (Select-String $_.FullName -Pattern $UserInput -SimpleMatch -Quiet)} | select -Expand Name
#Use Result
$files
#Case if the word wasn't found
if(!$files){echo "nothing was found"}
else{$files}
}
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 4078392135
Url: https://administrator.de/contentid/4078392135
Ausgedruckt am: 08.11.2024 um 01:11 Uhr
4 Kommentare
Neuester Kommentar
Moin,
leider versteckst du die Fehlermeldung, das eigentlich wichtige, vor uns. So wie du es schreibst vermute ich, dass WINRM deaktiviert ist. Dann funktioniert es natürlich aus Sicherheitsgründen nicht. Demnach fragst du also, ob es einen Weg gibt, die Sicherheitseinstellungen von Microsoft zu umgehen und ein PS-Befehl trotz deaktiviertem WINRM durchzuführen? Hab ich dich richtig verstanden?
Gruß
Doskias
leider versteckst du die Fehlermeldung, das eigentlich wichtige, vor uns. So wie du es schreibst vermute ich, dass WINRM deaktiviert ist. Dann funktioniert es natürlich aus Sicherheitsgründen nicht. Demnach fragst du also, ob es einen Weg gibt, die Sicherheitseinstellungen von Microsoft zu umgehen und ein PS-Befehl trotz deaktiviertem WINRM durchzuführen? Hab ich dich richtig verstanden?
Gruß
Doskias
Zitat von @DivineFaith:
Moin ich habe folgendes problem: Ich möchte remote auf einem Rechner einen Pfad nach einem Bestimmten wort in dem Dateinamen oder im Inhalt suchen.
Nur erhalte ich immer einen Fehler bzgl. Winrm quickconfig
Gibt es auch einen anderen Weg, wie man vielleicht dem winrm ausweichen könnte?
Nur erhalte ich immer einen Fehler bzgl. Winrm quickconfig
Gibt es auch einen anderen Weg, wie man vielleicht dem winrm ausweichen könnte?
Remoting per SSH könnte eine Möglichkeit sein.
Servus.
Die Verwendung von "Invoke-Command" benötigt zwingend aktiviertes PSRemoting auf der Remote-Maschine.
Wenn du aber sowieso nur einen Pfad durchsuchen musst nimm doch die administrativen Freigaben des Remotehosts (Vorher prüfen ob aktiviert und der Account der das Skript ausführt remote die nötigen Rechte besitzt).
Btw. Die Verwendung der lokalen Variablen im Invoke-Command ist bei dir sowieso fehlerhaft denn sie sind im remote Script-Block nicht vorhanden 😉.
Die sprichst du dort im einfachsten Fall über das Vorstellen von "using" im Remote-Scriptblock an, oder verwendest die erweiterten Parameter von Invoke-Command zur Übergabe von Variablen
about_Remote_Variables
Grüße Uwe
Die Verwendung von "Invoke-Command" benötigt zwingend aktiviertes PSRemoting auf der Remote-Maschine.
Wenn du aber sowieso nur einen Pfad durchsuchen musst nimm doch die administrativen Freigaben des Remotehosts (Vorher prüfen ob aktiviert und der Account der das Skript ausführt remote die nötigen Rechte besitzt).
\\P999CZC7329C0K\c$\dein\pfad
Btw. Die Verwendung der lokalen Variablen im Invoke-Command ist bei dir sowieso fehlerhaft denn sie sind im remote Script-Block nicht vorhanden 😉.
Die sprichst du dort im einfachsten Fall über das Vorstellen von "using" im Remote-Scriptblock an, oder verwendest die erweiterten Parameter von Invoke-Command zur Übergabe von Variablen
$using:Directory
Grüße Uwe