PowerShell-Docker icon indicating copy to clipboard operation
PowerShell-Docker copied to clipboard

Powershell docker image, Restart-Computer cmd missing 'ComputerName' parameter

Open freand418 opened this issue 1 year ago • 1 comments

Prerequisites

  • [X] Write a descriptive title.
  • [X] Make sure you are able to repro it on the latest image.
  • [X] Search the existing issues.
  • [X] Verified that this is not a Known Issue
  • [X] Verified this is not an issues in the underlying windows container that should be reported to Windows Feedback Hub

Steps to reproduce

Trying to remotely restart a windows computer with powershell and Restart-Computer command.

Powershell is running from a docker container with mcr.microsoft.com/powershell image, and from within the docker container i am running a powerhell script. The script is also tested on a windows 11 machine with powershell and it works as expected.

Output from the script running from powershell in docker, PowerShell 7.4.2.

Expected behavior

Restart remote computer

Actual behavior

PS /> /root/scripts/restart.ps1

Restart-Computer: /root/scripts/restart.ps1:9

Line |
   9 |  Restart-Computer -ComputerName $server -Credential $credObject -Force …
     |                   ~~~~~~~~~~~~~
     | A parameter cannot be found that matches parameter name 'ComputerName'.

Error details

No response

Environment data

{
   "schemaVersion": 2,
   "mediaType": "application/vnd.docker.distribution.manifest.list.v2+json",
   "manifests": [
      {
         "mediaType": "application/vnd.docker.distribution.manifest.v2+json",
         "size": 742,
         "digest": "sha256:73c08403182e3cd1a62176b6723645b2d2037cda8deefc0e2c2c01cb814abe43",
         "platform": {
            "architecture": "amd64",
            "os": "linux"
         }
      },
      {
         "mediaType": "application/vnd.docker.distribution.manifest.v2+json",
         "size": 1160,
         "digest": "sha256:f7306ab20f28b5609264d6e49cb18a4804cafe7a78c33679e3a6ce907d692d0a",
         "platform": {
            "architecture": "arm",
            "os": "linux",
            "variant": "v7"
         }
      },
      {
         "mediaType": "application/vnd.docker.distribution.manifest.v2+json",
         "size": 2001,
         "digest": "sha256:055163474207105ca91482e142b923a65c0853feead3812d7f1cdc04203ab244",
         "platform": {
            "architecture": "amd64",
            "os": "windows",
            "os.version": "10.0.20348.2402"
         }
      }
   ]
}

Visuals

No response

freand418 avatar Dec 04 '24 13:12 freand418

You are trying to use a windows-cmdlet on a linux container.

https://learn.microsoft.com/en-us/powershell/module/microsoft.powershell.management/restart-computer?view=powershell-7.5 This cmdlet is only available on the Windows platform.

This have nothing to do with PowerShell-Docker. If you using Docker Desktop switch to Windows Container or use the Windows Container Engine directly.

This cmdlet is only available on the Windows platform. The Restart-Computer cmdlet restarts the operating system on the local and remote computers. You can use the parameters of Restart-Computer to run the restart operations, to specify the authentication levels and alternate credentials, to limit the operations that run at the same time, and to force an immediate restart. Starting in Windows PowerShell 3.0, you can wait for the restart to complete before you run the next command. Specify a waiting time-out and query interval, and wait for particular services to be available on the restarted computer. This feature makes it practical to use Restart-Computer in scripts and functions.

Herr-Sepp avatar Mar 07 '25 16:03 Herr-Sepp