web-dev-qa-db-ja.com

別のサーバーにあるフォルダーのアクセス許可を一覧表示する方法

私はPowerShellにかなり慣れていないので、問題が発生しています。

次のことを実行したい:

PowerShellウィンドウを実行しているサーバーとは異なるサーバー上の単一のフォルダーに対する権限/ユーザーのリストを取得します。

現在のコマンドが失敗しました:

Get-acl -path "\\servername\folder" 

エラーメッセージ:

Get-acl:パス '\\ servername\folder'が存在しないため見つかりません

このコマンドはローカルマシンでのみ機能しますか?

4
CoffeeCoder

私の環境でのアクセス許可/認証のセットアップ方法によって、コードが機能しなくなったことがわかりました。

サーバーに接続できるかどうかを確認するために実行した手順は次のとおりです。

Test-Path \\server\folder

これにより「False」が返されたため、コードが壊れていました。私が使用した回避策はこれです:

#Step 1: remotely connect to server
Enter-PSSession -ComputerName servernamegoeshere

#Step 2: get list of permissions on folder and save to csv
get-acl E:\foldernamehere | 
select -expand access |
export-csv C:\Users\usernamegoeshere\Documents\listofperms.csv |
#Step 3: close remote connection
Exit-PSSession

それでもサーバーにリモートアクセスし、csvを目的の場所にコピーする必要がありました。これも、権限/認証の問題により、PowerShellの別のサーバー/共有へのコピーコマンドが機能しないためです。

この記事では、私ができるよりも少しだけ認証/許可について説明します。

http://blogs.technet.com/b/heyscriptingguy/archive/2012/11/14/enable-powershell-quot-second-hop-quot-functionality-with-credssp.aspx


より少ないコードでこれを行う2つ目の方法は、ユーザーAnsgar Wiechersのおかげでリモートセッションを作成する必要がないことです。

Invoke-Command -Computer server -ScriptBlock {get-acl E:\folder | 
select -expand access } |
export-csv \\server\folder\accesslist.csv 

PowerShellでは、1つのことを実行する多くの方法があります...この方法が最良/最も簡単だと思います!ありがとう!

5
CoffeeCoder

コマンドはUNCパスでも機能しますが、UNCパスはローカルパスとは少し異なります。リモートホストのファイルシステムにアクセスするには、アクセスポイントが必要です。 SMB/CIFSアクセス(UNCパス経由)の場合、そのアクセスポイントは共有フォルダーであるため、パス\\server\shareまたは\\server\share\path\to\subfolderが必要です。

管理者アカウントを使用すると、管理共有(例:\\server\C$\Users\Administrator)を使用できます。それ以外の場合は、最初に共有を作成する必要があります。

2
Ansgar Wiechers

出力エラーメッセージのパスにバックスラッシュがないようです。元のコードも不足していますか? Get-aclは、リモートシステムで動作します。

0
Eric Longstreet