私はPowerShellにかなり慣れていないので、問題が発生しています。
次のことを実行したい:
PowerShellウィンドウを実行しているサーバーとは異なるサーバー上の単一のフォルダーに対する権限/ユーザーのリストを取得します。
現在のコマンドが失敗しました:
Get-acl -path "\\servername\folder"
エラーメッセージ:
Get-acl:パス '\\ servername\folder'が存在しないため見つかりません
このコマンドはローカルマシンでのみ機能しますか?
私の環境でのアクセス許可/認証のセットアップ方法によって、コードが機能しなくなったことがわかりました。
サーバーに接続できるかどうかを確認するために実行した手順は次のとおりです。
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の別のサーバー/共有へのコピーコマンドが機能しないためです。
この記事では、私ができるよりも少しだけ認証/許可について説明します。
より少ないコードでこれを行う2つ目の方法は、ユーザーAnsgar Wiechersのおかげでリモートセッションを作成する必要がないことです。
Invoke-Command -Computer server -ScriptBlock {get-acl E:\folder |
select -expand access } |
export-csv \\server\folder\accesslist.csv
PowerShellでは、1つのことを実行する多くの方法があります...この方法が最良/最も簡単だと思います!ありがとう!
コマンドはUNCパスでも機能しますが、UNCパスはローカルパスとは少し異なります。リモートホストのファイルシステムにアクセスするには、アクセスポイントが必要です。 SMB/CIFSアクセス(UNCパス経由)の場合、そのアクセスポイントは共有フォルダーであるため、パス\\server\share
または\\server\share\path\to\subfolder
が必要です。
管理者アカウントを使用すると、管理共有(例:\\server\C$\Users\Administrator
)を使用できます。それ以外の場合は、最初に共有を作成する必要があります。
出力エラーメッセージのパスにバックスラッシュがないようです。元のコードも不足していますか? Get-aclは、リモートシステムで動作します。