使用[WMICLASS]" Win32_Share"创建共享文件夹

时间:2016-02-28 10:58:09

标签: powershell wmi powershell-v3.0 network-shares

我正在使用创建本地共享文件夹的PowerShell脚本。

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

这似乎适用于大多数机器。但不是我的。

我得到了这个输出:

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

我也尝试过使用这个惯例:

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
  }
}

我使用PowerShell版本3。

1 个答案:

答案 0 :(得分:0)

作为documented,返回码8表示“未知错误”。该命令在语法上是正确的,适用于其他计算机,因此问题不在于您的代码。此问题也不太可能是由于共享名称冲突,丢失文件夹,权限问题等原因造成的,因为这会导致不同的错误/返回代码。

我怀疑您的系统上的服务器服务没有运行。使用以下命令验证:

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

开始类型应为“自动”,状态应为“正在运行”。如果不是,请更改开始类型并启动服务,如下所示:

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