Try this for internal users - not sure about external users...
NOTE: this is not tested code... try it on your own
$ImportFile = "<file location>"
$P = Import-Csv -Path $ImportFile
$P | ForEach-Object {
#Site, DocLibPath, InternalUserLogin, DesiredPermissions
$sID = $_.'Site'
$DocLibPath = $_.'DocLibPath'
$InternalUserLogin = $_.'InternalUserLogin'
$DesiredPermissions = $_.'DesiredPermissions'
#connect to site
$destConn = Connect-PnPOnline -Url $sID -UseWebLogin -ReturnConnection
$TargetLibrary = Get-PnPList -Identity $DocLibPath -Connection $destConn
#$TargetLibrary - /sites/site1/DocLib1
#$DocLibPath - /sites/site1/DocLib1/ChildFolder1
#$InternalUserLogin - john.doe@abcdcorp.com
#$DesiredPermissions - Read
Set-PnPFolderPermission -List $TargetLibrary -Identity $DocLibPath -User $InternalUserLogin -AddRole $DesiredPermissions
}