Windowsでよく利用する共有フォルダの設定ですが、デフォルトでEveryoneの設定がはいっています。
セキュリティ的にこれを削除したい場合に、GUIでフォルダを右クリックしてという作業がありますが、共有フォルダのeveryone 権限を削除するPowerShellコマンド 一括操作することも可能です。
PowerShellで実際に設定できたコマンドがあったので共有します。
参考になった情報がこちら
===
誰かから、Everyone権限を削除し、ネット共有のAuthenticatedUsers権限を追加するスクリプトを入手しました。
しかし、私のスクリプトはそれを削除して認証済みユーザーを追加していますが、ルートフォルダー内のサブフォルダーではなく、ルートフォルダーに対してのみアクションを実行しているため、継承されたフォームの親としてそのアクセス許可を取得する必要があります。
ルートフォルダーからEveryone権限を削除したいのですが、サブフォルダーは認証済みユーザーをルートフォルダーに追加し、サブフォルダーを追加する必要があります。
そして、私のスクリプトが('Remote Admin'、 "Default share'、' Remote IPC'、' Printer Drivers'")の共有を除外しているように知りたいだけです。
誰かが私がこれを達成するのを手伝ってくれるならそれは素晴らしいことです...
$ScriptBlock = {
"Executing on {0}" -f $env:COMPUTERNAME
$ExclusionList = 'ADMIN\$','IPC\$' -join '|'
$Shares = Get-SmbShare | Where-Object -Property Name -notmatch $ExclusionList | Where-Object -Property Path -notmatch '^\w:\\$'
"Analyzing these shares...."
$Shares
foreach ($Share in $Shares) {
$Everyone = Get-SmbShareAccess $Share.Name | Where-Object -Property AccountName -eq Everyone
if ($Everyone) {
Revoke-SmbShareAccess $Share.Name -AccountName 'Everyone' -Force
Grant-SmbShareAccess $Share.Name -AccountName 'Authenticated Users' -AccessRight FullControl -Force
"Share {0} has been updated." -f $Share.Name
}
}
"Complete"
}
$ComputerList = Get-Content "C:\users\a-lchandrakanthredd\Desktop\Test\Servers.txt"
Invoke-Command -ComputerName $ComputerList -ScriptBlock $ScriptBlock
以下のコマンドで実機で実際に削除が確認できました。
> Revoke-SmbShareAccess sharefolder -AccountName 'Everyone' -Force
結果は以下のコマンドで確認できます。※sharefolderは環境に合わせて変えてください
> net share sharefolder
参考までに
![]() |