Quantcast
Channel: Windows PowerShell Forum
Viewing all 2314 articles
Browse latest View live

eine Datei von einem Linux rechner kopieren

$
0
0

hallo zusammen,

ich bin auf der Suche nach einem Muster wie ich eine Datei von einem Linux Rechner kopieren kann. Es darf auf dem Linux leider kein PS Core installiert werden.

https://it-learner.de/mit-der-windows-powershell-eine-ssh-verbindung-erstellen/

hat da jemand zufällig eine bessere Anleitung oder ein paar Tipps für mich? Irgendwie fehlt da noch etwas

PS H:\> Find-Module PoSH-SSH

get-command -Module Posh-SSH

New-SSHSession -Detailed

Version    Name                                Repository           Description                                                                   
-------    ----                                ----------           -----------                                                                   
2.2        Posh-SSH                            PSGallery            Provide SSH and SCP functionality for executing commands against remote hosts.
New-SSHSession : Die Benennung "New-SSHSession" wurde nicht als Name eines Cmdlet, einer Funktion, einer Skriptdatei oder eines ausführbaren
Programms erkannt. Überprüfen Sie die Schreibweise des Namens, oder ob der Pfad korrekt ist (sofern enthalten), und wiederholen Sie den Vorgang.
In Zeile:5 Zeichen:1
+ New-SSHSession -Detailed
+ ~~~~~~~~~~~~~~
    + CategoryInfo          : ObjectNotFound: (New-SSHSession:String) [], CommandNotFoundException
    + FullyQualifiedErrorId : CommandNotFoundException
 



Chris



Werte(Commands) in *.ps1 File schreiben

$
0
0

Moin liebe TechNet Community,

Ich arbeite in letzter Zeit viel mit dem PS AppDeployment Toolkit und das gescrolle für 3 Parameter in dem Script Nervt! 

Also habe Ich mir eine GUI mit Combobox gebaut in der Ich die 8 Wichtigen Stellen im Script Auswählen kann und Anschließend sollen die Werte in die gewünschten Script stellen geschrieben werden. 

Der GUI File ( "Deploy-Application.designer.ps1" ) Wird in einen File ( "Filling_Script.ps1" ) geladen, der die Werte aus der TextBox in das ADT Script ( "Deploy-Application.ps1" ) schreiben soll. 

Doch das Transferieren der Werte scheitert leider :( 

Hier die Datei (Filling_Script.ps1): 

Add-Type -AssemblyName System.Windows.Forms
. (Join-Path $PSScriptRoot 'Deploy-Application.designer.ps1')



$TransferButton.Add_Click( {

        # PRE-INSTALLATION
        if ( $ComboBox1.SelectedItem.ToString() -eq 'PRE-INSTALLATION' ) {
            
            $PreInstallation = $TransferCommandTextBox.Text
            Add-Content $PSScriptRoot'\Deploy-Application.ps1' -Value $PreInstallation
        }

        # INSTALLATION
        if ( $ComboBox1.SelectedItem.ToString() -eq 'INSTALLATION' ) {

            $Installation = $TransferCommandTextBox.Text
            Add-Content $PSScriptRoot'\Deploy-Application.ps1' -Value $Installation
        }

        # ALTERNATIVE-INSTALLATION
        if ( $ComboBox1.SelectedItem.ToString() -eq 'ALTERNATIVE-INSTALLATION' ) {

            $AlternativeInstallation = $TransferCommandTextBox.Text
            Add-Content $PSScriptRoot'\Deploy-Application.ps1' -Value $AlternativeInstallation
        }

        # POST-INSTALLATION
        if ( $ComboBox1.SelectedItem.ToString() -eq 'POST-INSTALLATION' ) {

            $PostInstallation = $TransferCommandTextBox.Text
            Add-Content $PSScriptRoot'\Deploy-Application.ps1' -Value $PostInstallation
        }

        # PRE-UNINSTALLATION
        if ( $ComboBox1.SelectedItem.ToString() -eq 'PRE-UNINSTALLATION' ) {

            $PreUninstallation = $TransferCommandTextBox.Text
            Add-Content $PSScriptRoot'\Deploy-Application.ps1' -Value $PreUninstallation 
        }

        # UNINSTALLATION 
        if ( $ComboBox1.SelectedItem.ToString() -eq 'UNINSTALLATION' ) {

            $Uninstallation = $TransferCommandTextBox.Text
            Add-Content $PSScriptRoot'\Deploy-Application.ps1' -Value $Uninstallation
        }

        # ALTERNATIVE-UNINSTALLATION 
        if ( $ComboBox1.SelectedItem.ToString() -eq 'ALTERNATIVE-INSTALLATION' ) {

            $AlternativeUninstallation = $TransferCommandTextBox.Text
            Add-Content $PSScriptRoot'\Deploy-Application.ps1' -Value $AlternativeUninstallation
        }

        # POST-UNINSTALLATION
        if ( $ComboBox1.SelectedItem.ToString() -eq 'POST-INSTALLATION' ) {

            $PostUninstallation = $TransferCommandTextBox.Text
            Add-Content $PSScriptRoot'\Deploy-Application.ps1' -Value $PostUninstallation
        }

} )


$ScriptWriter.ShowDialog()

Schon mal danke für eure Unterstützung. 

Grüße OlliverO01


Ordnerstruktur aus .csv anlegen

$
0
0

Hallo zusammen, 

folgendes Problem, ich habe eine .csv Datei bekommen mit knapp 60k Einträgen. Die Struktur der csv soll in Ordnern nachgebildet werden und in den tiefsten Ordner jeweils nochmal 3 Ordner. 

Also die csv sieht so aus:

test1;;;;;;;;;;
;2ordner ;;;;;;;;;
;o3;;;;;;;;;
;;;;;;;;;;
test 2;;;;;;;;;;
;abc1;;;;;;;;;
;abc2;;;;;;;;;
;abc3;;;;;;;;;
;;aa1;;;;;;;;
;;aa2;;;;;;;;
;abc4;;;;;;;;;
;abc5;;;;;;;;;
;;;;;;;;;;
gg1;;;;;;;;;;
;ggg1;;;;;;;;;
;;gggg1;;;;;;;;
;;;ggggg1;;;;;;;

Da sollte dann so aussehen:

test1\2ordner\A
test1\2ordner\B
test1\2ordner\C

test1\o3\A
test1\o3\B
test1\o3\C

test2\abc1\A
test2\abc1\B
test2\abc1\C

test2\abc2\A
test2\abc2\B
test2\abc2\C

test2\abc3\aa1\A
... usw.

Die Ordner Struktur geht allerdings zum Teil bis zu 10 Ordner tief. 

Das was ich bis her habe funktioniert auch echt gut mit meiner kleinen Test Datei aber sobald ich die große 60k Zeilen Datei reinlade geht gar nichts mehr und er hängt alle Ordner aneinander:

test1\2ordner\o3\abc1\abc2\abc3\aa1\....

$CSVPATH = 'C:\test\text4.csv'
$ROOTFOLDER = 'C:\test\test'
$FIXEDFOLDERS = 'A','B','C'
# ---------------
$content = Get-Content $CSVPATH -ReadCount 1000
$level = 0
$currentpath = @()
foreach($line in $content){
    $cols = $line.replace('"','').split(';')
    if ($cols[0] -ne ""){
        $first = $cols[0]
    }else{
        0..($cols.Count-1) | %{
            if($cols[$_] -ne ""){
                if($_ -gt $level){
                    $currentpath += $cols[$_]
                    $level = $_
                    return
                }else{
                    $FIXEDFOLDERS | %{
                        md (Join-Path $ROOTFOLDER "$first\$($currentpath -join '\')\$_") -Force -Verbose
                    }
                    $currentpath = @($cols[$_])
                    $level = $_
                }
            }
        }
    }
}
if ($level -gt 0){
    $FIXEDFOLDERS | %{
        md (Join-Path $ROOTFOLDER "$first\$($currentpath -join '\')\$_") -Force -Verbose
    }
}



Verschieben von Ordnern

$
0
0

Moin,

ich hab eine Ordnerstruktur:

C:\Users\Administrator\AppData\Roaming\MAXON\Team Render Server R20_743DE4DE\teamrender_server\users\admin\

mit mehreren Ordnern in diesem Pfad. Nun werden in den Ordnern ..\admin\testordnerA ein Unterordner namens result erstellt und sobald dort eine Datei liegt die älter als x tage ist soll der TestordnerA nach D:\archiv verschoben werden.

Die Sache ist das die Testordner und die Dateien im Testordner jedes mal eine andere bezeichnung haben und es mehrere ordner gleichzeitig sind. Hat da jemand ne helfende hand?

lg



Bild öffnen

$
0
0

Hallo alle zusammen,

vor einigen Wochen ist mir Windows-PowerShell über den Weg gelaufen und ich habe mir vorgenommen mich etwas näher damit zu beschäftigen, da hatte ich schon mein erstes Problem.

Problem:

Pfade habe ich immer mit dem Befehl "Invoke-Expression" geöffnet, aber ich habe gemerkt, dass dies nur bei Ordnern und nicht bei Dateien funktioniert. Nun möchte ich aber ein ".jpg"-Bild öffnen.

Hat jemand einen passenden Befehl für mich?

Vielen Dank schon mal im Voraus...


Einen Ordner auf mehrere Rechner kopieren

$
0
0

Hallo zusammen,

ich bin ein PS Neuling und habe mich nun mal aus beruflichen Gründen entschieden, damit mehr zu arbeiten.

Meine erste "Aufgabe" ist es, einen Ordner der bei uns auf einem Netzlaufwerk (AD Domäne) liegt, auf mehrere Rechner zu kopieren.

Ich kenne zwar den copy-item Befehl, der lässt mich aber nur immer einen einzigen Rechner "ansteuern" oder? 

Meine Frage wäre nun, wie ein Batch Datei (gibt es die in der PS überhaupt) aussehen kann, wo ich einen Ordner auf ca. 30 Rechner kopieren kann und diese Batchdatei dann mittels PS ausführe.

Über Tipps und Hinweise würde ich mich sehr freuen :)

LG

Jos


Forms Kalender: Automatisch ausgewähltes Datum ändern

$
0
0

Hallo zusammen,

ich habe die Ehre, bei mir im Unternehmen in PowerShell Verschiedenes zu programmieren.

Bei einem Skript erstelle ich mit dem Befehl:

$calendar = New-Object Windows.Forms.MonthCalendar

einen schönen kleinen Kalender. Das Datum von heute ist da direkt ausgewählt, sodass ich das mit einem Klick auf OK bestätigen kann.

Nun zu meiner Frage!

Ist es möglich, dass dort automatisch das Datum von Gestern ausgewählt ist, bzw wenn heute Montag ist, der Freitag der Woche davor ausgewählt wird?

Meine Internetrecherche hat leider nichts gebracht.

Vielen Dank im Voraus und schöne Grüße

Marco


Standardanwendungen fuer Dateiendungen festlegen

$
0
0

Hallo alle zusammen,

ich habe das Problem, dass sich immer, wenn ich eine ".ino"-Dateien öffnen möchte, sich ein Explorer-Fenster öffnet und ich immer wieder aufs Neue das richtige Programm zum Öffnen heraussuchen muss. In den Einstellungen kann man Standardanwendungen für die meisten Dateiendungen festlegen, aber nicht für diese. Kennt jemand einen Trick, um dieses Problem zu lösen? (Gerne auch einen Powershell-Befehl)

Vielen Dank schon mal im Voraus




Script für Dauer Browser Durchlauf - Tasteneingabe zum pausieren

$
0
0

Hallo,

für die Arbeit schreibe ich momentan ein kleines Powershell Script. Die Anforderung sind:

- Autostart

- jede Seite im Vollbild

- alle paar Sekunden öffnet sich eine neue Seite aus einer Liste. -> Dauerhaft

- mit Tastendruck(Space-Taste) soll man den Timer anhalten und die aktuelle Seite anhalten, Bei weiterem Klcik soll der Timer mit dem Durchlauf weitermachen

Die ersten Punkte habe ich bereits umsetzen können, aber am letzten scheitere.

Ich muss nen weiteren Prozess/Thread starten, um die Eingabe und den Dauerlauf machen zu können. Es gibt mehrere Arten von Parallelisierung. Welche nehme ich da und vorallem, wie setze ich das um? Mein Problem ist, das ich nur dann eine Eingabe machen kann, wenn das Terminal aktiv ist, was aber kaum der Fall ist, da die Browser immer im Vollbildmodus sind.

Wäre super, wenn mir jemand mir bei meinem letzten Schritt behilflich sein könnte. Aktueller Code hänge unten an. Ist aber chronoloisch nicht richtig, dass weiß ich. Dient nur um herauszufinden wie sich die ganzen Elemente verhalten. Habe zuvor nie mit Powershell gearbeitet.

Ach und wenn es eine Möglichkeit gibt, alle diese Bedingungen mit einem Chrome Fenster zu lösen, dann es mir bitte.

#Test Key press

#Test Browser start, Arrays, loop, fullscreen and sleep

$Browser1=new-object -com internetexplorer.application
$Browser2=new-object -com internetexplorer.application
$Browser3=new-object -com internetexplorer.application
$browserArr = @()

$browserArr = $browserArr + $Browser1
$browserArr = $browserArr + $Browser2
$browserArr = $browserArr + $Browser3

$browserArr[0].navigate2("https://www.google.com")
$browserArr[1].navigate2("https://www.spiegel.com")
$browserArr[2].navigate2("https://www.heise.de")

$i=0
while($true){
	Start-Sleep -s 5
	$browserArr[$i].visible=$false
	$i++
	$i = $i % $browserArr.length
	$browserArr[$i].visible=$true
	$browserArr[$i].Fullscreen=$true
}

mfg werdas34


(Re-) Moderationswünsche

$
0
0

Hallo liebe Mitforisten,

es ist manchmal schon ärgerlich: da investiert man Zeit und Mühe, schreibt eine gute Antwort auf eine Frage und der Fragende bedankt sich noch und markiert dann einfach einen anderen Post als "die Antwort". Nicht mal ein "Hilfreich" gab's. Ein anderes mal kommt so ein dahergelaufener Moderator und markiert eine völlig falsche Antwort im Thread. Und so weiter...

Alles schon passiert und es nervt. Ich weiß. :)

Obwohl wir versuchen solche Ungerechtigkeiten zu vermeiden, kann es doch immer wieder mal passieren, sei es aus Zeitmangel oder -bei themenfremden Moderatoren-, naja aus eben diesem Grund.

Lange Rede, kurzer Sinn:
 
Falls ihr der Meinung seid, das in einem Thread...
 

  • eure eigene,inhaltlichrichtige Antwort nicht markiertwurde und/oder
     
  • eine inhaltlich falsche Antwortmarkiert wurde
     

...könnt ihr das hier posten (bitte mit Begründung!) und ich werde das korrigieren. 

 

Sinn und Zweck der Antwort-Markierung ist (neben der Punktevergabe), daß spätere Leser schneller die endgültige Antwort auf eine Frage finden, ohne alle Posts lesen- und den gesamten Antwortfindungsprozess nachvollziehen zu müssen.

Um Missverständnisse zu vermeiden, hier kurz die Regeln wann sich ein Post alsmarkierbare Antwort qualifiziert:

  • es muß eine inhaltlich richtige Antwort auf einevom Threadstarter gestellte Frage enthalten sein
  • mehrere markierte Antworten auf diegleiche Frage sind möglich, sofern deutlich unterschiedliche Lösungswege dargestellt werden
  • Antworten auf Folgefragen sind dann markierungsfähig, wenn sie -was den Informationsgehalt betrifft- das Thema deutlich vertiefen.
     

Um die Hürde niedrig zu halten, werde ich, wenn ein Thema erledigt ist, die Moderationsanfrage wieder löschen (es sei denn, es handelt sich um Dinge die für andere auch interessant sein könnten).
 

Wer trotzdem noch aus irgendwelchen Gründen Hemmungen hat, seine Anfrage hier zu posten, kann mir (bitte ausnahmsweise) seine Re-Moderationsanfrage auch schicken: poshtechnetmod AT bitspace PUNKT de

Grüße, Denniver


     



Schleife soll AD User aus CSV Suchen

$
0
0

Hallo zusammen,

ich habe gerade irgendwie ein verständnisproblem folgenden code habe ich:

$Variables = Import-Csv -Path C:\temp\adusers.csv -Delimiter ';' -Encoding UTF8 -Header Name,title,mail,officephone,mobilephone


foreach ($i in $Variables){


Get-ADUser -Filter 'DistinguishedName -eq $i.name'


}

Soweit so gut, wenn ich mir $i.Name so anzeigen lasse bekomme ich auch den Namen ausgegeben. in Der Schleife allerdings kommt folgender Fehler:

Get-ADUser : Eigenschaft "name" wurde im Objekt vom Typ "System.Management.Automation.PSCustomObject" nicht gefunden.
In Zeile:8 Zeichen:1+ Get-ADUser -Filter 'DistinguishedName -eq $i.name'+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~+ CategoryInfo          : InvalidArgument: (:) [Get-ADUser], ArgumentException+ FullyQualifiedErrorId : ActiveDirectoryCmdlet:System.ArgumentException,Microsoft.ActiveDirectory.Management.Commands.GetADUser

Verstehe dem sein Problem im Moment überhaupt nicht.

Hintergrund zu dem ganzen:

Ich möchte im AD die User anpassen mit Jobtitle Phonenumber usw. dazu benutze ich eine CSV lasse durch den distinguishedname suchen und ändere dann dementsprechend den user. (so die Theorie)

Wäre schön wenn ihr mir auf die Sprünge helfen könntet.

danke und Gruß

Susie

Microsoft ActiveDirectory PowerShell-Modul (Microsoft RSAT-Download) ist nicht Thread-sicher - Abhilfe?

$
0
0

Das PowerShell ActiveDirectory Modul scheint nicht Thread-sicher zu sein.

Wir verwenden innerhalb eines Dienstes, der in .NET geschrieben ist, einen PowerShell Runspace (NuGet-Paket "System.Management.Automation.dll"), der ein PowerShell-Skript ausführt, das wiederum per Active Directory Web Services (ADWS) auf Active Directory zugreift und dort LDAP-Anfragen durchführt.

Unser Dienst hat mehrere Threads, damit Abfragen parallel abgearbeitet werden können. Wenn nun zwei Threads einen Active Directory-Aufruf machen (wie zum Beispiel mit Hilfe des Get-ADUser Cmdlets), dann bricht Active Directory Web Services (ADWS) mit einer SOAP-Ausnahme "invalid enumeration context" ab.

Haben wir vielleicht den Windows Domänen-Controller falsch konfiguriert? Oder ist das ein Fehler, der an Microsoft gemeldet werden kann? Wo würde ich diesen Fehler melden?

Ich habe auf GitHub ein Repository mit einem Beispiel-Konsolenprogramm angelegt, damit man den Fehler leicht nachvollziehen kann. Auch habe ich beiUserVoice einen "Vorschlag" eingereicht.


Windows Forms: Button korrekt einbinden/initialisieren

$
0
0

Hi zusammen,

ich habe eine GUI, die dynamisch Checkboxen erzeugt.

Nun habe ich einen Button, der beim klick den Checked Status der Checkboxen überprüft und den Text dieser an ein Array übergibt.

Nun habe ich folgendes Problem, wenn ich auf den Button klicke, wird nichts an das Array übergeben. Beende ich das Fenster und führe die Schleife manuell aus, funktioniert es. Irgenwie scheint der Button zum falschen Zeitpunkt initialisiert zu werden oder ich binde ihn falsch ein.

Das ist der Teil des Codes:

$checkedcheckboxes=@()

$Checkboxbutton = New-Object -TypeName System.Windows.Forms.Button
$Checkboxbutton.Location = New-Object -TypeName System.Drawing.Size -ArgumentList (600,420)
$Checkboxbutton.Size = New-Object -TypeName System.Drawing.Size -ArgumentList (75,23)
$Checkboxbutton.Text = 'checkboxcheck'
$Checkboxbutton.Name = 'checkboxcheck'

$checkboxbutton.Add_Click(
                            {foreach ($Checkbox in $allcheckboxesarray)
                                        {if ($Checkbox.Checked -eq $True) {$checkedcheckboxes += $Checkbox.Text}}
                            }
                        )
     $Form.controls.AddRange(@($checkboxbutton)

Insgesamt tue ich mir bei komplexeren Verschachtelungen und dem Nutzen von .NET Classen häufig schwer, wie man am besten die Objekte und Methoden verarbeitet. Hat da vll. jmd. einen Tipp, wie ich da Knowhow aufbauen kann?

Gruß

Hyper-V VM's mit PowerShell starten und den lokalen Administrator/Domänenadministrator an die VM anmelden

$
0
0

Hallo, ich würde gerne wissen, ob es möglich mit einem PowerShell Script den lokalen Administrator/Domänen-Administrator der/über der VM nachdem starten anzumelden (per Skript)

Vielen Dank

jellibeans

Powershell Script zum löschen von Dateien und Ordnern die älter als x Tage sind.

$
0
0

Hallo!

Ich suche ein Powershell Script, dass mir meine Dateien und Ordner dieälter als 7 Tage sind löscht, da ich vorhabe einen Ordner für den Dateiaustausch zu erstellen und damit sich dieser nicht überfüllt, soll das Script jede Datei und jeden Ordner der älter als 7 Tage ist löschen.

Ich hoffe, dass ihr mir da weiterhelfen könnt.


Abfragen ob Chrome im Vollbildmodus(F11) ist

$
0
0
Hallo,

wie kann ich abfragen, ob der Browser(Chrome) im Vollbildmodus(F11) geöffnet ist mit Powershell?

Kurz zum Problem. Soll eine App schreiben, die einen Chrome Browser öffnet mehrere Tabs dazu und dies im Vollbildmodus (nicht kiosk) anzeigt.  Dazu soll die App im Autostart funktionieren.
Alle meine Lösungsversuche scheiterten beim Autostart. --start-fullscreen und den F11 Tastendruck simulieren funktionieren einwandfrei, wenn ich das Skript so starte. Aber im Autostart funktioniert dies nicht. Wahrscheinlich weil nicht alle Ressourcen hochgefahren sind und zu viele verschiedene Prozesse abgearbeitet werden.

Mein Ansatz wäre:
Starte chrome.exe und öffne die Tabs. Mit einer Schleife prüfen, ob das richtige Fenster aktiviert wird und dann nochmal eine Schleife, die solange versucht F11 zu drücken bis tatsächlich der Vollbildmodus aktiv ist. Dann verlasse beide Schleifen. Dies sollte dann auch gehen, wenn der Rechner noch nicht ganz bereit ist, da dann einfach die Schleife länger läuft.

Ich muss nur wissen, wie ich mit Powershell den Vollbildmodus von Chrome erkenne und abfragen kann.

Oder kennt ihr andere Wege, die Autostart resistent sind? Ich probiere seit mehreren Stunden das zu lösen.

$wshell = new-object -com wscript.shellwhile($true){

    while ($wshell.activateApp("Chrome")){

        $wshell.sendKeys("{F11]")

        break   

}

}


Code ist nur aus dem Kopf. Kann also fehlerhaft sein.

Vielen Dank.

mfg werdas34

Mit Powershell eine SSH Verbindung herstellen

$
0
0

Guten Tag Powershell Experten.

Ich versuche aktuell, mit Powershell eine SSH Verbindung zu einer Management-Karte herzustellen. Da ich noch mit Windows Server 2012 R2 arbeite, habe ich das Modul: Posh-SSH nachgeladen.

Soweit so gut, die Verbindung kann hergestellt werden und ich kann sogar meine Befehle absetzten.

Nun wollte ich das ganze automatisieren. Konkret heisst dies, das Skrips soll die SSH Verbindung aufbauen (inkl. Authentifizierung), einen Befehl ausführen und die Verbindung wieder schliessen.

Leider schaffe ich es nicht, eine gültige -KeyFile herzustellen. Ich habe da wohl noch was nicht verstanden.

Ich habe versucht eine Funktion zu schreiben, die dieses File schreiben soll (sehr vereinfachte Variante):

function CreatePasswordFile ($FilePath)
{
$FilePath = "C:\Temp\keyfile.sec"
Read-Host -AsSecureString | ConvertFrom-SecureString | Out-File $FilePath
}

Wenn ich diese Funktion ausführe, wird die Datei geschrieben. Mithilfe meines Usernames erstelle ich ein Credential-Objekt.

function CreateCredentialObject ($FilePath, $Username)
{
    $password = cat $FilePath | ConvertTo-SecureString

    Write-Host "Erstelle Authentifizierungs Objekt" -ForegroundColor Green
    $cred = New-Object -TypeName System.Management.Automation.PSCredential -ArgumentList $Username, $password
    Return $cred
}

Somit habe ich (zumindest meiner Meinung nach) alles um die Verbindung herzustellen:

$PasswordFolder = "C:\Temp\computername.sec"
$ComputerName = "192.168.xxx.xxx"
$Username = "Admin"

$FunctionsScript = "C:\Powershell\Funktionen\Credential.ps1"
. $FunctionsScript

CreatePasswordFile -FilePath $PasswordFolder

$Credentials = CreateCredentialObject -FilePath $PasswordFolder -Username $Username

New-SSHSession -ComputerName $Computername -Credential $Credentials

Leider wirft Powershell  damit einen Fehler:

AUSFÜHRLICH: Using SSH Username and Password authentication for connection.
AUSFÜHRLICH: Fingerprint for 192.168.xxx.xxx: (*******************************************)
AUSFÜHRLICH: Fingerprint matched trusted fingerprint for host 192.168.xxx.xxx
New-SSHSession : Permission denied (password).
In D:\Powershell\ServerWakeUp.ps1:42 Zeichen:5
+     New-SSHSession -ComputerName $Computername -Credential $Credentia ...+     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~+ CategoryInfo          : Sicherheitsfehler: (Renci.SshNet.SshClient:SshClient) [New-SSHSession], SshAut 
   henticationException+ FullyQualifiedErrorId : SSH.NewSshSession

Was mache ich falsch. Ich gehe einmal davon aus, dass der Fehler ca. 44 cm vor dem Bildschirm sitzt.

(Ich habe die Script-schnipsel gekürzt und anonymisiert, also nehmt es mir bitte nicht übel, wenn Pfadangaben nicht mehr stimmen oder IP-Nummern und ähnliches unkenntlich gemacht wurden. )

Danke fürs Feedback.

Gruss Hyperkalio


Probleme beim befüllen einer neuen AD Gruppe

$
0
0

Moin Moin zusammen,

ich würde gerne die sendeberechtigten User einer Exchangegruppe in einer AD Gruppe unterbringen.

Das Auslesen ist kein Problem, es werden mir allerdings nur Strings des CanonicalNames übergeben. Mit diesen funktioniert das Befüllen der neuen Gruppe nicht.

Kann mir hier einer einen Tip geben und mich in die richtige Richtung schubsen?

Viele Grüße aus Hamburg

Tim

$Troublegroup = Read-Host -Prompt "Bitte Problemgruppe eintragen"
$NewAdGroupName = "<Prefix>" + $Troublegroup


$AllowedUsers = (Get-DistributionGroup -Identity $Troublegroup).AcceptMessagesOnlyFrom


new-ADGroup -Path "<Unser Pfad>" -name $NewAdGroupName -GroupScope Universal -GroupCategory Security

Add-ADGroupMember -Identity $NewAdGroupName -Members $Berechtigte

Löschen von Dateien in Unterordnern, aber die 5 aktuellsten behalten

$
0
0

Hallo!

Ich habe viele Unterordner und möchte alle Dateien löschen (in dem Beispiel PDF-Dateien), aber die letzten 5 pro Unterordner behalten. Aktuell habe ich ein Script, welches mir zwar die letzten 5 Dateien nicht löscht, aber leider nicht pro Unterordner, sondern bezogen auf alle Dateien in allen Unterordnern.

$Path = "C:\Temp\test2" #set directory
$keep = 5
get-childitem $Path -include *.pdf -recurse | ?{!$_.PSIsContainer} | sort CreationTime -Desc | Select -Skip $keep | remove-Item -Force

Bekommt man das pro Unterordner gemünzt? Einzeln Ordner angeben fällt aus, da es zu viele sind und auch immer mal wieder welche dazu kommen und welche weg fallen.

Danke im voraus.

Grüße

Compress-Archive + QuellDateien löschen

$
0
0

Hallo,

ich würde gern per PowerShell alle Unterverzeichnisse eines definierten Ordners archivieren. Also so zippen, dass die OrginalDateien und Verzeichnisse nur noch im Archiv vorhanden sind. Kennt jemand einen Schalter für "move". Bei winzip war das -m.

Das zippen funktioniert mit:

$qVerz = "C:\PS\Test\*"
$zVerz = "C:\PS\Archiv\"
Get-ChildItem $qVerz -Directory | %{ Compress-Archive -Path "$($_.Fullname)\*" -DestinationPath "$zVerz$($_.Name)$(get-date -Format _yyyyMMdd).zip" -update}

mit folgendem Befehl könnte ich die ausgewählten Verzeichnisse im Nachgang löschen:

Get-ChildItem $qVerz -Directory | Remove-Item -Force -Recurse

Dabei sehe ich aber das Problem, dass während des Zippens neue Dateien in die Ordner eingefügt werden können die dann beim Renove-Item mit gelöscht werden würden ohne im Archiv zu sein. Das Zippen selbst könnte ja auch auf einen Fehler laufen.....

Gibt es einen Schalter für "move"?

Wenn nicht, gibt es eine Möglichkeit zu fragen ob definierte Dateien im Archiv vorhanden sind? Also erste eine Liste aller Dateien erstellen ...

Get-ChildItem $qVerz -Recurse

... und dann nur die löschen, die im Archiv vorhanden sind.

Danke.

Gruß.

ottto1

Viewing all 2314 articles
Browse latest View live