IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Scripts/Batch Discussion :

Editer la lettre d'un disque avec un utilisateur standard [PowerShell]


Sujet :

Scripts/Batch

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Novembre 2004
    Messages
    47
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Novembre 2004
    Messages : 47
    Par défaut Editer la lettre d'un disque avec un utilisateur standard
    Bonjour,

    Pour commencer mes connaissances en PowerShell sont très limités.

    J'ai un script qui fait un swap automatique de disque USB avec remise en place du partage.
    Lorsque j’exécute ce script en admin tout vas bien. Mais lorsque je le lance avec un simple utilisateur il me dit "Access denied".
    Il but sur le "Put()":

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
      $UsbFounded.DriveLetter = $null  
      $UsbFounded.Put()  | Out-Null
      $UsbFounded.Dismount($false, $false) | Out-Null
    Où $UsbFounded est de type : Win32_Volume

    Est-ce que quelqu'un à une idée pour résoudre ce problème ?

    Merci de votre réponse rapide.

    Voici le code complet :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    $UsbDrive1_Serial = "_________"
    $UsbDrive2_Serial = "__________"
    
    $ShareName = "TestShare"
    
    $DrivePath = "L:\"
    
    $WaitTimeOut = 10
    #Found the USB device
    
    #Get the List of volume
    Write-Output "Looking for Drives"
    
    $UsbFounded = Get-WmiObject -Class Win32_Volume | Where {$_.SerialNumber -eq $UsbDrive1_Serial -or $_.SerialNumber -eq $UsbDrive2_Serial}
    
    #Get the Share  
    $FoundedShare =  Get-WmiObject -Class Win32_Share | Where  {$_.Name -eq $ShareName}
    
    $USBLetter= $UsbFounded.Name
    $USBSerial = $UsbFounded.SerialNumber
    
    #Test if right volume founded
    If (!$USBLetter)
        {
            Write-Output "No Drive founded"
            if ($FoundedShare)
            {
                Write-Output "ShareFolder is still active this will be deleted"
                Pause
                $FoundedShare.delete() | Out-Null
                exit
            }
        }
    else
        {
            Write-Output "Found drive :$USBLetter as with Serial Number $USBSerial"
            # Delete the Share
           
            if (!$FoundedShare)
            {
                Write-Output "Share '$ShareName' has not been founded"
            }
            else
            {
                $FoundedShare.delete() | Out-Null
            }
            #Unmout Device
            $UsbFounded.DriveLetter = $null  
            $UsbFounded.Put()  | Out-Null
            $UsbFounded.Dismount($false, $false) | Out-Null
    
            Write-output "Swap the disk and press enter"
            Pause 
           
           #Found the disk
           $i = 0
            DO
             {  $temp = Get-WmiObject -Class Win32_Volume | Where {$_.SerialNumber -eq $UsbDrive1_Serial -or $_.SerialNumber -eq $UsbDrive2_Serial}
                Write-output "Wait Disk plugged"
                Start-Sleep -Seconds 1
                $i++
            } while ((!$temp)  -and $i -lt $WaitTimeOut)
            if ($i -ge $WaitTimeOut)
                {
                Write-output "Time out by Disk plug-in : abort operation"
                pause
                exit
                }
    
            #Mount the disk
            cmd.exe /C mountvol $DrivePath $temp.DeviceID
    
            #Whait disk is mounted
            while (!(Test-Path -Path $DrivePath)) { 
                Write-output "Wait Disk mounted"
                Start-Sleep -Seconds 1
    
            } 
            #Activate Share
             Write-output "Activate Share : $ShareName"
                $Shares=[WMICLASS]”WIN32_Share”
    
                $Shares.Create($DrivePath,$ShareName,0) | Out-Null
    
                Write-Output "Successfull"
    
    
        }
    
      
     Pause
    Vincnet68

  2. #2
    Expert confirmé

    Homme Profil pro
    Responsable déploiement (SCCM, InTune, GPO)
    Inscrit en
    Juillet 2014
    Messages
    3 218
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Responsable déploiement (SCCM, InTune, GPO)
    Secteur : Transports

    Informations forums :
    Inscription : Juillet 2014
    Messages : 3 218
    Par défaut
    Si tu souhaite qu'un utilisateur puisse modifier ce paramètre tu devra modifier les droits d'accès au WMI.

    https://technet.microsoft.com/en-us/...(v=ws.11).aspx

  3. #3
    Membre averti
    Inscrit en
    Novembre 2004
    Messages
    47
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Novembre 2004
    Messages : 47
    Par défaut
    Salut ericlm128,

    J'ai essayé en activant toutes les autorisations, en mettant l'utilisateur en power user, cela ne fonctionne pas.
    Cela fonctionne uniquement sur l'utilisateur est en admin.

    N'y as-t-il pas un droit "windows" à activer ?

    Merci

    Vincnet68

  4. #4
    Membre averti
    Inscrit en
    Novembre 2004
    Messages
    47
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Novembre 2004
    Messages : 47
    Par défaut Autre solution : Invoke-Command
    Bonjour,

    J'essaye une autre solution : Invoke-Command

    Je prends le code précédent, j'inclus un Get-Credential au début.

    Puis je fait un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Invoke-Command -Credential $Cred -ScriptBlock {$args[0].Put()} -ArgumentList $UsbFounded
    Mais j'ai une erreur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Invoke-Command : Parameter set cannot be resolved using the specified named parameters.
    At D:\Tools\UnplugDrive.ps1:60 char:9
    +         Invoke-Command -Credential $Cred -ScriptBlock {$args[0].Put()} -Argument ...
    + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
        + CategoryInfo          : InvalidArgument: (:) [Invoke-Command], ParameterBindingException
        + FullyQualifiedErrorId : AmbiguousParameterSet,Microsoft.PowerShell.Commands.InvokeCommandCommand
    J'ai essayé de plusieurs manières mais cette erreur reste.

    Please help.

    Merci

    Vincnet68

  5. #5
    Membre averti
    Inscrit en
    Novembre 2004
    Messages
    47
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Novembre 2004
    Messages : 47
    Par défaut Solution :
    J'ai du rajouter le -ComputerName dans l'appel à la fonction Invoke-Command.

    Du coup il faut activer le remote du power shell Enable-PSRemoting –force mais il faut que la carte réseau ne soit pas en type Public

    Voilà, j'espère que cela pourra aider certain.

    Vincnet68

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Pb runtime access2013 avec profil utilisateur standard
    Par merlin1 dans le forum Runtime
    Réponses: 3
    Dernier message: 27/01/2014, 10h59
  2. Réponses: 3
    Dernier message: 07/07/2006, 15h49
  3. Copie de disque à disque avec SCO
    Par narmataru dans le forum Administration système
    Réponses: 1
    Dernier message: 28/02/2006, 15h33
  4. enregistrer image sur disque avec URL
    Par meufeu dans le forum Langage
    Réponses: 8
    Dernier message: 26/10/2005, 12h55
  5. Nettoyage de disque avec Windows 2000 Professional
    Par vautour29 dans le forum Windows Serveur
    Réponses: 1
    Dernier message: 15/10/2005, 02h19

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo