How to find what to use, understanding logic.

Welcome Forums General PowerShell Q&A How to find what to use, understanding logic.

This topic contains 5 replies, has 6 voices, and was last updated by

 
Participant
3 weeks, 5 days ago.

  • Author
    Posts
  • #179226

    Participant
    Topics: 1
    Replies: 0
    Points: 13
    Rank: Member

    Hi, i am newbie in powerhsell. And i want to understand scripts , how they constructed. Where writer found what to add which methods use and so on. For example:
    Below there is System.Security.AccessControl.FileSystemAccessRule. I want to know how writer of this script find which class to use, where to find logic how to use classes.

    $ACL = Get-ACL C:\Test
    $AccessRule = new-object System.Security.AccessControl.FileSystemAccessRule ("TestUser","Modify","Allow")
    $ACL.RemoveAccessRule($AccessRule)
    $ACL | Set-Acl C:\Test
  • #179247

    Participant
    Topics: 4
    Replies: 76
    Points: 91
    Helping Hand
    Rank: Member

    I think the key is Yoda level skills of Googling. "file permissions dot net" https://docs.microsoft.com/en-us/dotnet/api/system.security.accesscontrol.filesystemaccessrule?view=netframework-4.8

    Well, logic would be be

    get-acl c:\temp
    $acl = get-acl c:\temp
    $acl | select *
    $acl | get-member
    $acl.access
    

    then you need to figure out how to create new rule. You can use that

    $AccessRule = new-object System.Security.AccessControl.FileSystemAccessRule ("TestUser","Modify","Allow")
    

    or

    $AccessRule = $acl.access | where {$_.IdentityReference -eq "TestUser"}
    

    And then you pop up back to the methods you found using Get-Member. First remove the desired access from the access list object and last set new, modified, ACL to the object

    $ACL.RemoveAccessRule($AccessRule)
    $ACL | Set-Acl C:\Temp
    

    In my opinion, there is two ways to learn. Either go to some basic powershell courses where is they go through pipepline and get-member or start googling and digging and turning all the stones.

    I did the latter one, and it has taken quite a lot of time, but I've learned bunch of stuff on this path

     

  • #179262

    Participant
    Topics: 2
    Replies: 5
    Points: 41
    Rank: Member

    In general get-help *…* is good for whatever you want to search/find more info on. I find there are some good get-help about_... files in PowerShell as well. Hopefully this helps.

  • #179331

    Participant
    Topics: 1
    Replies: 19
    Points: 52
    Helping Hand
    Rank: Member

    For info on .Net classes you may want to search on MSDN. Not really Powershell but it can help to understand stuff like expected parameters, available methods, ...

  • #179334

    Participant
    Topics: 26
    Replies: 41
    Points: 134
    Rank: Participant

    I would highly recommend 2 books. You do need to understand the basics first and these are great tools not only for learning but for reference later on. These are written by Don Jones and Jeffrey D. Hicks and you will find they are absolutely invaluable.

    Learn Windows PowerShell in a month of lunches (This one first)
    Learn PowerShell Toolmaking in a month of lunches

  • #179355

    Participant
    Topics: 2
    Replies: 497
    Points: 1,230
    Helping Hand
    Rank: Community Hero

    Get-Help, Get-Member, and Get-Command are the best 3 self-discovery commands. For more detail you can google "how can I do X in PowerShell" — there are plenty of blog posts and such around which are great resources. Not all of them have fantastic code style, but they'll get you what you need and you can adjust as you need to.

    My PSKoans module may also help you out. 🙂

You must be logged in to reply to this topic.