none
共有フォルダの共有名の変更及びフォルダ権限設定方法 RRS feed

  • 質問

  • お世話になります。

    2003 Server上にある既存の共有フォルダの共有名を変更したいのですが?
    また、その共有フォルダにEveryoneのFullコントロール権限を付けたいのですが、どのようにすれば良いでしょうか?

    宜しくお願い致します。
    2009年4月13日 9:35

回答

すべての返信

  • アクセス権関係については、

    あるSEのつぶやき: Windows PowerShell で共有フォルダ作成とアクセス権設定を行う
    http://fnya.cocolog-nifty.com/blog/2009/03/windows-power-6.html

    が参考になります。

    http://techbank.jp/nora/(SQL Serverを中心に情報発信中)
    • 回答としてマーク puu 2009年4月20日 18:48
    2009年4月13日 12:17
  • net share コマンドを利用するとできそうですね。

    net share コマンドの使用方法は

    「Net Share」 コマンド: ITPro が参考になるかと思います。


    あとは、野良さんが回答してくれているリンク先が参考になりますね。


    追記です

    net shareコマンドでは、/grant オプションによる権限の設定が可能です。
    Windows Server 2003は利用可能となっています。

    net shareコマンドで共有フォルダを作成する も参考になるかと思います。
    • 編集済み HIROsDotNetMVP 2009年4月13日 23:26 リンク先修正&追記
    • 回答としてマーク puu 2009年4月20日 18:48
    2009年4月13日 12:28
  • 野良さん、HIROsDotNetさん
    早々のコメント有難う御座います。

    お二人から紹介頂いたURLを参照しテストした結果を報告します。
    (Windows Server2003 R2 EE 環境でのテスト結果です。)

    (1) PowerShell画面でのテスト

      ① net share ShareFolder=F:\Share /remark:"共有フォルダ"

         共有名:共有フォルダ、アクセス許可:Everyoneで共有されるが、「読み取り」権限となる。
         FULLコントロールにしたい為、Grantオプションを指定(②)

      ② net share ShareFolder=F:\Share /remark:"共有フォルダ" /grant:everyone,full

         「このコマンドの構文は次のとおりです:  …」のメッセージが表示され、共有されない。
         この為、DOSプロンプトで同様のテストを実施。

    (2) DOSプロンプトでのテスト

      ① net share ShareFolder=F:\Share /remark:"共有フォルダ"

         (1) ① の結果と同様。
         アクセス許可:Everyoneで共有されるが、「読み取り」権限となる。

      ② net share ShareFolder=F:\Share /remark:"共有フォルダ" /grant:everyone,full

         共有名:共有フォルダ、アクセス許可:Everyoneの「FULL」権限となる。

    上記、②のDOSプロンプトでは希望していた結果が得られましたが、PowerShell画面ではスクリプトエラー(?)となります。
    PowerShellで実行したいと考えているので、この辺りをご存知の方、コメント頂けないでしょうか?


    又、共有名の変更はWmiObjectでも可能だと思い、以下を試してみました。

    $wmiObject = Get-WmiObject Win32_Share -ComputerName "コンピュータ名"
    foreach ($wmi in $wmiObject) {
        Write-Host "共有名:" $wmi.Name
        Write-Host "パス :" $wmi.Path
    }

    上記を実行すると共有名とフォルダパスが得られるので、該当の共有フォルダを確認(例えば、6個目)後、
    $wmiObject[6].Name = "共有フォルダ"  でローカルオブジェクトの共有名を変更後、
    $result = $wmiObject[6].put()  を実行すると、以下のエラーが表示されます。
    ----------------------------------------------
    "0" 個の引数を指定して "Put" を呼び出し中に例外が発生しました: ""0" 個の引数を指定して "Put" を呼び
    出し中に例外が発生しました: "実行しようとした操作はプロバイダによってサポートされていません ""
    ----------------------------------------------

    Win32_Shareの使い方の誤りだと思いますが、どのように修正すれば良いでしょうか?
    ダラダラと長いコメントになってしまいましたが、宜しくお願い致します。
    2009年4月14日 7:23
  • PowerShell で net Share コマンドを使用するには下記のようにします。

    PS> cmd /c 'net share ShareFolder=F:\Share /remark:"共有フォルダ" /grant:everyone,full'
    
    

    自分の環境では上手く行きましたので、試してみてください。
    • 回答としてマーク puu 2009年4月20日 18:48
    2009年4月15日 1:51
  • WmiObjetを使用する場合ですが、この場合はCreateメソッドを使用するようです。

    http://msdn.microsoft.com/en-us/library/aa389393(VS.85).aspx
    http://www.microsoft.com/japan/technet/scriptcenter/resources/qanda/jan05/hey0107.mspx

    をご参考ください。

    ちなみにCreateメソッドは

    $WmiObject.Create(
      共有フォルダのローカルパス,
      共有フォルダの共有名,
      作成する共有の種類,
      最大同時接続ユーザー数,
      共有フォルダの説明
    )

    のようにして作成するようです。

    ただし、このメソッドでは 「どのユーザー」に「どのような権限をつけるか」は指定できないようです。

    自分の環境で試したところ(Windows Server 2003)、Everyoneにフル権限がつきました。
    • 回答としてマーク puu 2009年4月20日 18:47
    2009年4月15日 2:56
  • HIROsDotNetさん、こんにちは。

    「net Share コマンドの使用方法」及び「WmiObjetでのCreateメソッドの使用方法」の両回答をテストし、確認出来ました。

    WmiObjetでのCreateメソッドでユーザ数制限を無制限にするには、最大同時接続ユーザー数に$Nullを指定すれば良い事も確認出来ました。

    ユーザ単位のアクセス権限を付加出来ないのは残念ですが、今の所、何とかなりそうです。

    有難う御座いました。
    2009年4月15日 5:44