Как я создаю модули powershell 2.0?

Ниже для BigQuery Standard SQL

#standardSQL
SELECT
  IFNULL(OnSite.worksite_id, Documents.worksite_id) AS `Worksite`,
  IFNULL(OnSite.timestamp, DATE(Documents.timestamp)) AS `DATE`,
  COUNT(Documents.worksite_id) AS `Users_on_Site`,
  COUNT(DISTINCT OnSite.uid) AS `Completed`
FROM `project.dataset.OnSite` OnSite
LEFT JOIN `project.dataset.Documents` Documents 
ON OnSite.worksite_id = Documents.worksite_id 
AND OnSite.timestamp = DATE(Documents.timestamp)
GROUP BY `DATE`, `Worksite`

, если применить к выборке данных из вашего вопроса

WITH `project.dataset.OnSite` AS (
  SELECT "u12345" uid, "worksite_1" worksite_id, DATE '2019-01-01' `TIMESTAMP` UNION ALL
  SELECT "u12345", "worksite_1", '2019-01-02' UNION ALL
  SELECT "u12345", "worksite_1", '2019-01-03' UNION ALL
  SELECT "u12345", "worksite_1", '2019-01-04' UNION ALL
  SELECT "u12345", "worksite_1", '2019-01-05' UNION ALL
  SELECT "u12345", "worksite_1", '2019-01-06' UNION ALL
  SELECT "u1", "worksite_1", '2019-01-01' UNION ALL
  SELECT "u1", "worksite_1", '2019-01-02' UNION ALL
  SELECT "u1", "worksite_1", '2019-01-05' UNION ALL
  SELECT "u1", "worksite_1", '2019-01-06' 
), `project.dataset.Documents` AS (
  SELECT "1" document_id,     "u12345" uid,   "worksite_1" worksite_id, 'work_permit' type,    TIMESTAMP '2019-01-01 00:00:00' `TIMESTAMP` UNION ALL
  SELECT "2",     "u12345",   "worksite_2", 'job',            '2019-01-02 00:00:00' UNION ALL
  SELECT "3",     "u12345",   "worksite_1", 'work_permit',    '2019-01-03 00:00:00' UNION ALL
  SELECT "4",     "u12345",   "worksite_2", 'job',            '2019-01-04 00:00:00' UNION ALL
  SELECT "5",     "u12345",   "worksite_1", 'work_permit',    '2019-01-05 00:00:00' UNION ALL
  SELECT "6",     "u12345",   "worksite_2", 'job',            '2019-01-06 00:00:00' UNION ALL
  SELECT "7",     "u12345",   "worksite_1", 'work_permit',    '2019-01-07 00:00:00' UNION ALL
  SELECT "8",     "u12345",   "worksite_2", 'work_permit',    '2019-01-09 00:00:00' UNION ALL
  SELECT "9",     "u12345",   "worksite_1", 'job',            '2019-01-09 00:00:00' UNION ALL
  SELECT "10",    "u12345",   "worksite_2", 'work_permit',    '2019-01-09 00:00:00' UNION ALL
  SELECT "11",    "u12345",   "worksite_1", 'work_permit',    '2019-01-09 00:00:00' UNION ALL
  SELECT "12",    "u12345",   "worksite_2", 'work_permit',    '2019-01-09 00:00:00' UNION ALL
  SELECT "13",    "u12345",   "worksite_1", 'job',            '2019-01-09 00:00:00' UNION ALL
  SELECT "14",    "u12345",   "worksite_2", 'work_permit',    '2019-01-09 00:00:00' UNION ALL
  SELECT "15",    "u12345",   "worksite_1", 'work_permit',    '2019-01-09 00:00:00' 
)

результат будет ожидаемым

Row Worksite    Date        Users_on_Site   Completed    
1   worksite_1  2019-01-01  2               2    
2   worksite_1  2019-01-02  0               2    
3   worksite_1  2019-01-03  1               1    
4   worksite_1  2019-01-04  0               1    
5   worksite_1  2019-01-05  2               2    
6   worksite_1  2019-01-06  0               2    
8
задан Chris Haines 28 July 2010 в 11:52
поделиться

5 ответов

Со сборкой Win7 не стало Добавлять-модуля. Новым cmdlet является Модуль Импорта. Самый легкий способ создать модуль, переименовывают файл PS1 в файл PSM1. Оттуда можно сделать все виды вещей включая декларацию модуля.

9
ответ дан 5 December 2019 в 11:28
поделиться

Вот определенная информация. http://huddledmasses.org/powershell-modules/

http://blogs.msdn.com/mediaandmicrocode/archive/2008/08/10/microcode-all-about-modules-windows-powershell-ctp2.aspx

Давайте надеяться, что предстоящий CTP3 имеет некоторую полезную документацию о модулях.

2
ответ дан 5 December 2019 в 11:28
поделиться

Модули, надо надеяться, решат несколько проблем. Прямо сейчас мы можем использовать определение источника точки для получения функций, переменных и сценариев в глобальную область видимости сессии PowerShell.

Проблема состоит в том, что это может загрязнить Вашу сессию со всеми видами глобальных переменных и функций помощника, которые конечный пользователь не может хотеть/нуждаться непосредственно.

Модули позволят Вам как автор создавать сценарии и только делать определенные функции/переменные avaiable конечному пользователю модуля.

Они также по существу заменяют понятие PSSnapin. Можно использовать Добавлять-модуль Some.dll для добавления блока, который имеет cmdlets в нем.

То, что действительно прохладно, - то, что называют Декларацией Модуля. Это - хеш-таблица, которая в основном указывает все виды dependcies, а также автора, имени, Идентификатора GUID и номера версии. Когда пользовательские нагрузки модуль, который имеет декларацию модуля, она проверит все зависимости и запустит любые скрипты, автор модуля считает необходимым.

Должна быть некоторая достойная документация относительно них, когда CTP3 поставлется.

Надежда, которая помогает немного.

Andy

1
ответ дан 5 December 2019 в 11:28
поделиться

Windows PowerShell v2.0: TFM (sapienpress.com) имеет информацию и образцы в одной из глав. Это доступно как электронная книга, которая обновляется, поскольку новые CTPs выпущены. Я также вел блог о них на ConcentratedTech.com, и было обсуждение их по PowerShellCommunity.org на форумах.

0
ответ дан 5 December 2019 в 11:28
поделиться

Я не эксперт по Powershell, но вот что я только что выяснил, используя PowerShell 2.0 RTM.

Предположим, вы хотите создать модуль под названием MyModule :

  1. Убедитесь, что вы создали папку % My Documents% \ WindowsPowershell \ Modules
  2. Создайте папку внутри Модули , называемые MyModule
  3. Поместите свой код в файл внутри MyModule и назовите файл MyModule.psm1
  4. Не забудьте использовать команду Export-ModuleMember в качестве последнее, что есть в вашем файле сценария. Export-ModuleMember -Function * -Alias ​​* экспортирует все функции и псевдонимы
  5. В сценариях, где вы хотите использовать модуль, используйте команду Import-Module MyModule

По умолчанию Powershell настроен так, чтобы не запускать какие-либо сценарии из файлов, поэтому вам необходимо изменить параметры безопасности. Set-ExecutionPolicy Unrestricted поможет вам начать работу, если вас не беспокоят сценарии, которые необходимо подписать.

3
ответ дан 5 December 2019 в 11:28
поделиться
Другие вопросы по тегам:

Похожие вопросы: