トップ回答者
共有フォルダの共有名の変更及びフォルダ権限設定方法

質問
回答
-
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
-
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
すべての返信
-
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
-
野良さん、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の使い方の誤りだと思いますが、どのように修正すれば良いでしょうか?
ダラダラと長いコメントになってしまいましたが、宜しくお願い致します。 -
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