diff --git a/core/includes/common.inc b/core/includes/common.inc
index 3841d90..7424852 100644
--- a/core/includes/common.inc
+++ b/core/includes/common.inc
@@ -2764,7 +2764,7 @@ function drupal_get_library($module, $name = NULL) {
 
   if (!isset($libraries[$module])) {
     // Retrieve all libraries associated with the module.
-    $module_libraries = module_invoke($module, 'library_info');
+    $module_libraries = Drupal::moduleHandler()->invoke($module, 'library_info');
     if (empty($module_libraries)) {
       $module_libraries = array();
     }
@@ -3217,7 +3217,7 @@ function drupal_cron_run() {
     foreach (\Drupal::moduleHandler()->getImplementations('cron') as $module) {
       // Do not let an exception thrown by one module disturb another.
       try {
-        module_invoke($module, 'cron');
+        Drupal::moduleHandler()->invoke($module, 'cron');
       }
       catch (Exception $e) {
         watchdog_exception('cron', $e);
diff --git a/core/includes/install.inc b/core/includes/install.inc
index 67c18b7..9eebbd4 100644
--- a/core/includes/install.inc
+++ b/core/includes/install.inc
@@ -651,7 +651,7 @@ function drupal_install_system() {
 
   \Drupal::service('config.installer')->installDefaultConfig('module', 'system');
 
-  module_invoke('system', 'install');
+  Drupal::moduleHandler()->invoke('system', 'install');
 }
 
 /**
@@ -1003,7 +1003,7 @@ function drupal_requirements_severity(&$requirements) {
 function drupal_check_module($module) {
   module_load_install($module);
   // Check requirements
-  $requirements = module_invoke($module, 'requirements', 'install');
+  $requirements = Drupal::moduleHandler()->invoke($module, 'requirements', array('install'));
   if (is_array($requirements) && drupal_requirements_severity($requirements) == REQUIREMENT_ERROR) {
     // Print any error messages
     foreach ($requirements as $requirement) {
diff --git a/core/includes/mail.inc b/core/includes/mail.inc
index 61dfb7e..7b08ad3 100644
--- a/core/includes/mail.inc
+++ b/core/includes/mail.inc
@@ -151,8 +151,9 @@ function drupal_mail($module, $key, $to, $langcode, $params = array(), $reply =
   $message['headers'] = $headers;
 
   // Build the e-mail (get subject and body, allow additional headers) by
-  // invoking hook_mail() on this module. We cannot use module_invoke() as
-  // we need to have $message by reference in hook_mail().
+  // invoking hook_mail() on this module. We cannot use
+  // moduleHandler()->invoke() as we need to have $message by reference in
+  // hook_mail().
   if (function_exists($function = $module . '_mail')) {
     $function($key, $message, $params);
   }
diff --git a/core/includes/schema.inc b/core/includes/schema.inc
index d0fd30b..6f92ff2 100644
--- a/core/includes/schema.inc
+++ b/core/includes/schema.inc
@@ -85,7 +85,7 @@ function drupal_get_complete_schema($rebuild = FALSE) {
         // Cast the result of hook_schema() to an array, as a NULL return value
         // would cause array_merge() to set the $schema variable to NULL as well.
         // That would break modules which use $schema further down the line.
-        $current = (array) module_invoke($module, 'schema');
+        $current = (array) Drupal::moduleHandler()->invoke($module, 'schema');
         // Set 'module' and 'name' keys for each table, and remove descriptions,
         // as they needlessly slow down cache()->get() for every single request.
         _drupal_schema_initialize($current, $module);
@@ -273,7 +273,7 @@ function drupal_uninstall_schema($module) {
 function drupal_get_schema_unprocessed($module, $table = NULL) {
   // Load the .install file to get hook_schema.
   module_load_install($module);
-  $schema = module_invoke($module, 'schema');
+  $schema = Drupal::moduleHandler()->invoke($module, 'schema');
 
   if (isset($table)) {
     if (isset($schema[$table])) {
diff --git a/core/includes/update.inc b/core/includes/update.inc
index c45e013..c7ea792 100644
--- a/core/includes/update.inc
+++ b/core/includes/update.inc
@@ -987,7 +987,7 @@ function update_get_update_list() {
     if ($updates !== FALSE) {
       // module_invoke returns NULL for nonexisting hooks, so if no updates
       // are removed, it will == 0.
-      $last_removed = module_invoke($module, 'update_last_removed');
+      $last_removed = Drupal::moduleHandler()->invoke($module, 'update_last_removed');
       if ($schema_version < $last_removed) {
         $ret[$module]['warning'] = '<em>' . $module . '</em> module can not be updated. Its schema version is ' . $schema_version . '. Updates up to and including ' . $last_removed . ' have been removed in this release. In order to update <em>' . $module . '</em> module, you will first <a href="http://drupal.org/upgrade">need to upgrade</a> to the last version in which these updates were available.';
         continue;
diff --git a/core/modules/file/file.module b/core/modules/file/file.module
index 892b214..996323b 100644
--- a/core/modules/file/file.module
+++ b/core/modules/file/file.module
@@ -651,7 +651,7 @@ function file_file_download($uri, $field_type = 'file') {
         // Default to FALSE and let entities overrule this ruling.
         $grants = array('system' => FALSE);
         foreach (\Drupal::moduleHandler()->getImplementations('file_download_access') as $module) {
-          $grants = array_merge($grants, array($module => module_invoke($module, 'file_download_access', $field, $entity, $file)));
+          $grants = array_merge($grants, array($module => Drupal::moduleHandler()->invoke($module, 'file_download_access', array($field, $entity, $file))));
         }
         // Allow other modules to alter the returned grants/denies.
         $context = array(
diff --git a/core/modules/node/lib/Drupal/node/NodeFormController.php b/core/modules/node/lib/Drupal/node/NodeFormController.php
index 3fb7584..b4a47fc 100644
--- a/core/modules/node/lib/Drupal/node/NodeFormController.php
+++ b/core/modules/node/lib/Drupal/node/NodeFormController.php
@@ -100,7 +100,7 @@ public function form(array $form, array &$form_state) {
       '#default_value' => $node->getChangedTime(),
     );
 
-    $language_configuration = module_invoke('language', 'get_default_configuration', 'node', $node->getType());
+    $language_configuration = \Drupal::moduleHandler()->invoke('language', 'get_default_configuration', array('node', $node->getType()));
     $form['langcode'] = array(
       '#title' => t('Language'),
       '#type' => 'language_select',
diff --git a/core/modules/search/search.module b/core/modules/search/search.module
index 25f9825..fcb12b6 100644
--- a/core/modules/search/search.module
+++ b/core/modules/search/search.module
@@ -414,7 +414,7 @@ function _search_index_truncate(&$text) {
  */
 function search_invoke_preprocess(&$text, $langcode = NULL) {
   foreach (\Drupal::moduleHandler()->getImplementations('search_preprocess') as $module) {
-    $text = module_invoke($module, 'search_preprocess', $text, $langcode);
+    $text = Drupal::moduleHandler()->invoke($module, 'search_preprocess', array($text, $langcode));
   }
 }
 
diff --git a/core/modules/system/lib/Drupal/system/Tests/Module/ModuleApiTest.php b/core/modules/system/lib/Drupal/system/Tests/Module/ModuleApiTest.php
index 0d184b6..a24252c 100644
--- a/core/modules/system/lib/Drupal/system/Tests/Module/ModuleApiTest.php
+++ b/core/modules/system/lib/Drupal/system/Tests/Module/ModuleApiTest.php
@@ -117,13 +117,14 @@ function testModuleImplements() {
   }
 
   /**
-   * Test that module_invoke() can load a hook defined in hook_hook_info().
+   * Test that moduleHandler()->invoke() can load a hook defined in
+   * hook_hook_info().
    */
   function testModuleInvoke() {
     \Drupal::moduleHandler()->install(array('module_test'), FALSE);
     $this->resetAll();
     $this->drupalGet('module-test/hook-dynamic-loading-invoke');
-    $this->assertText('success!', 'module_invoke() dynamically loads a hook defined in hook_hook_info().');
+    $this->assertText('success!', 'moduleHandler()->invoke() dynamically loads a hook defined in hook_hook_info().');
   }
 
   /**
diff --git a/core/modules/system/system.module b/core/modules/system/system.module
index fc6f61c..c02995d 100644
--- a/core/modules/system/system.module
+++ b/core/modules/system/system.module
@@ -2614,7 +2614,7 @@ function system_get_module_admin_tasks($module, $info) {
 
   $admin_tasks = array();
   $titles = array();
-  if ($menu = module_invoke($module, 'menu')) {
+  if ($menu = Drupal::moduleHandler()->invoke($module, 'menu')) {
     foreach ($menu as $path => $item) {
       if (isset($links[$path])) {
         $task = $links[$path];
diff --git a/core/modules/system/tests/modules/module_test/module_test.module b/core/modules/system/tests/modules/module_test/module_test.module
index 94278b7..3d8ad40 100644
--- a/core/modules/system/tests/modules/module_test/module_test.module
+++ b/core/modules/system/tests/modules/module_test/module_test.module
@@ -92,7 +92,7 @@ function module_test_menu() {
  * @deprecated \Drupal\module_test\Controller\ModuleTestController::hookDynamicLoadingInvoke()
  */
 function module_test_hook_dynamic_loading_invoke() {
-  $result = module_invoke('module_test', 'test_hook');
+  $result = Drupal::moduleHandler()->invoke('module_test', 'test_hook');
   return $result['module_test'];
 }
 
diff --git a/core/modules/user/lib/Drupal/user/Plugin/views/access/Permission.php b/core/modules/user/lib/Drupal/user/Plugin/views/access/Permission.php
index 2251a6e..ab02cde 100644
--- a/core/modules/user/lib/Drupal/user/Plugin/views/access/Permission.php
+++ b/core/modules/user/lib/Drupal/user/Plugin/views/access/Permission.php
@@ -67,7 +67,7 @@ public function buildOptionsForm(&$form, &$form_state) {
 
     // Get list of permissions
     foreach (\Drupal::moduleHandler()->getImplementations('permission') as $module) {
-      $permissions = module_invoke($module, 'permission');
+      $permissions = \Drupal::moduleHandler()->invoke($module, 'permission');
       foreach ($permissions as $name => $perm) {
         $perms[$module_info[$module]['name']][$name] = strip_tags($perm['title']);
       }
diff --git a/core/modules/user/user.module b/core/modules/user/user.module
index 88862d5..0a86237 100644
--- a/core/modules/user/user.module
+++ b/core/modules/user/user.module
@@ -1517,7 +1517,7 @@ function user_role_load($rid) {
 function user_permission_get_modules() {
   $permissions = array();
   foreach (\Drupal::moduleHandler()->getImplementations('permission') as $module) {
-    $perms = module_invoke($module, 'permission');
+    $perms = Drupal::moduleHandler()->invoke($module, 'permission');
     foreach ($perms as $key => $value) {
       $permissions[$key] = $module;
     }
@@ -1750,7 +1750,7 @@ function user_modules_installed($modules) {
   if ($rid) {
     $permissions = array();
     foreach ($modules as $module) {
-      if ($module_permissions = module_invoke($module, 'permission')) {
+      if ($module_permissions = Drupal::moduleHandler()->invoke($module, 'permission')) {
         $permissions = array_merge($permissions, array_keys($module_permissions));
       }
     }
