2016-02-28 1 views
0

J'utilise un script PowerShell qui crée un dossier de partage local.Créer un dossier partagé avec [WMICLASS] "Win32_Share"

function shareCacheFolder() { 
  $Sharename = 'cacheFolder' 
  $Foldername = 'c:\cacheFolder' 
  if (!(Get-WmiObject Win32_Share -Filter "name='$Sharename'")) { 
    $Shares = [WMICLASS]"Win32_Share" 
    $Shares.Create($Foldername, $Sharename, 0) 
  } 
} 

Cela semble fonctionner sur la plupart des machines. Mais pas sur le mien.

Je reçois cette sortie:

__GENUS   : 2 
__CLASS   : __PARAMETERS 
__SUPERCLASS  : 
__DYNASTY  : __PARAMETERS 
__RELPATH  : 
__PROPERTY_COUNT : 1 
__DERIVATION  : {} 
__SERVER   : 
__NAMESPACE  : 
__PATH   : 
ReturnValue  : 8 
PSComputerName :

J'ai aussi essayé d'utiliser cette convention:

function shareCacheFolder() { 
    $path = "c:\cachefolder" 
    $name = "cachefolder" 
    $type = 0 
    $password = "" 
    $description = "" 
    $max = 100 
    $access = $null 
  if (!(Get-WmiObject Win32_Share -Filter "name='$Sharename'")) { 
    Invoke-WmiMethod -Class Win32_Share -Name Create -ArgumentList $access, $description, $max, $name, $password, $path, $type 
  } 
} 

J'utilise la version PowerShell 3.

+0

Avez-vous besoin de l'exécuter en tant qu'administrateur? (juste deviner). Aussi pourquoi n'utilisez-vous pas simplement 'net share ...'? Tapez 'net help share' pour la syntaxe. – Swonkie

+0

En cours d'exécution en tant qu'admin –

Répondre

0

Comme documented le retour le code 8 signifie "erreur inconnue". La commande est syntaxiquement correcte et fonctionne sur d'autres ordinateurs, donc le problème n'est pas avec votre code. Il est également peu probable que le problème soit causé par un conflit de nom de partage, un dossier manquant, un problème d'autorisation, etc., car ceux-ci provoqueraient des erreurs/codes de retour différents.

Je suppose que sur votre système, le service Serveur n'est pas en cours d'exécution. Vérifiez qu'avec la commande suivante:

Get-Service 'Server' | Select-Object StartType, Status | Format-List 

Le type de démarrage doit être "Automatique" et l'état doit être "En cours". Si ce n'est pas le cas, modifiez le type de démarrage et démarrez le service comme ceci:

Get-Service 'Server' | Set-Service -StartupType 'Automatic' 
Start-Service 'Server' 
+0

qui ne semble pas fonctionner :(le type de démarrage était vide mais le service était en cours d'exécution.J'ai fait ce que vous avez écrit et cela conduit au même résultat ... –