- PSGSuite - ChangeLog
- 2.36.4 - 2020-03-20
- 2.36.3 - 2020-03-20
- 2.36.2 - 2020-03-02
- 2.36.1 - 2020-03-02
- 2.36.0 - 2020-02-28
- 2.35.1 - 2019-12-29
- 2.35.0 - 2019-12-29
- 2.34.0 - 2019-11-02
- 2.33.2 - 2019-10-06
- 2.33.1 - 2019-10-06
- 2.33.0 - 2019-09-26
- 2.32.3 - 2019-09-18
- 2.32.2 - 2019-09-15
- 2.32.1 - 2019-09-14
- 2.32.0 - 2019-09-12
- 2.31.1 - 2019-08-30
- 2.31.0
- 2.30.2
- 2.30.1
- 2.30.0
- 2.29.0
- 2.28.2
- 2.28.1
- 2.28.0
- 2.27.0
- 2.26.4
- 2.26.3
- 2.26.2
- 2.26.1
- 2.26.0
- 2.25.3
- 2.25.2
- 2.25.1
- 2.25.0
- 2.24.0
- 2.23.2
- 2.23.1
- 2.23.0
- 2.22.4
- 2.22.3
- 2.22.2
- 2.22.1
- 2.22.0
- 2.21.3
- 2.21.2
- 2.21.1
- 2.21.0
- 2.20.2
- 2.20.1
- 2.20.0
- 2.19.0
- 2.18.1
- 2.18.0
- 2.17.2
- 2.17.1
- 2.17.0
- 2.16.1
- 2.16.0
- 2.15.4
- 2.15.3
- 2.15.2
- 2.15.1
- 2.15.0
- 2.14.1
- 2.14.0
- 2.13.2
- 2.13.1
- 2.13.0
- 2.12.1
- 2.12.0
- 2.11.0
- 2.10.2
- 2.10.1
- 2.10.0
- 2.9.0
- 2.8.1
- 2.8.0
- 2.7.2
- 2.7.1
- 2.7.0
- 2.6.3
- 2.6.2
- 2.6.1
- 2.6.0
- 2.5.4
- 2.5.3
- 2.5.2
- 2.5.1
- 2.5.0
- 2.4.0
- 2.3.0
- 2.2.1
- 2.2.0
- 2.1.5
- 2.1.3 / 2.1.4
- 2.1.2
- 2.1.1
- 2.1.0
- 2.0.3
- 2.0.2
- 2.0.1
- 2.0.0
- Issue #270
- Corrected inaccurate warning that no licenses were found for a user when using the
CheckAll
switch onGet-GSUserLicense
.
- Corrected inaccurate warning that no licenses were found for a user when using the
- Issue #270
- Added
CheckAll
switch parameter toGet-GSUserLicense
- Updated
User
parameter aliases for all*-GSUserLicense
functions to includeUserId
for better pipeline support.
- Added
- Miscellaneous
- Updated GitHub Release section in psake.ps1 to POST the release to the Org URL due to failures.
- Issue #263
- Cleaned up decryption logic for encrypted config.
- Issue #263
- Fixed
[SecureString]
decryption on Unix machines running PowerShell 7 (found additional bugs) - Migrated private
Encrypt
andDecrypt
toEncryptionHelpers.ps1
in the Private folder to allow a single place to update.
- Fixed
- PR #255 - Thanks, @FISHMANPET!
- Added support for
[ScriptBlock]
values on the config, allowing you to provide a script to run that will pull in a configuration value (vs embedded the value directly on the config)
- Added support for
- PR #255 - Thanks, @vaskotoo!
- Added support for an array of Users on
Get-GSGmailMessageList
- Added support for an array of Users on
- PR #261 - Thanks, @Foggy2!
- Added support for all license types including undocumented ones.
- Closed out Issue #252 as well.
- PR #262 - Thanks, @nwls-hermesj!
- Added support for pipeline input of Drive file objects to
Remove-GSDriveFile
.
- Added support for pipeline input of Drive file objects to
- Issue #256
- Cleaned up docs on
Send-GSChatMessage
.
- Cleaned up docs on
- Issue #258
- Removed URL Shortener functions due to Google deprecation.
- Issue #263
- Fixed
[SecureString]
decryption on Unix machines running PowerShell 7
- Fixed
- Miscellaneous
- Removed the Tasks API functions. Google has not pushed an update to the Tasks .NET SDK in over 2 months, so it is now behind the current release versions of the core Google.Apis assemblies, resulting in failure to import.
- Issue #57
- Updated
New-GSGmailSMIMEInfo
to castPkcs12
to URLSafeBase64 without removing the trailing padding=
, based on GAMs process in Python. Confirmed replication of the resultant value being sent from GAM in PowerShell, ready to validate.
- Updated
- Issue #216 - Thank you, @WJurecki!
- Added
Add-GSSheetValues
to use the nativeAppend()
method instead ofBatchUpdate()
to prevent needing to calculate the last row like you do withExport-GSSheet
. Since the input for this method has additional options and the output differs from whatExport-GSSheet
outputs, this has been moved to a unique function to prevent introducing breaking changes toExport-GSSheet
.
- Added
- Issue #221
- Added:
Invoke-GSUserOffboarding
function to wrap common offboarding tasks for ease of access management automation.
- Added:
- Issue #248
- Fixed
Get-GSSheetInfo
so it no longer defaults-IncludeGridData
to$true
if not specified in$PSBoundParameters
.
- Fixed
- Issue #249
- Updated private function
Resolve-Email
with newIsGroup
switch, then cleaned up all*-GSGroup*
functions to use it so that Group ID's are respected based on RegEx match.
- Updated private function
- Issue #252
- Added:
Archived
parameter toUpdate-GSUser
to enable setting of Archived User licenses.
- Added:
- Miscellaneous
- Swapped instances of
Get-StoragePath
forGet-ConfigurationPath
inImport-SpecificConfiguration
andSet-PSGSuiteConfig
to avoid alias related issues with PowerShell 4.0
- Swapped instances of
- Issue #245 + PR #246 - Thank you, @devblackops!
- Added: Optional
-CreateMeetEvent
switch parameter toNew-GSCalendarEvent
to create a Google Meet conference and attach it to the calendar event.
- Added: Optional
- Issue #242
- Fixed: Error handling around
[System.Console]::CursorVisible
onStart-GSDriveFileUpload
,Wait-GSDriveFileUpload
andWrite-InlineProgress
- Cleaned up verbose handling on
Stop-GSDriveFileUpload
due to file uploads showing as Failed even though they were successful.
- Fixed: Error handling around
- Miscellaneous
- Updated build.ps1 script for better verbose output
- Issue #235
- Removed:
Name
parameter fromStart-GSDriveFileUpload
as it was unused in the function and doesnt make sense when uploading an array of files.
- Removed:
- Issue #238
- Added:
Get-GSDataTransfer
to Get/List current Data Transfers
- Added:
- Issue #239
- Removed:
Update-GSResource
Id
parameter as it was non-applicable (duplicate ofResourceId
and not writable per API docs) - Cleaned up function help and examples to match changes
- Removed:
- Issue #240
- Fixed:
Get-GSCalendar
now properly resolves single calendar metadata retrieval and passes List requests toGet-GSCalendarSubscription
since theCalendars
service does not support List requests.
- Fixed:
- Miscellaneous
- Updated Google .NET SDKs to latest versions
- Cleaned up build.ps1 script
- Issue #236
- Fixed: Custom converter for Configuration metadata defaults to
ConvertTo-SecureString
as the preferred function instead of the customSecure
.Secure
is still supported for backwards compatibility.
- Fixed: Custom converter for Configuration metadata defaults to
- Issue #234
- Fixed:
Update-GSUserPhoto
errors by switching to[System.IO.File]::ReadAllBytes($path)
.
- Fixed:
- Issue #225
- Fixed: NuGet package versions for Google APIs fell back to the version sheet during the most recent version push due to failure to communicate with NuGet to dynamically pull the latest version, resulting in previous enhancements now failing (e.g. Admin SDK rolled back to a 2017 version).
- Added more guards and force update situations for the NuGetDependencies.json file during local builds to more concretely guarantee that the NuGet packages needed will be available.
- Fixed: NuGet package versions for Google APIs fell back to the version sheet during the most recent version push due to failure to communicate with NuGet to dynamically pull the latest version, resulting in previous enhancements now failing (e.g. Admin SDK rolled back to a 2017 version).
- Issue #232
- Added:
Visibility
parameter onNew-GSCalendarEvent
- Added:
- Issue #229
- Added:
Update-GSGmailLanguageSettings
andGet-GSGmailLanguageSettings
functions to update/get a users default language settings in Gmail.
- Added:
- Issue #231
- Added:
Update-GSCalenderSubscription
function to updated existing calendar subscriptions. - Removed: Default values for the following parameters on
Add-GSCalendarSubscription
to prevent automatically adding notifications for new CalendarList entries (subscriptions):DefaultNotificationType
DefaultNotificationMethod
DefaultReminderMethod
DefaultReminderMinutes
- Added:
Notifications
andReminders
parameters toAdd-GSCalenderSubscription
andUpdate-GSCalenderSubscription
- Added:
Reminders
parameter toNew-GSCalendarEvent
andUpdate-GSCalendarEvent
functions to set custom reminders on calendar events. - Added:
Add-GSCalendarEventReminder
andAdd-GSCalendarNotification
helper functions. - Updated:
DisableReminder
switch parameter name onNew-GSCalendarEvent
andUpdate-GSCalendarEvent
functions toDisableDefaultReminder
to better align with what that actually effects (default reminder inheritance only, not reminder overrides). The previous parameter name has been set as an alias to maintain backwards compatibility. - Added:
RemoveAllReminders
parameter toUpdate-GSCalendarEvent
to remove all custom reminders and disable calendar inheritance.
- Added:
- Issue #232
- Added:
Visibility
parameter onUpdate-GSCalendarEvent
to set the visibility of a calendar event.
- Added:
- Miscellaneous
- Forced
Type
parameter values to lower on theAdd-GSUser*
helper functions to ensure case senstive field matches whats expected. - Updated Google .NET SDKs to latest versions.
- Updated and corrected a LOT of comment based function help.
- Added function help tests to validate that functions contain expected help content.
- Forced
- Issue #222
- Fixed:
Remove-GSUserASP
andRemove-GSUserToken
not removing all when no Id is passed due to no service being created.
- Fixed:
- Issue #225
- Added:
RecoveryEmail
andRecoveryPhone
parameters toUpdate-GSUser
- Added:
- Issue #189
- Removed
$env:UserName
from the application name when creating the client inNew-GoogleService
to prevent errors with the underlying .NET SDK.
- Removed
- Miscellaneous
- Fixed: Corrected logic on the
FullName
parameter onUpdate-GSUser
to parse the name parts. - Updated Google .NET SDKs to latest versions.
- Fixed: Corrected logic on the
- Issue #218
- Fixed:
Update-GSOrganizationalUnit
was failing withnull
reference errors.
- Fixed:
- Issue #213
- Added: Support for
RELEASE_RESOURCES
TransferParam for Calendar application data transfers to functionStart-GSDataTransfer
- Added: Support for
- Issue #215
- Added:
Get-GSDomain
Remove-GSDomain
New-GSDomain
Get-GSDomainAlias
New-GSDomainAlias
Remove-GSDomainAlias
- These will need the additional scope of
https://www.googleapis.com/auth/admin.directory.domain
added in order to use!
- Added:
- Miscellaneous
- Added:
Get-GSCustomer
Update-GSCustomer
Add-GSCustomerPostalAddress
- These will need the additional scope of
https://www.googleapis.com/auth/admin.directory.customer
added in order to use!
- Added:
- Issue #212
- Fixed:
Get-GSUserLicense
no longer short circuiting after first license match when processing pipeline input - Updated: License SKU order to check most common license types first for
Get-GSUserLicense
, which should result in faster overall processing when working with a large amount of users.
- Fixed:
- Miscellaneous
- Fixed:
Remove-GSDrivePermission
duplicate parameter alias prevented usage after module update.
- Fixed:
- Issue #193
- Added: Drive Revision functions:
Get-GSDriveRevision
Remove-GSDriveRevision
Update-GSDriveRevision
- Added: Drive Revision functions:
- Issue #210
- Fixed:
Update-GSUser
was not accepting User ID's as the User parameter
- Fixed:
- Issue #209
- Added: Support for inline image downloading with
Get-GSGmailMessage
where the image is not included on the Attachments property of the parsed message object. - Fixed:
Get-GSGmailMessage
will now automatically set theFormat
toRaw
if eitherParseMessage
orSaveAttachmentsTo
is passed, asParseMessage
is a requirement in order to be able to access the message attachments as needed.
- Added: Support for inline image downloading with
- Issue #204
- Added:
Recurse
parameter toGet-GSDriveFileList
to allow recursively listing all files and subfolders underneath the result set. Confirmed setting theLimit
parameter also works as expected withRecurse
included, stopping is the original limit is reached. - Added:
Get-GSDriveFolderSize
function to return the calculated total size of the files in the specified folder(s).
- Added:
- Miscellaneous
- Added:
Rfc822MsgId
parameter toGet-GSGmailMessageList
to easily build a query looking for a specific RFS 822 Message ID. - Added: Pipeline support for
*-GSDrivePermission
functions to enable piping Drive Files into them to manage permissions without looping manually.
- Added:
- Issue #201
- Fixed: Fields parameter on remaining
*-GSDriveFile
functions
- Fixed: Fields parameter on remaining
- Issue #197
- Updated: All remaining
*-TeamDrive
functions now use the new Drives namespace. All previous functions names have been converted to aliases to maintain backwards compatibility. - Added:
Hide-GSDrive
- Added:
Show-GSDrive
- Updated: All remaining
- Issue #184
- Added:
EnableCollaborativeInbox
parameter toUpdate-GSGroupSettings
- Added:
WhoCanDiscoverGroup
parameter toUpdate-GSGroupSettings
- Added:
- Issue #194
- Fixed: Parameters not setting correctyl on
Update-GSChromeOSDevice
:AnnotatedAssetId [string]
AnnotatedLocation [string]
AnnotatedUser [string]
Notes [string]
- Fixed: Parameters not setting correctyl on
- Issue #188
- Fixed:
Get-SafeFileName
correctly replaces special RegEx chars with underscores as well.
- Fixed:
- Issue #188
- Added:
Get-GSDriveFile
now supports specifying a full file path. - Fixed:
Get-GSDriveFile
will now replace any special path characters in the filename with underscores - Added: The File object returned by
Get-GSDriveFile
will now include an additionalOutFilePath
property if the file is downloaded. This property will contain the full path to the downloaded file.
- Added:
- Issue #190
- Fixed:
Fields
parameter onGet-GSDriveFile
andUpdate-GSDriveFile
were not being honored.
- Fixed:
- Issue #192
- Added: Parameters to
Update-GSDriveFile
:CopyRequiresWriterPermission [switch]
Starred [switch]
Trashed [switch]
WritersCanShare [switch]
- Added: Parameters to
- Issue #194
- Added: Parameters to
Update-GSChromeOSDevice
:AnnotatedAssetId [string]
AnnotatedLocation [string]
AnnotatedUser [string]
Notes [string]
- Added: Parameters to
- Issue #195
- Added:
Limit
parameter withFirst
alias to the followingList
functions:Get-GSActivityReport
Get-GSAdminRole
Get-GSAdminRoleAssignment
Get-GSCalendar
Get-GSCalendarAcl
Get-GSCalendarEvent
Get-GSChromeOSDevice
Get-GSDataTransferApplication
Get-GSDrive
Get-GSDriveFileList
Get-GSDrivePermission
Get-GSGmailMessageList
Get-GSGroup
Get-GSGroupMember
Get-GSMobileDevice
Get-GSResource
Get-GSTask
Get-GSTaskList
Get-GSUsageReport
Get-GSUser
Get-GSUserLicense
- Added:
- Issue #196
- Fixed:
Get-GSTeamDrive
was not paginating through the results.
- Fixed:
- Issue #197
- Renamed:
Get-GSTeamDrive
has been changed toGet-GSDrive
.Get-GSTeamDrive
has been turned into an alias forGet-GSDrive
to maintain backwards compatibility. - Replaced:
SupportsTeamDrives = $true
withSupportsAllDrives = $true
on all functions that have it.
- Renamed:
- Miscellaneous
- Fixed:
Export-PSGSuiteConfig
is faster due to safely assuming that the P12Key and/or ClientSecrets values have already been pulled from the corresponding keys. - Fixed: Incomplete documentation for
Test-GSGroupMembership
. - Added:
UseDomainAdminAccess
switch parameter toGet-GSTeamDrive
- Removed:
Get-GSUserLicenseListPrivate
by rolling theList
code intoGet-GSUserLicense
- Removed:
Get-GSResourceListPrivate
by rolling theList
code intoGet-GSResource
- Fixed:
- Issue #185
- Fixed:
Get-GSGroup -Where_IsAMember $member
no longer errors.
- Fixed:
- Issue #186
- Added:
Test-GSGroupMembership
to map to the hasMember method.
- Added:
- Miscellaneous
- Improved build process to auto-update NuGet dependencies during CI.
- Added new private function
Resolve-Email
to convert a name-part or the case-sensitiveme
to the full email address accordingly.
- Issue #177 - Thanks, @WJurecki!
- Fixed:
Fields
parameterGet-GSDriveFileList
would not set correctly with the default fields value, breaking the expected experience. Restored the same functionality
- Fixed:
- Issue #182 - Thanks, @aitcriver!
- Added:
FileOrganizer
role toValidateSet
for parameterRole
on functionAdd-GSDrivePermission
- Added:
- Issue #177
- Added:
Fields
parameter toGet-GSDriveFileList
- Added:
- Issue #178
- Fixed:
Start-GSDriveFileUpload
failing on PowerShell 4.0
- Fixed:
- Issue #179
- Added:
Ims
parameter to bothNew-GSUser
andUpdate-GSUser
- Added:
Add-GSUserIm
function to create correct type for newIms
parameter.
- Added:
- Miscellaneous
- Added:
Clear-PSGSuiteServiceCache
to clear the cache and dispose of any remaining open web clients. - Improved overall service caching.
- Added: Support for
Cloud-Identity
licenses forGet-GSUserLicense
- Added:
OutputType
for all applicable Helper functions (i.e.Add-GSUserIm
).
- Added:
- Issue #172
- Fixed:
New-GoogleService
now usingNew-Object
to prevent[Google.Apis.Util.Store.FileDataStore]::new()
constructor issues in PowerShell 4.
- Fixed:
- Issue #173
- Added:
FolderColorRgb
parameter toNew-GSDriveFile
andUpdate-GSDriveFile
to enable setting the color of a folder in Drive - Thanks, @WJurecki!
- Added:
- PR #174 - Thanks, @WJurecki!
- Fixed:
Get-GSDriveFileList
filter concatenation so it joins multiple filters withand
instead of just a space
- Fixed:
- Issue #169
- Fixed:
Get-GSGmailMessage
fails to download attachments containing invalid characters (e.g.:
)
- Fixed:
- Issue #168
- Added:
Add-GSUserLocation
- Updated:
New-GSUser
andUpdate-GSUser
to add in Location support
- Added:
- Miscellaneous
- Improved pipeline support for the
User
parameter across all pertinent functions, i.e. Drive, Calendar, Gmail, Sheets & Tasks APIs.
- Improved pipeline support for the
- Miscellaneous
- Added: Pipeline support for
Remove-GSCalendarEvent
- Added: Pipeline support for
- Issue #167
- Fixed:
Switch-PSGSuiteConfig -SetToDefault
failing with invalid scope errors
- Fixed:
- PR #165 - Thanks, @scv-m!
- Updated:
Get-GSCourseParticipant
now supports pipeline input for CourseId to enable pipingGet-GSCourse
into it.
- Updated:
- Issue #166
- Fixed:
Update-GSUser
would fail to update user phones due to incorrect variable name in the Process block, effectively skipping it.
- Fixed:
- Issue #162
- Updated:
New-GoogleService
now caches Service objects created during the current session. This means that repeated calls will attempt to use an existing Service object from the cache if present, otherwise it will create the Service as usual. - Updated:
New-GoogleService
Verbose output. To cut down on verbose noisiness, the following verbose output is set:- New Service created =
Building ServiceAccountCredential from....
- First use of existing Service =
Using matching cached service for user....
- Re-use of existing Service = No verbose output (helps cut down on pipeline verbosity where service re-use is expected)
- New Service created =
- Added:
Get-PSGSuiteServiceCache
to get the current Service Cache for inspection.
- Updated:
- Issue #163
- Added:
Get-GSCalendar
to get the CalendarList of a user. - Added:
Remove-GSCalendarAcl
to remove Access Control List rules from Google Calendars.
- Added:
- Miscellaneous
- Improved pipeline support for Gmail
*Message
functions and Calendar functions. - Added tab completion to
Switch-PSGSuiteConfig
for the ConfigName parameter.
- Improved pipeline support for Gmail
- Issue #159
- Added:
Revoke-GSStudentGuardianInvitation
to revoke student guardian invitations (Classroom API)
- Added:
- Fixed logic issue with Get-GSUsageReport for reports returning no entities where errors would be thrown. Resolved by guarding against acting on
$null
values in the loop.
This update changes the output of Get-GSUsageReport
-- please review the output changes before updating if you have scripts that use that function!!
- Fixed:
Get-GSUsageReport
wasn't displaying critical report information (such as the Entity info) due to Select-Object being hardcoded. Function has been updated to parse the resulting Parameters and Entity info out to the top-level object.- Added:
Flat
switch to specify that the parsed properties match what GAM returns, i.e.'gmail:num_outbound_unencrypted_emails' = 6
. Normal behavior would be to parse that into an ordered dictionary, i.e.gmail['num_outbound_unencrypted_emails'] = 6
, so that onlygmail
is seen from the top level object and all relevant report data is captured in the underlying dictionary. - Added:
Raw
switch to allow the raw UsageReportsValue to be returned instead of parsing it out.
- Added:
- Issue #152
- Added full coverage of
Gmail.Settings.SendAs
resource (where signatures are managed with the newer Gmail API):- Added:
Get-GSGmailSendAsAlias
- Added:
Update-GSGmailSendAsAlias
- Added:
Get-GSGmailSignature
(aliased toGet-GSGmailSendAsAlias
) - Added:
Update-GSGmailSignature
(aliased toUpdate-GSGmailSendAsAlias
with some additional convenience parameters) - Added:
Get-GSGmailSendAsSettings
(aliased toGet-GSGmailSendAsAlias
) - Added:
Update-GSGmailSendAsSettings
(aliased toUpdate-GSGmailSendAsAlias
) - Added:
Remove-GSGmailSendAsAlias
- Added:
New-GSGmailSendAsAlias
- Added:
Send-GSGmailSendAsConfirmation
- Added:
- Added full coverage of
- Issue #147
- Added:
Get-GSChromeOSDevice
- Handles Get or List requests, depending on if you specify a ResourceId or not. - Added:
Update-GSChromeOSDevice
- Handles Action, Move and/or Patch requests depending on the parameters passed.
- Added:
- Issue #144
- Updated:
Start-GSDriveFileUpload
to not call[System.Console]::CursorVisible
when$Host
is PowerShell ISE
- Updated:
- Issue #144
- Updated:
Start-GSDriveFileUpload
toDispose()
open streams once uploads are completed. - Added:
Stop-GSDriveFileUpload
to enable cleanup of any remaining open streams. - Updated:
Get-GSDriveFileUpload
toDispose()
any completed streams that are still open.
- Updated:
- PR #141 - Thanks, @dwrusse!
- Added:
Remove-GSDriveFile
- Updated:
Get-GSCalendarSubscription
to add support forList()
requests and added theShowHidden
&ShowDeleted
parameters.
- Added:
- Miscellaneous: Config management and portability updates
- Added:
Export-PSGSuiteConfig
function to export key parts of your config in a transportable JSON file. - Added:
Import-PSGSuiteConfig
function to import a config from a JSON file (i.e. one created withExport-PSGSuiteConfig
) or from a JSON string (i.e. stored in a secure variable in a CI/CD system.) - Updated: All config functions now store the P12Key or the ClientSecrets JSON string in the encrypted config directly. This is to allow removal of the secrets files as well as enable PSGSuite to run in a contained environment via importing the config from a secure JSON string.
- Updated:
[Get|Set|Switch]-PSGSuiteConfig
to include the P12Key and ClientSecrets parameters that enable housing of the key/secret directly on the encrypted config. - Updated: If the global PSGSuite variable
$global:PSGSuite
exists during module import, it will default to using that as it's configuration, otherwise it will import the default config if set.
- Added:
- Issue #131
- Fixed: Changed
CodeReceiver
to usePromptCodeReceiver
when client is PowerShell Core, asLocalServerCodeReceiver
does not appear to redirect correctly and auth fails. Same behavior in Core regardless of OS.
- Fixed: Changed
- Miscellaneous
- Added:
OutputType
to all functions that return standard objects.
- Added:
- Issue #136
- Fixed:
Start-GSDriveFileUpload
failing when specifying a user other than the Admin user to do the upload as.
- Fixed:
- Issue #131 - Free/standard Google Account support
- Fixed: Handling of scopes in
New-GoogleService
for authentication when a client_secrets.json file is used instead of the typical .p12 key. - Updated: Documentation to show how to use an account that is not a G Suite admin or G Suite user at all with PSGSuite
- Updated:
*-PSGSuiteConfig
commands now store the client_secrets.json string contents directly on the encrypted config once provided either the path or the string contents directly, allowing users to remove any plain text credentials once loaded into the encrypted config. - Updated:
Get-GSToken
now usesNew-GoogleService
under the hood, soclient_secrets.json
will work with Contacts API.
- Fixed: Handling of scopes in
- PR #130 / Issue #129
- Added: Support for UserRelations management in
New-GSUser -Relations $relations
andUpdate-GSUser -Relations $relations
viaAdd-GSUserRelation
helper function. - Thanks, @mattwoolnough! - Added: Logic to
Update-GSUser
to enable clearing of all values for user propertiesPhones
,ExternalIds
,Organizations
, andRelations
by REST API call via passing$null
as the value when callingUpdate-GSUser
. - Thanks, @mattwoolnough!
- Added: Support for UserRelations management in
- Issue #129
- Fixed: Documentation for
Get-GSSheetInfo
around theFields
parameter. - Added: Additional correction of casing for
Fields
values inGet-GSSheetInfo
so that it will always submit the values using the correct case, even if providing the incorrect case as the value to the parameter.
- Fixed: Documentation for
- Issue #120
- Added:
Update-GSMobileDevice
to allow taking action on Mobile Devices - Fixed: Bug in
Remove-GSMobileDevice
with incorrect variable name
- Added:
- Issue #121
- Added:
Update-GSGroupMember
to allow setting a group member's Role and/or DeliverySettings
- Added:
- Miscellaneous
- Added: GitHub release automation to deploy task
- Added: Twitter update automation on new version release to deploy task
- Issue #115
- Renamed:
Get-GSCalendarEventList
toGet-GSCalendarEvent
and set the original name as an exported Alias to the new name for backwards compatibility. - Added:
EventId
parameter toGet-GSCalendarEvent
to specify individual event ID's to get instead of a filtered list. - Added:
PrivateExtendedProperty
parameter toGet-GSCalendarEvent
. - Added:
SharedExtendedProperty
parameter toGet-GSCalendarEvent
. - Added:
PrivateExtendedProperties
parameter toNew-GSCalendarEvent
andUpdate-GSCalendarEvent
. - Added:
SharedExtendedProperties
parameter toNew-GSCalendarEvent
andUpdate-GSCalendarEvent
. - Added:
ExtendedProperties
parameter toNew-GSCalendarEvent
andUpdate-GSCalendarEvent
. - Added:
Id
parameter toNew-GSCalendarEvent
andUpdate-GSCalendarEvent
.
- Renamed:
- Issue #117
- Fixed: Type error on
States
parameter ofGet-GSStudentGuardianInvitation
.
- Fixed: Type error on
- Miscellaneous
- Updated Contributing doc with new Build script steps
- Removed
DebugMode.ps1
script since it's no longer needed (usebuild.ps1
instead)
- PR #113
- Added:
Add-GSUserEmail
to support the Emails property. - Thanks, @sguilbault-sherweb! - Updated:
Add-GSUser
andUpdate-GSUser
to implement the newly supportedEmails
property. - Thanks, @sguilbault-sherweb! - Fixed: Removed
if ($PSCmdlet.ParameterSetName -eq 'Get')
fromNew-GSAdminRoleAssignment
that was making the cmdlet fail. - Thanks, @sguilbault-sherweb! - Fixed:
New-GSAdminRoleAssignment
help section rewrite. (The help of this function was a copy of theGet-GSAdminRoleAssignment
cmdlet) - Thanks, @sguilbault-sherweb!
- Added:
- Issue #87
- Added: Additional scopes during Service creation for
Get-GSCourseParticipant
andGet-GSClassroomUserProfile
to enable pulling of full user profile information. - Thanks, @jdstanberry!
- Added: Additional scopes during Service creation for
- Issue #111
- Added:
DisableReminder
switch parameter toNew-GSCalendarEvent
andUpdate-GSCalendarEvent
to remove Reminder inheritance from the calendar the event is on as well as any Reminder overload definitions.
- Added:
- Issue #53
- Updated:
Get-GSContactList
andRemove-GSContact
Token retrieval and overall cleanup
- Updated:
- Various/Other
- Updated:
Get-GSToken
to align parameters more withNew-GoogleService
- Updated:
- Issue #87
- Added:
Get-GSCourseParticipant
andGet-GSClassroomUserProfile
now have theFields
parameter - Added:
Sync-GSUserCache
to create a hashtable of users for quick lookups throughout scripts
- Added:
- Issue #53 via PR #108 - Thanks, @dwrusse!
- Added:
Get-GSContactList
- Added:
Remove-GSContact
- Added:
- Other additions via PR #108 - Thanks, @dwrusse!
- Added:
Remove-GSCalendarEvent
- Added:
New-GSGmailLabel
- Added:
Remove-GSGmailLabel
- Added:
- Issue #103
- Fixed:
SendNotificationEmail
is now correctly defaulting to$false
, but attempting to actually send the notification email results in an error. This is now corrected.
- Fixed:
- Validated deployment via Azure Pipelines
- Issue #102
- Fixed:
$EncryptionKey
PSM1 parameter now stores the AES key correctly so SecureStrings are encrypted/decrypted as intended.
- Fixed:
- Issue #103
- Updated:
SendNotificationEmail
parameter onAdd-GSDrivePermission
defaults to false for all User & Group permissions that are not ownership transfers. - Updated: Documentation for
SendNotificationEmail
parameter onAdd-GSDrivePermission
for clarity towards default Google API parameter values.
- Updated:
- Added: More unit testing for
Get-GSUser
- Updated:
psake
build script
- Fixed: Module deployment segment in psake script deploying decompiled/broken module
- Updated: Build script to compile module into a single PSM1 file for cleanliness and loading speed improvements
- Issue #96
- Updated the following on
Get-GSGroup
:- Set default scope to
Customer
so that getting the list of groups expectedly gets all of them, not just the ones in your primary domain - Added
Domain
parameter to specify which domain to list groups from your customer account - Added
Filter
parameter to only list groups matching the Group query syntax - Moved the
Get-GSGroupListPrivate
private function into the body ofGet-GSGroup
for error clarity
- Set default scope to
- Updated the following on
- Others:
- Moved the
Get-GSUserListPrivate
private function into the body ofGet-GSUser
for error clarity - Improved error handling for User and Message List functions when there are no results.
- Moved the
- Issue #87
- Fixed
Add-GSCourseParticipant
error:"Cannot convert the "[email protected]" value of type "System.String" to type "Google.Apis.Classroom.v1.Data.Student"."
- Set
$request.Fields = "*"
forGet-GSCourseParticipant
andGet-GSClassroomUserProfile
to return all available fields for theProfile
, includingEmailAddress
- Fixed
- Issue #93
- Added:
MaxToModify
parameter toRemove-GSGmailMessage
andUpdate-GSGmailMessageLabels
in theFilter
parameter set to prevent removing/updating more messages than expected when using a filter to gather the list of messages to update.
- Added:
- Added:
Id
alias forUser
parameter onGet-GSUser
for better pipeline support
- Pull Request #94 Thanks, @dwrusse!
- Added
Update-GSGmailLabel
to enable updating of Gmail label properties - Added
Update-GSGmailMessageLabels
enable updating of labels attached to Gmail messages
- Added
- Issue #93
- Updated
Remove-GSGmailMessage
to include a-Filter
parameter to allow removal of messages matching a filter in a single command - Improved pipeline support for
Remove-GSGmailMessage
- Updated
- Issue #87
- Added
User
parameter to all Classroom functions to specify which user to authenticate the request as
- Added
- Issue #90
- Added
Update-GSUserPhoto
- Added
Remove-GSUserPhoto
- Added
- Updated Gmail Delegation functions to use the .NET SDK after Google announced delegation support for the Gmail API
- Cleaned up
Get-GSGmailDelegates
by removing the trailings
(nowGet-GSGmailDelegate
). Added the original function as an alias to the new function for backwards compatibility with scripts. - Removed the
Raw
parameter fromGet-GSGmailDelegate
since it's no longer applicable. - Enabled
Get-GSGmailDelegate
to perform both Get and List requests (previously only performed List requests)
- Issue #87
- Removed
Add-Member
calls fromGet-GSCourseParticipant
to resolve item 3 on issue - Cleaned up
CourseStates
parameter onGet-GSCourse
to validate against the Enum directly and removed the default parameter value to resolve item 2 on issue - Cleaned up
State
parameter onGet-GSStudentGuardianInvitation
to validate against the Enum directly in an effort to prevent the same issue as item 2
- Removed
- Issue #85
- Added Google Classroom support with the following functions:
Add-GSCourseParticipant
Confirm-GSCourseInvitation
Get-GSClassroomUserProfile
Get-GSCourse
Get-GSCourseAlias
Get-GSCourseInvitation
Get-GSCourseParticipant
Get-GSStudentGuardian
Get-GSStudentGuardianInvitation
New-GSCourse
New-GSCourseAlias
New-GSCourseInvitation
New-GSStudentGuardianInvitation
Remove-GSCourse
Remove-GSCourseAlias
Remove-GSCourseInvitation
Remove-GSCourseParticipant
Remove-GSStudentGuardian
Update-GSCourse
- Added Google Classroom support with the following functions:
- Fixed:
Get-GSToken
Create/Expiry time split issue on macOS caused by difference in-UFormat %s
(macOS doesn't have trailing milliseconds) - Fixed: Logic in confirming if UserID is
[decimal]
to prevent unnecessary errors
- Issue #83
- Added:
Add-GSUserOrganization
to create UserOrganization objects - Updated:
Update-GSUser
andNew-GSUser
to include Organizations parameter and cleaned up logic for other Generic.List type parameters to ensure functionality
- Added:
- Fixed:
Add-GSDrivePermission
fails to transfer ownership of files (Issue #80)
- Fixed: Private list functions to check if a value is actually returned before adding members to the returned objects (Issue #77)
- Added:
Update-GSChatMessage
to allow updating existing messages in Chat (i.e. on Card Clicked events) - Updated: Order of parameters in
Get-GSToken
to placeScopes
first, as it's the only required parameter - Updated:
Get-GSChatSpace
now updates the config with Space names/shortnames for ease of use - Updated:
Send-GSChatMessage
to also support calling the REST API as an additional option. This is necessary for PoshBot due to the deserialization of objects passed back to result parser breaking the Google SDK type references - Updated:
Get-GSChatConfig
to always fetch the latest config if no ConfigName is passed instead of usingShow-PSGSuiteConfig
- Updated:
Set-PSGSuiteConfig
to refresh the Spaces dictionary each time in order to remove stale spaces (i.e. on removal of bot from a Room or DM) - Fixed:
Add-GSChatOnClick
now properly builds the hashtable for the Webhook object - Updated:
Get-GSUser
to allow passing User ID's instead of emails by checking if value passed is adecimal
before concatenating the domain name.
- Fixed:
Get-GSDrivePermission
now returns all fields (including EmailAddress)
- Added:
Get-GSChatMember
,Get-GSChatMessage
,Get-GSChatSpace
,Remove-GSChatMessage
,Send-GSChatMessage
,Add-GSChatButton
,Add-GSChatCard
,Add-GSChatCardAction
,Add-GSChatCardSection
,Add-GSChatImage
,Add-GSChatKeyValue
,Add-GSChatOnClick
,Add-GSChatTextParagraph
- These allow interaction with the Google Chat API via either Webhook or through the SDK
- Using the Webhook requires no additional configuration as the Webhook includes the authentication key and token in the URL
- Using the SDK requires additional configuration of the Bot in the Google Developer's console (Documentation soon to come)
- Added:
Get-GSChatConfig
to retrieve the Chat specific config data - Updated:
Set-PSGSuiteConfig
&Get-PSGSuiteConfig
to manage config dictionaries for Chat Webhook and Space data - Updated: All .NET SDK DLL's to version 1.34 to work with the Hangouts Chat API
- Added:
Get-GSGmailSMIMEInfo
,Remove-GSGmailSMIMEInfo
&New-GSGmailSMIMEInfo
to get, delete and insert S/MIME info for a user, respectively (Issue #57)
- Added:
Get-GSDocContent
,Set-GSDocContent
&Add-GSDocContent
to establish functional parity withGet-Content
,Set-Content
&Add-Content
in regards to working with Google Docs (Issue #56)
- Updated: Added
Path
parameter toUpdate-GSDriveFile
to allow updating a file's contents in Drive using a local file path (Issue #55)
- Added:
Clear-GSTasklist
,Get-GSTask
,Get-GSTasklist
,Move-GSTask
,New-GSTask
,New-GSTasklist
,Remove-GSTask
,Remove-GSTasklist
,Update-GSTask
&Update-GSTasklist
- These will allow full use of the Tasks API from Google.
- Please see the updated Initial Setup guide to update your API access for the new Scope list and enable the Tasks API in your project in the Developer Console!
- Updated: Added
IsAdmin
switch parameter toUpdate-GSUser
, allowing set or revoke SuperAdmin privileges for a user (Issue #54) - Added:
Get-GSAdminRole
,New-GSAdminRole
,Remove-GSAdminRole
&Update-GSAdminRole
to manage Admin Roles in G Suite (Issue #54) - Added:
Get-GSAdminRoleAssignment
,New-GSAdminRoleAssignment
&Remove-GSAdminRoleAssignment
to manage Admin Role Assignments in G Suite (Issue #54)
- Fixed:
Get-GSGroup
failing when usingList
ParameterSet and theFields
Parameter (Issue #63)
- Added:
Remove-GSDrivePermission
. Thanks to Jeremy McGee!
- Fixed:
Get-GSDrivePermission
fails when attempting to get Team Drive permissions.
- Fixed:
Update-GSCalendarEvent
had default values set for LocalStartDateTime and LocalEndDateTime parameters, causing those to always update the event unexpectedly if a start and/or end datetime was not passed when running the command (Issue #59)
- Added:
Get-GSCalendarACL
andNew-GSCalendarACL
for pulling/adding calendar ACL's.
- Fixed:
Export-GSDriveFile -OutFilePath C:\doc.pdf -Type PDF
failing due to incorrect parameter validation. (Issue #51)
- Added:
Get-GSGmailProfile
andGet-GSDriveProfile
to pull down information for a user's Gmail or Drive account.
- Fixed:
Add-GSDrivePermission
error messages stating FileId is ReadOnly. (Issue #47) - Fixed:
Get-GSGmailMessage -ParseMessage
broken on non-Windows OS's due to using $env:TEMP. Switched to converting the MimeMessage to a stream and parsing it that way for resolution and significant perf gains. (Issue #48)
- Added:
Compare-ModuleVersion
function to get latest installed version and compare against the latest version on the PSGallery (Issue #44) - Fixed: Pipeline support, so you can do things like the following and get group, group member and user details (as an example) easily (Issue #45):
#much pipe
$users = Get-GSGroup $groupEmail -Verbose -OutVariable group | Get-GSGroupMember -Verbose -OutVariable members | Get-GSUser -Verbose
#contains the group's info
$group
#contains the group members' info
$members
#contains the group members' full user info
$users
- Added:
CustomSchemas
parameter toNew-GSUser
(Resolve Issue #42)
- Fixed/Added: Specific domain support for listing users with
Get-GSUser -Filter $filter -Domain domain2.com
to allow customers with multiple domains to only list users for a specific domain instead of just the entire customer or domain saved in the config. (Resolve Issue #32) - Added: Better verbose output in when listing users
- Fixed: Performance increase in
Get-GSDriveFileList
but returning DriveFile objects as it iterates through each page instead of storing in an array and returning the array at the end (Resolve Issue #38)
- Fixed:
Update-GSUser -CustomSchemas @{schema = @{field = "value"}}
resulting in null array (Resolve Issue #39)
- Fixed:
Add-GSGmailDelegate
andRemove-GSGmailDelegate
returning 400 Bad Request responses (Resolve Issue #35)
- Added: Custom Schema value setting for
Update-GSUser
- Fixed:
Get-GSUser -Filter *
not returning the full user list with large organizations (Resolve Issue #32)
- Added: Refactored Get-GSToken to work on all versions of PowerShell and confirmed Gmail Delegation commands working in PowerShell Core (Resolve Issue #8)
- Added:
Get-GSUserAlias
,New-GSUserAlias
,Remove-GSUserAlias
for user alias management - Added:
Get-GSGroupAlias
,New-GSGroupAlias
,Remove-GSGroupAlias
for group alias management - Added:
Get-GSCalendarSubscription
,Add-GSCalendarSubscription
andRemove-GSCalendarSubscription
for managing calendar list entries - Updated:
Start-GSDriveFileUpload
to fix recursive issues with trailing directory separators - Updated:
Watch-GSDriveFileUpload
to show progress of total file upload vs batch upload
- Fixed:
Update-GSGmailAutoForwardingSettings
returns a 403 due to incorrect scope #25
Added the following:
- Functions
- Get-GSGmailAutoForwardingSettings
- Get-GSGmailImapSettings
- Get-GSGmailPopSettings
- Get-GSGmailVacationSettings
- Update-GSGmailAutoForwardingSettings
- Update-GSGmailImapSettings
- Update-GSGmailPopSettings
- Update-GSGmailVacationSettings
- CI Testing
- Added Travis CI testing for both Linux and macOS tests along with the existing AppVeyor CI testing on Ubuntu (PowerShell Core) Windows (PowerShell Core and Windows PowerShell)
- Added: Update-GSCalendarEvent
- Fixed: Error handling to only throw terminating errors when ErrorActionPreference is
Stop
****
- Fixed: Export-GSSheet -Value results in error #19
- Updated: Added
-Attendees
and-AttendeeEmails
parameters to New-GSCalendarEvent - Added: Add-GSEventAttendee
- Added: Get-GSActivityReport
- Added: Get-GSUsageReport
- Added: Add-GSGmailForwardingAddress
- Fixed: Module to load only public functions
- Fixed: Documentation/comment based help for Get-GSUsageReport
- Added: Get-GSActivityReport
- Added: Get-GSUsageReport
- Updated: Initial setup page to include Reports scopes
- Fixed: Error when using -CalendarID with Get-GSCalendarEventList #17
- Fixed: Update-GSUser failing to update OrgUnitPath #18
- Added: -Attendees parameter to New-GSCalendarEvent
- Added: Add-GSEventAttendee helper function
- Fixed: Issue with Add-GSUserExternalId #14
- Fixed: Set-PSGSuiteConfig not accepting pipeline input #13
- PowerShell Core/cross-platform support added
- All Drive functions now support Team Drives
- Get-GSGmailMessage can now save message attachments to a local path
- File uploads to Drive are now supported (including recursive folder uploads!)
- P12 Keys (service accounts) and client_secrets.json (OAuth) are both now supported
The Gmail API does not yet support handling inbox delegation. The functionality addition has been pushed back again until Q3 of 2018. Once the Gmail API supports inbox delegation, those functions will be added.
Delegation functions have been re-added to PSGSuite as of v2.4.0! Update now to get all the goodness of v2 + delegation commands!
Please note that not all functions were ported to PSGSuite 2.0.0 due to restrictions within the .NET SDK and deprecated API calls. Here is the list of functions no longer existing in PSGSuite as of 2.0.0:
- Get-GSToken: no need for this as the keys are being consumed by Googles Auth SDK directly now, which makes Access/Refresh tokens non-existent for P12 Key service accounts and token management is handled automatically
- Revoke-GSToken: same here, no longer needed due to auth service changes
- Start-PSGSuiteConfigWizard: no longer supported as WPF is not compatible outside of Windows
All other functions are either intact or have an alias included to support backwards compatibility in scripts. Full list of aliases:
Alias Maps To
----- -------
Add-GSDriveFilePermissions Add-GSDrivePermission
Export-PSGSuiteConfiguration Set-PSGSuiteConfig
Get-GSCalendarResourceList Get-GSResourceList
Get-GSDataTransferApplicationList Get-GSDataTransferApplication
Get-GSDriveFileInfo Get-GSDriveFile
Get-GSDriveFilePermissionsList Get-GSDrivePermission
Get-GSGmailFilterList Get-GSGmailFilter
Get-GSGmailLabelList Get-GSGmailLabel
Get-GSGmailMessageInfo Get-GmailMessage
Get-GSGroupList Get-GSGroup
Get-GSGroupMemberList Get-GSGroupMember
Get-GSMobileDeviceList Get-GSMobileDevice
Get-GSOrganizationalUnitList Get-GSOrganizationalUnit
Get-GSOrgUnit Get-GSOrganizationalUnit
Get-GSOrgUnitList Get-GSOrganizationalUnit
Get-GSOU Get-GSOrganizationalUnit
Get-GSResourceList Get-GSResource
Get-GSShortURLInfo Get-GSShortURL
Get-GSTeamDrivesList Get-GSTeamDrive
Get-GSUserASPList Get-GSUserASP
Get-GSUserLicenseInfo Get-GSUserLicense
Get-GSUserLicenseList Get-GSUserLicense
Get-GSUserList Get-GSUser
Get-GSUserSchemaInfo Get-GSUserSchema
Get-GSUserSchemaList Get-GSUserSchema
Get-GSUserTokenList Get-GSUserToken
Import-PSGSuiteConfiguration Get-PSGSuiteConfig
Move-GSGmailMessageToTrash Remove-GSGmailMessage
New-GSCalendarResource New-GSResource
Remove-GSGmailMessageFromTrash Restore-GSGmailMessage
Set-PSGSuiteDefaultDomain Switch-PSGSuiteConfig
Switch-PSGSuiteDomain Switch-PSGSuiteConfig
Update-GSCalendarResource Update-GSResource
Update-GSSheetValue Export-GSSheet