Thursday, November 16, 2023

Check AD user using Get-AdUser in Multi Domain Forest

Check AD user using Get-AdUser in Multi Domain Forest

Clear-Host
$UserEmail = 'user1@domain.com'
$Domains = (Get-ADForest).Domains
$DClist = ForEach ($Domain in $Domains) {
     Write-Host "Domain " $Domain
     Get-ADDomainController -DomainName $Domain -Discover -Service PrimaryDC | Select -ExpandProperty hostname
}
$ADUsersList = ForEach ($DC in $DClist) {
     Write-Host "DC: " $DC
     $adUser = Get-ADUser -server $DC -Filter { UserPrincipalName -eq $UserEmail }
     if (!$adUser) {
          Write-Host "`t User $UserEmail not exist" -b Red
     }
     else {
          Write-Host "`t User $UserEmail exist" -b Green
     }
     #Get-ADUser -server $DC -Filter * -Properties *
}
#$ADUsersList | Export-Csv -Path C:\ADUserList.csv -NoTypeInformation
 


Thursday, November 2, 2023

Copy a List in SharePoint Online Using PowerShell

Copy a List in SharePoint Online Using PowerShell

# 1. Copy with in site
$SiteURL = "https://SiteURL/sites/Retail/"
$SourceListName = "MyDocuments"
$DestinationListName = "MyDocuments_New"
 
Try {
  Connect-PnPOnline -Url $SiteURL -Interactive
  Copy-PnPList -Identity $SourceListName -Title $DestinationListName
}
Catch {
  write-host "Error: $($_.Exception.Message)" -foregroundcolor Red
}
 
 
# 2. Copy to another site with in Site Collection
$SiteURL = "https://SourceSiteUrl/sites/Retail/"
$SourceListName = "MyDocuments"
 
$DestinationSiteURL = "https://DestinationSiteURL/sites/Sales/"
$DestinationListName = "MyDocuments_New"
 
Try {
  Connect-PnPOnline -Url $SiteURL -Interactive
  Copy-PnPList -Identity $SourceListName -Title $DestinationListName -DestinationWebUrl $DestinationSiteURL
}
Catch {
  write-host "Error: $($_.Exception.Message)" -foregroundcolor Red
}
 
 
# 3. Copy to another Site Collection
$SourceSiteURL = "https://SourceSite/sites/one"
$TargetSiteURL = "https://TargetSite/sites/two"
$ListName = "TestList"
$TemplateFile = "C:\\Template.xml"
 
Connect-PnPOnline -Url $SourceSiteURL -Interactive
Get-PnPSiteTemplate -Out $TemplateFile -ListsToExtract $ListName -Handlers Lists
Add-PnPDataRowsToSiteTemplate -Path $TemplateFile -List $ListName
Connect-PnPOnline -Url $TargetSiteURL -Interactive
Invoke-PnPSiteTemplate -Path $TemplateFile

Monday, July 31, 2023

Manage Deployment Slots in App Service using Azure CLI

Manage Deployment Slots in App Service using Azure CLI

az 
az -h 

az group list --output table

resource_group=Regroup_5wlAgklxKkjC6
location=westus
plan_name=brezyweather_plan
app_name=brezyweather

az appservice plan create \
--name $plan_name \
--resource-group $resource_group \
--sku S1 \
--is-linux

az appservice plan list --query "[].name"

az webapp create \
--name $app_name \
--plan  $plan_name \
--resource-group $resource_group \
--deployment-container-image-name codewithpraveen/labs-appservice-cli:1.0

az webapp list --output table

az webapp show \
--name $app_name \
--resource-group $resource_group \
--query "defaultHostName"

az webapp deployment slot create \
--name $app_name \
--resource-group $resource_group \
--slot staging

az webapp deployment slot list \
--name $app_name \
--resource-group $resource_group \
--output table

az webapp config container set \
--name $app_name \
--resource-group $resource_group \
--slot staging \
--docker-custom-image-name codewithpraveen/labs-appservice-cli:2.0

az webapp show \
--name $app_name \
--resource-group $resource_group \
--slot staging \
--query "defaultHostName"

az webapp deployment slot swap \
--name $app_name \
--resource-group $resource_group \
--slot staging \
--target-slot production

az resource delete \
--ids $(az resource list --query "[].id" --resource-group $resource_group --output tsv) \
--verbose

az resource list --resource-group $resource_group

Saturday, April 29, 2023

Git Cheat Sheet

https://training.github.com/

 GitHub Desktop : desktop.github.com

Git for All Platforms : git-scm.com

Configure tooling

Configure user information for all local repositories

$ git config --global user.name "[name]"

Sets the name you want attached to your commit transactions

$ git config --global user.email "[email address]"

Sets the email you want attached to your commit transactions

$ git config --global color.ui auto

Enables helpful colorization of command line output

Create repositories

A new repository can either be created locally, or an existing repository can be cloned. When a repository was initialized locally, you have to push it to GitHub afterwards.

$ git init : The git init command turns an existing directory into a new Git repository inside the folder you are running this command. After using the git init command, link the local repository to an empty GitHub repository using the following command:

$ git remote add origin [url] : Specifies the remote repository for your local repository. The url points to a repository on GitHub.

$ git clone [url] : Clone (download) a repository that already exists on GitHub, including all of the files, branches, and commits

Branches

Branches are an important part of working with Git. Any commits you make will be made on the branch you’re currently “checked out” to. Use git status to see which branch that is.

$ git branch [branch-name] : Creates a new branch

$ git switch -c [branch-name] : Switches to the specified branch and updates the working directory

$ git merge [branch] : Combines the specified branch’s history into the current branch. This is usually done in pull requests, but is an important Git operation.

$ git branch -d [branch-name] : Deletes the specified branch

The .gitignore file

Sometimes it may be a good idea to exclude files from being tracked with Git. This is typically done in a special file named .gitignore. You can find helpful templates for .gitignore files at github.com/github/gitignore.

Synchronize changes

Synchronize your local repository with the remote repository on GitHub.com

$ git fetch : Downloads all history from the remote tracking branches

$ git merge : Combines remote tracking branches into current local branch

$ git push : Uploads all local branch commits to GitHub

$ git pull : Updates your current local working branch with all new commits from the corresponding remote branch on GitHub. git pull is a combination of git fetch and git merge

Make changes

Browse and inspect the evolution of project files

$ git log : Lists version history for the current branch

$ git log --follow [file] : Lists version history for a file, beyond renames (works only for a single file)

$ git diff [first-branch]...[second-branch] : Shows content differences between two branches

$ git show [commit] : Outputs metadata and content changes of the specified commit

$ git add [file] : Snapshots the file in preparation for versioning

$ git commit -m "[descriptive message]" : Records file snapshots permanently in version history

Redo commits

Erase mistakes and craft replacement history

$ git reset [commit] : Undoes all commits after [commit], preserving changes locally

$ git reset --hard [commit] : Discards all history and changes back to the specified commit

CAUTION! Changing history can have nasty side effects. If you need to change commits that exist on GitHub (the remote), proceed with caution. If you need help, reach out at github.community or contact support.

Glossary

  • git: an open source, distributed version-control system
  • GitHub: a platform for hosting and collaborating on Git repositories
  • commit: a Git object, a snapshot of your entire repository compressed into a SHA
  • branch: a lightweight movable pointer to a commit
  • clone: a local version of a repository, including all commits and branches
  • remote: a common repository on GitHub that all team members use to exchange their changes
  • fork: a copy of a repository on GitHub owned by a different user
  • pull request: a place to compare and discuss the differences introduced on a branch with reviews, comments, integrated tests, and more
  • HEAD: representing your current working directory, the HEAD pointer can be moved to different branches, tags, or commits when using git switch


Wednesday, March 15, 2023

SharePoint Edit Control Block (ECB) menu or Custom Action Menu In ListItem and Site

 SharePoint Edit Control Block (ECB) menu or Custom Action Menu In ListItem and Site:

<script
  language="javascript"
  type="text/javascript"
  src="//ajax.googleapis.com/ajax/libs/jquery/1.8.1/jquery.min.js"
></script>
<script language="javascript" type="text/javascript">
  $(document).ready(function () {
    SP.SOD.executeFunc("sp.js", "SP.ClientContext", AddCustomUserActionToECB);
    SP.SOD.executeFunc("sp.js", "SP.ClientContext", ModifyUserCustomAction);
    SP.SOD.executeFunc("sp.js", "SP.ClientContext", DeleteUserCustomAction);
    SP.SOD.executeFunc("sp.js", "SP.ClientContext", CreateUserCustomActionSite);
  });

  function AddCustomUserActionToECB() {
    var clientContext = new SP.ClientContext();
    var oWeb = clientContext.get_web();
    var oList = oWeb.get_lists().getByTitle("testlist");
    var userCustomActionColl = oList.get_userCustomActions();
    var oUserCustomAction = userCustomActionColl.add();
    oUserCustomAction.set_location("EditControlBlock");
    oUserCustomAction.set_sequence(100);
    oUserCustomAction.set_title("Click Here");
    oUserCustomAction.set_url(
      "/sites/pub/Pages/Finance.aspx?ListId={ListId}&ItemId={ItemId}&amp;ItemUrl={ItemUrl}"
    );
    oUserCustomAction.update();
    clientContext.load(userCustomActionColl);
    clientContext.executeQueryAsync(QuerySuccess, QueryFailure);
  }
  function QuerySuccess() {
    console.log("Custom Action added to ECB menu.");
  }
  function QueryFailure() {
    console.log("Request failed - " + args.get_message());
  }

  function ModifyUserCustomAction() {
    var ctx = new SP.ClientContext.get_current();
    var web = ctx.get_web();
    var list = web.get_lists().getByTitle("testlist");
    var CustomActionColl = list.get_userCustomActions();
    ctx.load(list, "UserCustomActions", "Title");
    ctx.executeQueryAsync(
      function () {
        var customActionEnum = CustomActionColl.getEnumerator();
        while (customActionEnum.moveNext()) {
          var custAction = customActionEnum.get_current();
          if (custAction.get_title() == "Click Here") {
            custAction.set_title("Click Here new");
            custAction.update();
            ctx.load(custAction);
            ctx.executeQueryAsync(
              function () {
                alert(
                  "Custom action modified successfully for " + list.get_title()
                );
              },
              function (a, s) {
                alert("Error " + a.get_message());
              }
            );
          }
        }
      },
      function (a, s) {
        alert("Error " + a.get_message());
      }
    );
  }

  function DeleteUserCustomAction() {
    var ctx = new SP.ClientContext.get_current();
    var web = ctx.get_web();
    var list = web.get_lists().getByTitle("testlist");
    var CustomActionColl = list.get_userCustomActions();
    ctx.load(list, "UserCustomActions", "Title");
    ctx.executeQueryAsync(
      function () {
        var customActionEnum = CustomActionColl.getEnumerator();
        while (customActionEnum.moveNext()) {
          var custAction = customActionEnum.get_current();
          if (custAction.get_title() == "Click Here") {
            custAction.deleteObject();
            ctx.load(custAction);
            ctx.executeQueryAsync(
              function () {
                alert(
                  "Custom action deleted successfully for " + list.get_title()
                );
              },
              function (s, a) {
                alert("Error " + a.get_message());
              }
            );
          }
        }
      },
      function (a, s) {
        alert("Error " + a.get_message());
      }
    );

    function CreateUserCustomActionSite() {
      var ctx = new SP.ClientContext.get_current();
      var web = ctx.get_web();
      var CustomActionColl = web.get_userCustomActions();
      var custAction = CustomActionColl.add();
      custAction.set_location("Microsoft.SharePoint.StandardMenu");
      custAction.set_group("SiteActions");
      custAction.set_sequence(101);
      custAction.set_title("site custom action");
      custAction.set_description("Description for custom action.");
      custAction.update();
      ctx.load(web, "Title", "UserCustomActions");
      ctx.executeQueryAsync(
        function () {
          alert("Custom action created successfully for " + web.get_title());
        },
        function (sender, args) {
          alert("Error " + args.get_message());
        }
      );
    }
  }
</script>

<input type="button" value="Create User CustomAction for list" id="create"
    onclick="CreateUserCustomActionList()" /></br ></br >
<input type="button" value="Delete User CustomAction for list" id="Delete"
    onclick="DeleteUserCustomAction()" /></br ></br >
<input type="button" value="Modify User CustomAction for list" id="Modify"
    onclick="ModifyUserCustomAction()" /></br ></br >
<input type="button" value="Create User CustomAction for site" id="Create"
    onclick="CreateUserCustomActionSite()" /></br ></br >
=========================================================
<html>
  <script language="javascript" type="text/javascript">  
    function ClearListItesm(itemID) {
      var ctx = new SP.ClientContext.get_current();
      var web = ctx.get_web();
      var oList = web.get_lists().getByTitle("testlist");
      this.oListItem = oList.getItemById(itemID);
      oListItem.set_item("address", "");
      oListItem.set_item("phone", "");
      oListItem.update();
      ctx.executeQueryAsync(QuerySuccess, QueryFailure);
    }
    function QuerySuccess() {  
        console.log("QuerySuccess");
    }
    function QueryFailure() {        
        console.log("QueryFailure" + args.get_message());
    }
    function getSelectedItemIDs() {
        var items = SP.ListOperation.Selection.getSelectedItems();
        items.forEach(item => {
            console.log(item.id);
            ClearListItesm(item.id);
        });
        location.reload();
    }
  </script>
  <input type="button" value="delete" id="update" onclick="getSelectedItemIDs()"/></br>
</html>
=========================================================

Featured Post

Azure OpenAI Chat in C# and Python

Azure OpenAI Chat in C#: // Install the .NET library via NuGet: dotnet add package Azure.AI.OpenAI --version 1.0.0-beta.5   using System; u...

Popular posts