pingus
Membro dal: 14/12/2008
Post inseriti: 69
24/07/2011 8.30
Salve e complimenti della sua tempestiva risposta
mi riferisco al post da me scritto Ripristinare calòendario in Windows 7 32 bit, anche se ce un errore di battitura Pardon....
Ho provato ad unire la funzione con le limnee da lei proposte riguardo appunto "Ripristinare calendario"
ma evidentemente sbaglio qualcosa ho provato a fare in questo modo:
$args = "regsvr32 /s vbscript.dll 'n Get-Process sidebar | Stop-Process 'n &"$env:ProgramFiles\Windows Sidebar\sidebar.exe" /restoreGadgets";
$psi.Arguments = $args;
$psi.Verb = "runas";
$psi.WorkingDirectory = get-location;
[System.Diagnostics.Process]::Start($psi);
vorrei creare una stringa con tutti i parametri e poi passarla alla funzione, ma forse non è il modo appropriato, come potrei fare ?
pingus
Membro dal: 14/12/2008
Post inseriti: 69
30/08/2011 16.35
come mai non mi aiutate ?
efran.cobisi
Membro dal: 06/10/2007
Post inseriti: 632
15/09/2011 11.34
Ciao Pingus,
scusa tanto per il ritardo ma con le vacanze estive mi sono proprio perso per strada il tuo post...
Dunque, parti con un file che chiameremo
ResettaSidebar.ps1 con questo contenuto:
regsvr32 /s vbscript.dll
Get-Process sidebar |
Stop-Process
&"$env:ProgramFiles\Windows Sidebar\sidebar.exe" /restoreGadgets
Con il codice che segue, invece, richiamiamo PowerShell con i privilegi di amministrazione e lanciamo lo script di cui sopra:
function Elevate-Process
{
$file, [string]$arguments = $args;
$psi = new-object System.Diagnostics.ProcessStartInfo $file;
$psi.Arguments = $arguments;
$psi.Verb = "runas";
$psi.WorkingDirectory = get-location;
[System.Diagnostics.Process]::Start($psi);
}
Elevate-Process powershell .\ResettaSidebar.ps1
Se hai problemi sono qui.
Ciao, a presto!
Efran Cobisi
Solution developer, consultant and trainer
Microsoft MVP, MCT, MCSD for Microsoft .NET, MCTS: SQL Server 2005
pingus
Membro dal: 14/12/2008
Post inseriti: 69
15/09/2011 12.15
Scusami Ma io vorrei creare un unico file con la
Funzione interna, come si puo unire il tutto ?
efran.cobisi
Membro dal: 06/10/2007
Post inseriti: 632
15/09/2011 13.42
Ecco la soluzione con un unico file:
function Elevate-Process
{
$file, [string]$arguments = $args;
$psi = new-object System.Diagnostics.ProcessStartInfo $file;
$psi.Arguments = $arguments;
$psi.Verb = "runas";
$psi.WorkingDirectory = get-location;
[System.Diagnostics.Process]::Start($psi);
}
$poshArgs = '-Command',
'-NoExit',
'regsvr32 /s vbscript.dll; Get-Process sidebar | Stop-Process; &"$env:ProgramFiles\Windows Sidebar\sidebar.exe" /restoreGadgets'
Elevate-Process powershell $poshArgs
Se vuoi evitare che la shell rimanga aperta (a scopo di debug), puoi levare la riga che contiene
'-NoExit',.
Ciao, a presto!
Efran Cobisi
Solution developer, consultant and trainer
Microsoft MVP, MCT, MCSD for Microsoft .NET, MCTS: SQL Server 2005
pingus
Membro dal: 14/12/2008
Post inseriti: 69
15/09/2011 14.00
Scusa ma lo inserito in PowerGUI il listato con copia/incolla, ma non funziona vedo una finestra con scritte in rosso
efran.cobisi
Membro dal: 06/10/2007
Post inseriti: 632
15/09/2011 14.23
Probabilmente non hai sidebar installato: c'è il file sidebar.exe in $env:ProgramFiles\Windows Sidebar\sidebar.exe?
Posta per piacere l'errore completo, in caso.
Ciao, a presto.
Efran Cobisi
Solution developer, consultant and trainer
Microsoft MVP, MCT, MCSD for Microsoft .NET, MCTS: SQL Server 2005
pingus
Membro dal: 14/12/2008
Post inseriti: 69
15/09/2011 14.34
Guarda che siderbar è installato pechè vedo il calendario sul desktop, forse hai confuso le variabili $arguments e $poshArgs Possibile ?
efran.cobisi
Membro dal: 06/10/2007
Post inseriti: 632
15/09/2011 14.45
Mi posti l'errore che ottieni sulla tua macchina, per piacere?
Efran Cobisi
Solution developer, consultant and trainer
Microsoft MVP, MCT, MCSD for Microsoft .NET, MCTS: SQL Server 2005
pingus
Membro dal: 14/12/2008
Post inseriti: 69
15/09/2011 15.03
Si hai ragione ma non riesco a vederlo perchè è visualizzata nella seconta consol ed è talmente veloce che non la riesco a vedere l'errore, ma riesco a vedere le scritte in rosso velocissime
pingus
Membro dal: 14/12/2008
Post inseriti: 69
efran.cobisi
Membro dal: 06/10/2007
Post inseriti: 632
15/09/2011 15.37
Ooops, avevo aggiunto -NoExit in velocità. Prova così:
function Elevate-Process
{
$file, [string]$arguments = $args;
$psi = new-object System.Diagnostics.ProcessStartInfo $file;
$psi.Arguments = $arguments;
$psi.Verb = "runas";
$psi.WorkingDirectory = get-location;
[System.Diagnostics.Process]::Start($psi);
}
$poshArgs = '-NoExit',
'-Command',
'regsvr32 /s vbscript.dll; Get-Process sidebar | Stop-Process; &"$env:ProgramFiles\Windows Sidebar\sidebar.exe" /restoreGadgets'
Elevate-Process powershell $poshArgs
Ciao!
Efran Cobisi
Solution developer, consultant and trainer
Microsoft MVP, MCT, MCSD for Microsoft .NET, MCTS: SQL Server 2005
pingus
Membro dal: 14/12/2008
Post inseriti: 69
efran.cobisi
Membro dal: 06/10/2007
Post inseriti: 632
18/09/2011 8.32
Ciao!
per qualche ragione PowerShell non digeriva correttamente il mio comando a causa dei doppi apici del path. Mi è stato sufficiente codificare il comando in formato Base64 e passarlo a powershell.exe attraverso il parametro
-EncodedCommand. Puoi studiare anche tu i parametri di powershell.exe lanciando l'eseguibile così:
powershell.exe -?
Ad ogni modo, ho corretto l'imperfezione e provato su una macchina con la sidebar attiva:
function Elevate-Process
{
$file, [string]$arguments = $args;
$psi = new-object System.Diagnostics.ProcessStartInfo $file;
$psi.Arguments = $arguments;
$psi.Verb = "runas";
$psi.WorkingDirectory = get-location;
[System.Diagnostics.Process]::Start($psi);
}
$originalCommand = 'regsvr32 /s vbscript.dll; Get-Process sidebar | Stop-Process; &"$env:ProgramFiles\Windows Sidebar\sidebar.exe" /restoreGadgets'
$encodedCommand = [Convert]::ToBase64String([Text.Encoding]::Unicode.GetBytes($originalCommand))
$poshArgs = '-NoExit',
'-EncodedCommand',
$encodedCommand
Elevate-Process powershell $poshArgs
Ciao, a presto.
Efran Cobisi
Solution developer, consultant and trainer
Microsoft MVP, MCT, MCSD for Microsoft .NET, MCTS: SQL Server 2005
pingus
Membro dal: 14/12/2008
Post inseriti: 69
18/09/2011 8.53
ok funziona alla grande grazie di tutto il tuo tempo
riservatomi
efran.cobisi
Membro dal: 06/10/2007
Post inseriti: 632
18/09/2011 9.02
Di niente.
Ciao pingus, a presto!
Efran Cobisi
Solution developer, consultant and trainer
Microsoft MVP, MCT, MCSD for Microsoft .NET, MCTS: SQL Server 2005