locked
権限がないフォルダとその中にある特定のファイルの容量を確認したい RRS feed

  • 質問

  • お世話になります。

    [前提]

    移動ユーザープロファイルでサーバーにある共有フォルダ内に各ユーザーのフォルダが作成されております。

    通常は親共有フォルダにAdministratorがありサブフォルダ内に継承されるべきだと思いますが、

    (Administratorが管理できないため)サブフォルダの権限はいじらないよう言われております。

    [質問]

    1. 共有フォルダ内にある各ユーザーフォルダのディスクサイズの容量を取得したいです。

     ⇒PowerShellにて出来ないか検討しましたが、サイズの容量は取得出来そうですが、

    ディスクサイズの容量に関して見つける事ができませんでした。

    1人づつではなく一辺に取得する別の方法等ありましたらお教えください。

    2. 共有フォルダ内にある各ユーザーフォルダにある1つのファイルのディスクサイズの容量を取得したいです。

    1人づつではなく一辺に取得する別の方法等ありましたらお教えください。

    2019年1月23日 7:07

すべての返信

  • totodefaultさん、こんにちは。フォーラムオペレーターのHarukaです。
    TechNetフォーラムにご投稿くださいましてありがとうございます。

    私の経験では、このスクリプトを使用してプロファイルサイズを取得することはできますが、
    各ユーザーフォルダ内の1つのファイルのディスクサイズ容量の情報を取得することはできません。

    powershell を使用して SID の変換とプロファイルタイプの決定がどのように行われるかを理解するには、以下の powershell スクリプトを参照してください。

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    13

    14

    15

    16

    17

    18

    19

    20

    21

    22

    23

    24

    25

    26

    27

    28

    29

    30

    31

    32

    33

    34

    35

    36

    [cmdletbinding()]

    param (

    [parameter(ValueFromPipeline=$true,ValueFromPipelineByPropertyName=$true)]

    [string[]]$ComputerName = $env:computername

    )            

     

    foreach ($Computer in $ComputerName) {

    $Profiles = Get-WmiObject -Class Win32_UserProfile -Computer $Computer -ea 0

    foreach ($profile in $profiles) {

      try {

          $objSID = New-Object System.Security.Principal.SecurityIdentifier($profile.sid)

          $objuser = $objsid.Translate([System.Security.Principal.NTAccount])

          $objusername = $objuser.value

      } catch {

            $objusername = $profile.sid

      }

      switch($profile.status){

       1 { $profileType="Temporary" }

       2 { $profileType="Roaming" }

       4 { $profileType="Mandatory" }

       8 { $profileType="Corrupted" }

       default { $profileType = "LOCAL" }

      }

      $User = $objUser.Value

      $ProfileLastUseTime = ([WMI]"").Converttodatetime($profile.lastusetime)

      $OutputObj = New-Object -TypeName PSobject

      $OutputObj | Add-Member -MemberType NoteProperty -Name ComputerName -Value $Computer.toUpper()

      $OutputObj | Add-Member -MemberType NoteProperty -Name ProfileName -Value $objusername

      $OutputObj | Add-Member -MemberType NoteProperty -Name ProfilePath -Value $profile.localpath

      $OutputObj | Add-Member -MemberType NoteProperty -Name ProfileType -Value $ProfileType

      $OutputObj | Add-Member -MemberType NoteProperty -Name IsinUse -Value $profile.loaded

      $OutputObj | Add-Member -MemberType NoteProperty -Name IsSystemAccount -Value $profile.special

      $OutputObj

      

    }

    }

    どうぞよろしくお願いします。


    MSDN/ TechNet Community Support Haruka

    ~参考になった投稿には「回答としてマーク」をご設定ください。なかった場合は「回答としてマークされていない」も設定できます。同じ問題で後から参照した方が、情報を見つけやすくなりますので、
    ご協力くださいますようお願いいたします。また、MSDNサポートに賛辞や苦情がある場合は、MSDNFSF@microsoft.comまでお気軽にお問い合わせください。~
    2019年1月28日 8:05