29歳、離婚しました。

家事は元妻にまかせっきり。そんな生活力ゼロ男の離婚後の生活を綴ったブログです。著者がその後の生活の中で見つけた生活術やお役立ち情報をお届けします。

PowerShellを使ってフォルダーを共有したり、共有アクセス許可を設定する方法

   

このブログでは、アフィリエイト広告を利用しています。

PowerShellを使ってフォルダーを共有したり、共有アクセス許可(共有アクセス権)を設定したい!

このブログでは以前に、コマンドプロンプトを使ったコマンド操作により、フォルダーを共有したり共有アクセス許可(共有アクセス権)を設定する方法をご紹介しています。

参考:Windows コマンドでアカウントや共有を設定する方法

しかしコマンドプロンプトのコマンド操作ではなく、PowerShellのコマンドレットを使った操作により設定したいケースもあるでしょう。
そこで今回は、PowerShellを使ってフォルダーを共有したり、共有アクセス許可(共有アクセス権)を設定する方法をご紹介します!

尚、フォルダーを共有する際は、事前にアクセス権の設定に使用するユーザーアカウントやグループを用意しておく必要があります。
PowerShellを使って、ローカルユーザー(アカウント)やローカルグループの追加・変更・削除を行う方法については、以下ページでご紹介しているので、併せて参考になさってください。

PowerShellでローカルユーザー(アカウント)やグループの追加・変更・削除を行う方法

PowerShellを使ってフォルダーを共有する際は、管理者権限で起動したPowerShellを使用する!

これからご紹介するPowerShellを使ったフォルダーの共有設定の方法は、通常のPowerShellで実行すると『アクセスが拒否されました。』という実行時エラーが発生し、処理が失敗してしまいます。
そのため、管理者権限で起動したPowerShellを使ってコマンド操作を実行してください。

参考:Windows アプリケーションを管理者権限で起動・実行する方法

PowerShellを使ってフォルダーを共有する設定方法

PowerShellを使ってフォルダーを共有する場合は、『New-SmbShare』コマンドレットを使用します。

たとえばCドライブの直下にある『test』フォルダー(C:\test)を、『shared』という共有名(共有フォルダーの名前)で共有する(共有フォルダーに設定する)場合は、『New-SmbShare -Name shared -Path “C:\test”』というコマンドを実行します。

PowerShellの『New-SmbShare』コマンドレットの実行結果の例

尚、『New-SmbShare』コマンドレットを実行した際、『-Path』パラメーターに指定したフォルダーは自動で作成されません。
したがって以下のようなコマンドレットを事前に実行し、あらかじめ共有設定を行うフォルダーを作成しておく必要があります

またフォルダーを共有する際、『コメント』も併せて指定可能です。
コメントを設定したい場合は、『-Description』パラメーターを使用し、以下形式のコマンドを実行してください。

共有アクセス許可(共有アクセス権)を指定して、フォルダーを共有する設定方法

先ほど例示したコマンド文字列のように、『New-SmbShare』コマンドレットを使用して共有フォルダーを作成する際、共有アクセス許可(共有アクセス権)を指定しなかった場合には、以下のように規定の共有アクセス許可(Everyone:読み取り許可)が指定されたものとして、フォルダーが共有されます。

PowerShellの『New-SmbShare』コマンドレットを使って共有したフォルダーの、共有アクセス許可の設定状態

規定の共有アクセス許可とは異なる設定の共有アクセス許可を指定して、フォルダーを共有したいときは、以下パラメーターを併せて指定します。

  • 読み取り:『-ReadAccess』パラメーター
  • 変更:『-ChangeAccess』パラメーター
  • フルコントロール:『-FullAccess』パラメーター

複数のアカウント、またはグループを指定するときは、それぞれを半角のカンマで区切って指定してください。

以下に例示したコマンドを参考にすると良いでしょう。

共有設定を行う際、共有アクセス許可の『読み取り』許可設定を行うコマンド例:

共有設定を行う際、共有アクセス許可の『変更』許可設定を行うコマンド例:

共有設定を行う際、共有アクセス許可の『フルコントロール』許可設定を行うコマンド例:

共有アクセス許可の『読み取り・変更・フルコントロール』許可を、まとめて設定するコマンド例:

PowerShellを使って共有フォルダーに関する情報を取得する方法

すでに作成済みの共有フォルダーに関する情報をPowerShellを使って取得するときは、『Get-SmbShare』コマンドレットを使用します。
『shared』という共有名の共有フォルダーに関する情報を取得するケースでは、以下コマンドを実行してください。

ただしこの形式のコマンドでは、共有フォルダーに関する一部の情報しか取得できません。
詳細な情報を取得したいときは、『Format-List』コマンドレットを併用し、『Get-SmbShare -Name <共有名> | Format-List -Property *』という形式のコマンドを実行します。

また『-Name』パラメーターで共有名を指定せずに、『Get-SmbShare』コマンドレットを実行すると、コンピューターのすべての共有フォルダーに関する情報が取得されます。

こちらも詳細な情報を取得したいときは『Format-List』コマンドレットを併用し、以下コマンドを実行してください。

『Get-SmbShare』コマンドレットを実行して、コンピューターのすべての共有フォルダーに関する情報を取得すると、『ADMIN$』や『C$』といった特殊な共有(管理共有)もリストアップの対象となります。

これら管理共有をリストアップの対象から除外したいときは、『-Special』パラメーターに『$false』を指定してください。

PowerShellを使って共有フォルダーの設定を変更する方法

『Set-SmbShare』コマンドレットを使用することで、『コメント』や『キャッシュ』、『同時に共有できるユーザー数』などの共有フォルダーの設定を変更できます。

共有フォルダーの『コメント』を『情報共有用の共有フォルダーです!』に変更したいときは、以下コマンドを実行してください。

『Set-SmbShare』コマンドレットを使った共有フォルダーの設定変更をする際は、対話的な実行確認(本当に処理を実行するかどうかの確認)が行われます。
これを表示せず、ただちに変更処理を実行させたいときは、以下のように併せて『-Force』パラメーターを指定してください。

PowerShellを使って共有フォルダーの共有アクセス許可(共有アクセス権)を確認・変更する方法

PowerShellを使って共有フォルダーの共有アクセス許可を変更する際は、まずは現在設定されている共有アクセス許可を確認し、変更内容を検討。
その後、変更用のコマンドレットを実行して、設定を変更すると良いでしょう。

共有フォルダーの共有アクセス許可を確認する方法

現在、共有フォルダーに設定されている共有アクセス許可の設定状態を確認する場合は、『Get-SmbShareAccess -Name <共有名>』という形式のコマンドを実行します。

上記実行結果の例では、以下設定(アクセス許可エントリ)が適用されていることが分かります。

  • 共有名『shared』の共有フォルダーに対し、『test-full』アカウントの『フルコントロール』を『許可』
  • 共有名『shared』の共有フォルダーに対し、『test-change』アカウントの『変更』を『許可』
  • 共有名『shared』の共有フォルダーに対し、『test-read1』アカウントの『読み取り』を『許可』
  • 共有名『shared』の共有フォルダーに対し、『test-read2』アカウントの『読み取り』を『許可』

尚、『Get-SmbShareAccess -Name <共有名>』形式のコマンドでは、一度に一つの共有に関するアクセス許可エントリしか取得できません。
コンピューターのすべての共有フォルダーに関するアクセス許可エントリを取得したいときは、以下コマンドを実行すると良いでしょう。

また(AccessRightに)『読み取り』が設定されているアクセス許可エントリのみを取得したいときは、以下コマンドを実行してください。

共有フォルダーの共有アクセス許可を変更する方法

共有フォルダーの共有アクセス許可(共有アクセス権)を変更する際は、以下4つのコマンドレットを使用します。

  • 『Grant-SmbShareAccess』コマンドレット
  • 『Revoke-SmbShareAccess』コマンドレット
  • 『Block-SmbShareAccess』コマンドレット
  • 『Unblock-SmbShareAccess』コマンドレット

これらのコマンドレットでは、共有フォルダーのアクセス許可エントリを追加。
または削除することで、共有アクセス許可(共有アクセス権)を変更します。

以下実行例を参考に、共有フォルダーのアクセス許可エントリを設定すると良いでしょう。

アクセス許可エントリを追加し、共有アクセス許可の『読み取り』許可設定を行うコマンド例:

アクセス許可エントリを追加し、共有アクセス許可の『変更』許可設定を行うコマンド例:

アクセス許可エントリを追加し、共有アクセス許可の『フルコントロール』許可設定を行うコマンド例:

共有アクセス許可のアクセス許可エントリを削除するコマンド例:

共有アクセス許可の”拒否”のアクセス許可エントリの追加・削除を行うコマンド例:

尚、共有フォルダーのアクセス可否は、以下2つのアクセス許可の設定が評価され、決定するものです。

  • 共有アクセス許可(共有アクセス権)
  • NTFSアクセス許可(NTFSアクセス権)

参考:ファイル共有はNTFSアクセス権と共有アクセス権のどちらで設定?

したがって、共有アクセス許可の設定をアクセス許可に設定していても、NTFSアクセス許可の設定状況によっては、共有フォルダーにアクセスできないケースがあります。
この場合には、NTFSアクセス許可の設定も許可設定としてあげることで、アクセスができるようになるはずです。

PowerShellを使って共有フォルダーを削除(フォルダーの共有を解除)する方法

すでに共有設定が行われている共有フォルダーを削除(フォルダーの共有を解除)したいときは、『Remove-SmbShare -Name <共有名>』という構文で、コマンドを実行してください。

共有名が『shared』の共有フォルダーの共有を解除したいときは、以下コマンドを実行します。

『Remove-SmbShare』コマンドレットの実行時に行われるのは、共有の解除だけです。

共有していたフォルダー自体や、そのフォルダー内に保存されていた実態のデータが削除されるわけではありません。
そのため、データが不要となった場合には、フォルダーの実態データはエクスプローラーの操作などにより、別途削除する必要があります。

以上、参考になさってくださーい!

 - Windows, デジタル・家電

ピックアップ コンテンツ&スポンサーリンク