Question [Script Diffusion]

Plus d'informations
il y a 9 ans 5 mois #22507 par JAMON
Réponse de JAMON sur le sujet Re:[Script Diffusion]
Re-Bonjour,

j'ai fais ça, vous pensez que c'est bon ou je suis à coté de la plaque? :

[code:1]# ###############################################################
# Program : AMAJ.PS1
# Authors : Darkdams
# Date : 13/10/2016
# Subject : Porjet Alerte MAJ
# 13/10/16 : Affichage de l'image
#
# ###############################################################


# ======================================
# =
# = Affichage de l'image dans un PopUp (dans la variable $sendmessage)
# =
# ======================================


$sendmessage ={
[void][reflection.assembly]::LoadWithPartialName(\"System.Windows.Forms\"«»)

$file = (get-item \"C:\Temp\test2.jpg\"«»)

$img = [System.Drawing.Image]::Fromfile($file);

[System.Windows.Forms.Application]::EnableVisualStyles();
$form = new-object Windows.Forms.Form
$form.Text = \"Alerte MAJ en cours \"
$form.Width = $img.Size.Width;
$form.Height = $img.Size.Height;
$pictureBox = new-object Windows.Forms.PictureBox
$pictureBox.Width = $img.Size.Width;
$pictureBox.Height = $img.Size.Height;

$pictureBox.Image = $img;
$form.controls.add($pictureBox)
$form.Add_Shown( { $form.Activate() } )
$form.ShowDialog()
#$form.Show();
}

$credential = Get-Credential
$username = $credential.UserName
$password = [Runtime.InteropServices.Marshal]::«»PtrToStringAuto([Runtime.InteropServices.Marshal]::«»SecureStringToBSTR($credential.Password))

while($true)
{
$csvFile = \"C:\Temp\listemachines.csv\"
$sucess = \"Connection OK.\"
[array]$renameList = Import-Csv -Path $csvFile

$renameList | Where-Object {$_.ReturnString -ne $sucess} | ForEach-Object `
{
if(Test-Connection $_ -Count 2)
{
$session = New-PSSession -ComputerName $_ -Credential $credential
$result = Invoke-Command -Session $session -ScriptBlock $sendMessage
Remove-PSSession -Session $session

$_.ReturnString = \"\"

if($result -eq 1)
{
$_.ReturnString = \"Ok\"

$_.ReturnString = $returnValue[0]
}

if($result -eq 2)
{
$_.ReturnString = \"Cancelled\"
}

if($result -eq 32000)
{
$_.ReturnString = \"Timed Out\"
}
}
}
$renameList | Export-Csv $csvFile
} [/code:1]

en plus j'ai une question, est ce qu'il faut un compte admin pour l'exécuter ? si oui comment je le renseigne directement dans le fichier ?

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 9 ans 5 mois #22512 par Philippe
Réponse de Philippe sur le sujet Re:[Script Diffusion]

j'ai fais ça, vous pensez que c'est bon ou je suis à coté de la plaque? :

c'est bon mais ....!!!!

bon il semble que ton script de base (le premier que tu a présenté et qui affiche le popup) ne fonctionnera pas sur des postes distant ! voir ce sujet et celui ci

j'ai cherche sur d'autre forum sans succès ! :(

je vais paraître stupide mais je suis un Zero en dev...

ok, alors on va faire ça ensemble comme des debutants !! :cheer:

d'abord on va faire un test sur un PC puis on regardera pour l'ensemble des PCs

en plus j'ai une question, est ce qu'il faut un compte admin pour l'exécuter ? si oui comment je le renseigne directement dans le fichier ?

pour le compte, je sais pas mais je pense que oui

j'ai donc des questions pour toi :
- veut tu affiché ce message de MàJ depuis un script obligatoirement ?
- a tu un compte administrateur identique sur tous les postes et le connais tu ?
a tu des firewall et es que celui de windows est désactivé ?
- a tu PowerShell sur tous les postes ? quel versions ? et est il configuré pour exécuté des script à distance et non signé ?
- doit-il être exécuté à l'ouverture de session utilisateur ou faut-il l'affiché à n'importe quel moment ?
- est tu en domaine ?
- a tu le temps d'attendre l'adaptation du script que je t'est déjà parlé !?

pour la dernière question, je suis en formation et donc très peu dispo jusqu'au 2 novembre. je regarde déjà le Send-TSMessageBox pour le comprendre et répondre a tes questions

je crois que pour le moment ça ira pour les questions ! :cheer:

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 9 ans 5 mois #22515 par JAMON
Réponse de JAMON sur le sujet Re:[Script Diffusion]
veux tu affiché ce message de MàJ depuis un script obligatoirement ?

Non pas obligatoirement, j'ai pensé à un script justement pour faciliter mais je reste ouvert à toutes proposition(pas coquines hein ! ;p )

- as tu un compte administrateur identique sur tous les postes et le connais tu ?

Oui

as tu des firewall et es que celui de windows est désactivé ?

Full Open en interne :)

- as tu PowerShell sur tous les postes ? quel versions ? et est il configuré pour exécuté des script à distance et non signé ?

postes en Win7 pro 64Bit et Win8 pro 64Bit (powershell d'origine des OS) donc V4 pour les postes en win8
pour la config à distance et non signés eu... je sais pas...

- doit-il être exécuté à l'ouverture de session utilisateur ou faut-il l'affiché à n'importe quel moment ?

lorsque je décide de l'éxécuter (un bat sur le bureau qui appel le ps1) XD sachant que je veux que l'image pop aussi sur mon écran (excuse pour une pause café :D

- es tu en domaine ?

Oui

- as tu le temps d'attendre l'adaptation du script que je t'est déjà parlé !?

C.A.D ?
c'est ce que j'essaie de faire nan ? XD

Vraiment merci pour ton aide car je rame XD

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 9 ans 5 mois #22517 par Philippe
Réponse de Philippe sur le sujet Re:[Script Diffusion]
merci pour tes réponses

comme je t'ai signalé dans ton premier script ne pourra pas être utilisé
j'ai déjà fait un test avec ce script en tant qu'admin du domaine et il fonctionne bien :
[code:1]
[array]$Listpc = \"pc-de-test\"


$sendMessage = {
Function Send-TSMessageBox
{param([int]$SessionId, [string]$Title = \"Title\", [string]$Message = \"Message\", [int]$ButtonSet = 0, [int]$Timeout = 0, [bool]$WaitResponse = $false)

$Signature = @\"
[DllImport(\"wtsapi32.dll\", SetLastError = true)]
public static extern bool WTSSendMessage(
IntPtr hServer,
[MarshalAs(UnmanagedType.I4)] int SessionId,
String pTitle,
[MarshalAs(UnmanagedType.U4)] int TitleLength,
String pMessage,
[MarshalAs(UnmanagedType.U4)] int MessageLength,
[MarshalAs(UnmanagedType.U4)] int Style,
[MarshalAs(UnmanagedType.U4)] int Timeout,
[MarshalAs(UnmanagedType.U4)] out int pResponse,
bool bWait);

[DllImport(\"kernel32.dll\"«»)]
public static extern uint WTSGetActiveConsoleSessionId();
\"@

[int]$TitleLength = $Title.Length;
[int]$MessageLength = $Message.Length;
[int]$Response = 0;

$MessageBox = Add-Type -memberDefinition $Signature -name \"WTSAPISendMessage\" -namespace \"WTSAPI\" -passThru
$SessionId = $MessageBox::WTSGetActiveConsoleSessionId()

$MessageBox::WTSSendMessage(0, $SessionId, $Title, $TitleLength, $Message, $MessageLength, $ButtonSet, $Timeout, [ref] $Response, $WaitResponse) | Out-Null
$Response
}

$title = \"Operation de MàJ en cours\"
$message = \"The IT Dept needs to rename this computer. A reboot will be required! Please save all documents and click OK.\"
Send-TSMessageBox -Title $title -Message $message -ButtonSet 0 -WaitResponse $false -Timeout 60
}

$Listpc | Where-Object {$_ -ne $null} | ForEach-Object {
if (Test-Connection $_ -Count 2) {
Write-Host \"$_ ok\"
$session = New-PSSession -ComputerName $_
$result = Invoke-Command -Session $session -ScriptBlock $sendMessage
Remove-PSSession -Session $session

}
}

[/code:1]
si tu n'est pas admin du domaine on peut modifier pour utilisé un utilisateur admin des postes

il n'affiche pas d'image mais un text
je regarde des que possible insertion d'une image

pour l'utilisation sur tous les pc du domaine il me faudrait une dernière info : les serveurs de domaine sont t-il en 2008R2 ou plus recent ?<br><br>Message édité par: 6ratgus, à: 19/10/16 17:59

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 9 ans 5 mois #22519 par JAMON
Réponse de JAMON sur le sujet Re:[Script Diffusion]
Bonjour,

Les DC sont en windows serveur 2012R2 std

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 9 ans 5 mois #22520 par JAMON
Réponse de JAMON sur le sujet Re:[Script Diffusion]
Du coup j'ai une autre idée pour que ça fonctionne mais faut voir ...

en gros, je divise mon script en 2 :

1) 1 script pour l'affichage du popup (en local sur tous les poste avec le répertoire d'images du coup on aurait un bat qui lance le powershell.
2) 1 script pour exécuter le premier script sur tous les postes distant.

Connexion ou Créer un compte pour participer à la conversation.

Temps de génération de la page : 0.053 secondes
Propulsé par Kunena