简体   繁体   English

每次运行 powershell 脚本时都会询问 ExecutionPolicy

[英]ExecutionPolicy is being asked everytime for running powershell script

Facing small yet hectic issue because of execution policy.由于执行政策而面临小而忙碌的问题。

A Powershell script was written to download SharePoint files using "sharepointclientcomponents".编写了一个 Powershell 脚本以使用“sharepointclientcomponents”下载 SharePoint 个文件。

But everytime we are executing it, an error is being thrown saying "Not Digitally Signed".但每次我们执行它时,都会抛出一个错误,提示“未进行数字签名”。 For this, it is becoming mandatory to run "Set -ExecutionPolicy RemoteSigned" first everytime.为此,每次都必须先运行“Set -ExecutionPolicy RemoteSigned”。

Is there any way to set this execution policy permanently so that we can schedule the code?有没有办法永久设置这个执行策略,以便我们可以调度代码?

Your ideas would be a great help for us!您的想法将对我们有很大的帮助!

Thanks a ton in Advance!!!!提前致谢!!!!

This is what we tried这是我们试过的

    Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass 
    
    #Load SharePoint CSOM Assemblies
    Add-Type -Path "C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\16\ISAPI\Microsoft.SharePoint.Client.dll"
    Add-Type -Path "C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\16\ISAPI\Microsoft.SharePoint.Client.Runtime.dll"
     
    Function Download-FilesFromLibrary()
    {
        param
        (
            [Parameter(Mandatory=$true)] [string] $SiteURL,
            [Parameter(Mandatory=$true)] [string] $LibraryName,
            [Parameter(Mandatory=$true)] [string] $TargetFolder
        )
     
        Try {
            #Setup Credentials to connect
            $Username="xxx.yyyy@gmail.com"  
            $Password="X1234y"
            $securePassword = ConvertTo-SecureString $Password -AsPlainText -Force          
            #$Cred= Get-Credential
            $Credentials = New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials($Username, $securePassword)
     
            #Setup the context
            $Ctx = New-Object Microsoft.SharePoint.Client.ClientContext($SiteURL)
            $Ctx.Credentials = $Credentials
          
            #Get all files from the Library
            $List = $Ctx.Web.Lists.GetByTitle($LibraryName)
            $Ctx.Load($List)
            $Ctx.ExecuteQuery()
             
            #Get Files from the Folder
            $Folder = $List.RootFolder
            $FilesColl = $Folder.Files
            $Ctx.Load($FilesColl)
            $Ctx.ExecuteQuery()
            
            
            Write-host -f Green "All Files from Library '$LibraryName' Downloaded to Folder '$TargetFolder' Successfully!" $_.Exception.Message
            Write-host -f Green "Creating parameters file..." $_.Exception.Message
            $FileNameArray=@()
            $count=0
            $CountArray=@()
            $YearsArray=@()
            $PeriodArray=@()
            
            Foreach($File in $FilesColl)
            { 
                $FileName=$File.Name
                $FileNameYear=$FileName.SubString(4,4)
                $FileNamePeriod=$FileName.SubString(0,3)
                $TargetFile = $TargetFolder+$File.Name
                #Download the file
                $FileInfo = [Microsoft.SharePoint.Client.File]::OpenBinaryDirect($Ctx,$File.ServerRelativeURL)
                $WriteStream = [System.IO.File]::Open($TargetFile,[System.IO.FileMode]::Create)
                $FileInfo.Stream.CopyTo($WriteStream)
                $WriteStream.Close()
                $count+=1
                #"'$FileName'" Prints the File Names
                $FileNameArray+=@($FileName)
                $CountArray+=@($count)
                $YearsArray+=@($FileNameYear)
                $PeriodArray+=@($FileNamePeriod)
            }
             "File names stored in an array:"
             $FileNameArray
             "Count stored in an array:"
             $CountArray
             "Years stored in an array:"
             $YearsArray
             "Periods stored in an array:"
             $PeriodArray
             "Total no. of Files extracted:"
             $count
             If ($FileNameArray.Count -gt $CountArray.Count) {
              $limit = $FileNameArray.Count
             } Else {
              $limit = $CountArray.Count
             }
    
            $csv = For ($i = 0; $i -lt $limit; $i++) {
              New-Object -TypeName psobject -Property @{
              'Serial' = $(If ($CountArray[$i]) { $CountArray[$i] })
              'File_Names' = $(If ($FileNameArray[$i]) { $FileNameArray[$i] })
              'Years' = $(If ($YearsArray[$i]) { $YearsArray[$i] })
              'Period' = $(If ($PeriodArray[$i]) { $PeriodArray[$i] })
              'Count' = $(If ($count) { $count })
              }
            }
            $csv | Export-CSV "D:\info.csv" -NoTypeInformation
            Write-host -f Green "Parameters File Created Successfully!" $_.Exception.Message
      }
        Catch {
            write-host -f Red "Error Downloading Files from Library!" $_.Exception.Message
        }
    }
     
    #Set parameter values
    $SiteURL="https://yyyy.sharepoint.com/sites/XXXX/"
    $LibraryName="test_library"
    $TargetFolder="D:\"
     
    #Call the function to download file
    Download-FilesFromLibrary -SiteURL $SiteURL -LibraryName $LibraryName -TargetFolder $TargetFolder

Please try replacing the "Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass " in the first line of the code with "Set-ExecutionPolicy Bypass -Scope Process -Force ",it will help you set this execution policy permanently.请尝试将代码第一行中的“Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass”替换为“Set-ExecutionPolicy Bypass -Scope Process -Force”,它将帮助您永久设置此执行策略。

The following is the changed code:以下是更改后的代码:

Set-ExecutionPolicy Bypass  -Scope Process -Force 
    
    #Load SharePoint CSOM Assemblies
    Add-Type -Path "C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\16\ISAPI\Microsoft.SharePoint.Client.dll"
    Add-Type -Path "C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\16\ISAPI\Microsoft.SharePoint.Client.Runtime.dll"
     
    Function Download-FilesFromLibrary()
    {
        param
        (
            [Parameter(Mandatory=$true)] [string] $SiteURL,
            [Parameter(Mandatory=$true)] [string] $LibraryName,
            [Parameter(Mandatory=$true)] [string] $TargetFolder
        )
     
        Try {
            #Setup Credentials to connect
            $Username="xxx.yyyy@gmail.com"  
            $Password="X1234y"
            $securePassword = ConvertTo-SecureString $Password -AsPlainText -Force          
            #$Cred= Get-Credential
            $Credentials = New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials($Username, $securePassword)
     
            #Setup the context
            $Ctx = New-Object Microsoft.SharePoint.Client.ClientContext($SiteURL)
            $Ctx.Credentials = $Credentials
          
            #Get all files from the Library
            $List = $Ctx.Web.Lists.GetByTitle($LibraryName)
            $Ctx.Load($List)
            $Ctx.ExecuteQuery()
             
            #Get Files from the Folder
            $Folder = $List.RootFolder
            $FilesColl = $Folder.Files
            $Ctx.Load($FilesColl)
            $Ctx.ExecuteQuery()
            
            
            Write-host -f Green "All Files from Library '$LibraryName' Downloaded to Folder '$TargetFolder' Successfully!" $_.Exception.Message
            Write-host -f Green "Creating parameters file..." $_.Exception.Message
            $FileNameArray=@()
            $count=0
            $CountArray=@()
            $YearsArray=@()
            $PeriodArray=@()
            
            Foreach($File in $FilesColl)
            { 
                $FileName=$File.Name
                $FileNameYear=$FileName.SubString(4,4)
                $FileNamePeriod=$FileName.SubString(0,3)
                $TargetFile = $TargetFolder+$File.Name
                #Download the file
                $FileInfo = [Microsoft.SharePoint.Client.File]::OpenBinaryDirect($Ctx,$File.ServerRelativeURL)
                $WriteStream = [System.IO.File]::Open($TargetFile,[System.IO.FileMode]::Create)
                $FileInfo.Stream.CopyTo($WriteStream)
                $WriteStream.Close()
                $count+=1
                #"'$FileName'" Prints the File Names
                $FileNameArray+=@($FileName)
                $CountArray+=@($count)
                $YearsArray+=@($FileNameYear)
                $PeriodArray+=@($FileNamePeriod)
            }
             "File names stored in an array:"
             $FileNameArray
             "Count stored in an array:"
             $CountArray
             "Years stored in an array:"
             $YearsArray
             "Periods stored in an array:"
             $PeriodArray
             "Total no. of Files extracted:"
             $count
             If ($FileNameArray.Count -gt $CountArray.Count) {
              $limit = $FileNameArray.Count
             } Else {
              $limit = $CountArray.Count
             }
    
            $csv = For ($i = 0; $i -lt $limit; $i++) {
              New-Object -TypeName psobject -Property @{
              'Serial' = $(If ($CountArray[$i]) { $CountArray[$i] })
              'File_Names' = $(If ($FileNameArray[$i]) { $FileNameArray[$i] })
              'Years' = $(If ($YearsArray[$i]) { $YearsArray[$i] })
              'Period' = $(If ($PeriodArray[$i]) { $PeriodArray[$i] })
              'Count' = $(If ($count) { $count })
              }
            }
            $csv | Export-CSV "D:\info.csv" -NoTypeInformation
            Write-host -f Green "Parameters File Created Successfully!" $_.Exception.Message
      }
        Catch {
            write-host -f Red "Error Downloading Files from Library!" $_.Exception.Message
        }
    }
     
    #Set parameter values
    $SiteURL="https://yyyy.sharepoint.com/sites/XXXX/"
    $LibraryName="test_library"
    $TargetFolder="D:\"
     
    #Call the function to download file
    Download-FilesFromLibrary -SiteURL $SiteURL -LibraryName $LibraryName -TargetFolder $TargetFolder

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM