Die Variable am Anfang des Skripts definiert mehrere Befehle/Variablen für New-PSDrive
, sowie Verbindung und Installation. Danach wird eine Funktion erstellt, um eine Textdatei zu öffnen und daraus Informationen zu extrahieren. Ich weiß, dass dieser Teil funktioniert, weil ich ihn in zwei anderen Skripten verwende. Zuletzt führt das Skript die Befehle in der ersten Variablen aus.Programm remote mit Invoke-Command installieren
Das Skript wird als erfolgreich ausgeführt angezeigt, aber die Überprüfung des Remote-Computers zeigt, dass nichts passiert ist.
Vor jedem dieser Tätigkeit hat der Remote-Computer ein Skript ausführen, dagegen zu tun, dass:
- ermöglicht PSRemoting (Firewall-Regeln und Start WinRM Einstellbetrieb) und
- umgeht Ausführungsrichtlinien.
Nach diesen Schritten wird das folgende Skript ausgeführt, um eine Software zu installieren.
$eAudIT2014V2Install = {
$eAudIT2014V2password = ConvertTo-SecureString "PasswordHere" -AsPlainText -Force
$eAudIT2014V2cred = New-Object System.Management.Automation.PSCredential('domain\user', $eAudIT2014V2password)
$eAudIT2014V2drive = New-PSDrive -Name eAudIT2014V2 -PSProvider FileSystem -Root "\\Server\Share" -Credential $eAudIT2014V2cred
$eAudIT2014V2job = Start-Job {"eAudIT2014V2:\Setup.cmd"}
Wait-Job $eAudIT2014V2job
Receive-Job $eAudIT2014V2job
}
Function Get-OpenFile($initialDirectory) {
[System.Reflection.Assembly]::LoadWithPartialName("System.windows.forms") |
Out-Null
$OpenFileDialog = New-Object System.Windows.Forms.OpenFileDialog
$OpenFileDialog.InitialDirectory = $initialDirectory
$OpenFileDialog.ShowDialog()
$OpenFileDialog.Filename
$OpenFileDialog.ShowHelp = $true
}
$InputFile = Get-OpenFile
if ($InputFile -eq "Cancel") {
Write-Host "Canceled By User"
exit
} else {
$Computers = @(Get-Content -Path $InputFile)
}
foreach ($computer in $computers) {
Write-Host "Installing eAudIT 2014V2 on Selected Computers"
Invoke-Command $eAudIT2014V2Install
}
ich zu bemerken, dass, wenn ich dieses Skript sagen etwas Grundsätzliches wie notepad.exe zu laufen, ein dllhost Prozess auf der Maschine startet, aber Notizblock nie. Was mache ich falsch?
Vielen Dank für die Eingabe. Das Hinzufügen dieser Computer-Zeile hat tatsächlich Prozesse zur Remote-Ausführung gebracht, aber auf dem Bildschirm geschieht nichts, und es gibt ganz bestimmt keine Installationsaktivität der Setup-Datei, die ich ausgelöst habe. Ideen? –
Vergessen Sie nicht, Powershell-Befehle werden in Ihrer eigenen Sitzung ausgeführt. Ein angemeldeter Benutzer wird also nicht sehen, was Sie tun, da es sich um verschiedene Sitzungen handelt. Wenn Sie unter dem Task-Manager unter allen Prozessen suchen, würden Sie wahrscheinlich sehen, dass Notepad ausgeführt wird. Wenn Sie den Editor auf einem Remotecomputer öffnen möchten, der für den angemeldeten Benutzer sichtbar ist, könnte dies beispielsweise eine geplante Aufgabe sein. – kfordham281