Cmdlet无法识别

时间:2015-03-22 11:01:45

标签: powershell module

我写了第一个cmdlet。

。\脚本\模块\ NewShare \新-Share.psm1

当我将。\ Modules添加到$ env:PSModulePath并导入模块时,然后我可以检索帮助,但我无法执行它。

  

$ evn:psmodulepath =   C:\用户\ BP \文件\ WindowsPowerShell \模块; C:\ Windows \ System32下\ WindowsPowerShell \ V1.0 \模块\; \模块;

当我运行脚本

New-Share -foldername 'C:\MyShare' -sharename 'MyShare'

我收到以下标准错误,因为该模块不存在。

  

“新建共享”一词未被识别为cmdlet的名称,   功能,脚本文件或可操作程序。检查拼写   名称,或者如果包含路径,请验证路径是否正确   再试一次。在行:1 char:10   + New-Share<<<< -foldername'C:\ MyShare'-sharename'MyShare'       + CategoryInfo:ObjectNotFound:(New-Share:String)[],CommandNotFoundException       + FullyQualifiedErrorId:CommandNotFoundException

有什么问题?

我的powershell模块如下。

function New-Share
{ 
    <#
        .Synopsis
        This function create a new share
        .Description
        This function creates a new share. If the specified folder does not exist, it will be created, and then shared with the specified share name.
        .Example
        New-Share -foldername 'C:\MyShare' -sharename 'MyShare'
        Creates the share with name 'MyShare' for folder 'C:\MyShare'.
        .Parameter foldername
        The folder that needs to be shared. Will be created if it does not exist.
        .Parameter sharename
        The name for the share.
        #Requires PowerShell 2.0
    #>
    [CmdletBinding()] 
     Param (
        [Parameter(Position=0, Mandatory=$True)] 
        [alias("fn")] 
        [string]$foldername, 
        [Parameter(Position=1, Mandatory=$True)] 
        [alias("sn")]
        [string]$sharename
        ) 

    if (!(test-path $foldername)) 
    { 
        new-item $foldername -type Directory 
    } 

    if (!(get-wmiObject Win32_Share -filter “name='$sharename'”)) 
    { 
        $shares = [WMICLASS]”WIN32_Share”

        if ($shares.Create($foldername, $sharename, 0).ReturnValue -ne 0) 
        {
            throw "Failed to create file share '$sharename'"
        }
    }
}

1 个答案:

答案 0 :(得分:3)

如果您从互联网下载该模块,则应将其放在C:\Windows\System32\WindowsPowerShell\v1.0\Modules

  1. 您应该可以在会话中找到它。

    Get-Module -ListAvailable
    
  2. 然后您可以添加模块。

    Import-Module newshare
    
  3. 验证cmdlet是否可用

    Get-Command -Module newshare
    
  4. 发生错误是因为您没有添加模块。