I'm trying to run a simple system command: dir c:\Temp /ar from a PowerShell script using "&", Invoke-Expression, Invoke-Command but looks like PowerShell does not really like the forward slash "/". I've also tries to escape it using "" or "`" but to no avail...
Any idea?
CodePudding user response:
dir is neither a PowerShell command nor a native executable - it's a built-in command in cmd.exe - so you need to invoke cmd.exe:
& cmd /c dir c:\Temp /ar
PowerShell aliases dir to its own Get-ChildItem command - and Get-ChildItem will interpret /ar as a rooted path argument, thus attempting to list the directory contents at /ar (or C:\ar on Windows), which is probably what you're currently experiencing.
To list read-only items with the Get-ChildItem command, use the -Attributes parameter:
Get-ChildItem -Attributes ReadOnly
Which can conveniently be shortened to:
Get-ChildItem -ar
So you can also solve your problem by simply using -ar instead of /ar:
dir c:\Temp -ar
CodePudding user response:
You need to use commands such as Get-Item and Get-ChildItem. Remember that Get-Item will throw a fatal error while ChildItem will error silently.
