Questions tagged «powershell»

PowerShell是Microsoft的跨平台命令行和脚本实用程序。将此标签仅用于有关编写和执行PowerShell脚本的问题。跨平台版本PowerShell Core(Windows,macOS和Linux)特定的编程问题应标记为[powershell-core]。有关系统管理的问题应在“超级用户或服务器故障”时提出。

7
使用命令行参数从C#执行PowerShell脚本
我需要从C#中执行PowerShell脚本。该脚本需要命令行参数。 到目前为止,这是我所做的: RunspaceConfiguration runspaceConfiguration = RunspaceConfiguration.Create(); Runspace runspace = RunspaceFactory.CreateRunspace(runspaceConfiguration); runspace.Open(); RunspaceInvoke scriptInvoker = new RunspaceInvoke(runspace); Pipeline pipeline = runspace.CreatePipeline(); pipeline.Commands.Add(scriptFile); // Execute PowerShell script results = pipeline.Invoke(); scriptFile包含类似“ C:\ Program Files \ MyProgram \ Whatever.ps1”的内容。 该脚本使用命令行参数,例如“ -key Value”,而Value可以是类似路径的内容,也可能包含空格。 我没有这个工作。有谁知道如何从C#中将命令行参数传递给PowerShell脚本并确保空格没有问题?

3
在PowerShell中逐行读取文件
我想在PowerShell中逐行读取文件。具体来说,我想遍历文件,将每一行存储在循环中的变量中,并对该行进行一些处理。 我知道Bash等效: while read line do if [[ $line =~ $regex ]]; then # work here fi done < file.txt 关于PowerShell循环的文档不多。


12
在Powershell中从文件名中删除路径和扩展名
我有一系列字符串,这些字符串是文件的完整路径。我只想保存文件名,而没有文件扩展名和前导路径。所以从这个: c:\temp\myfile.txt 至 myfile 我实际上并没有遍历目录,在这种情况下basename可以使用诸如powershell的属性之类的东西,但是我只是在处理字符串。

7
PowerShell:仅为单个命令设置环境变量
在Linux上,我可以执行以下操作: $ FOO=BAR ./myscript 在设置了环境变量FOO的情况下调用“ myscript”。 在PowerShell中是否可能有类似的事情,即不必先设置变量,调用命令然后再次取消设置变量? 为了更清楚地了解我的用例-我不想将其用作脚本的一部分。相反,我有一个第三方脚本,可以使用环境变量来控制其行为,但是在这种情况下,不能使用命令行参数。所以能够在打字之间交替 $ OPTION=1 ./myscript 和 $ ./myscript 会非常方便。

13
为什么不允许我在本地创建的脚本在RemoteSigned执行策略下运行?
由于此问题继续吸引被问题主体反驳或未解决实际问题的答案,因此 请阅读以下有关需要了解的简单摘要: 这不是“为什么默认安装的PowerShell运行脚本为什么不显示?” 题。 这不是“为什么我的安装PowerShell不能从Internet下载的运行脚本?” 题。 问题是为什么RemoteSigned执行策略在不应该执行时阻止脚本执行。 RemoteSigned是我要使用的唯一执行策略。 我知道可以使用其他限制较少的策略。如果这些政策是可以接受的替代方案,我将只使用它们,而这个问题将不复存在。 执行策略已设置为RemoteSigned。 从改变它RemoteSigned到RemoteSigned是没办法了。 脚本文件已创建并存储在本地。 脚本文件未被阻止。 脚本文件从未被阻止(请参阅上一点)。 无法取消阻止脚本文件,因为没有任何要取消阻止的内容(请参见上一点)。 脚本文件由管理员执行(试图执行)。 Windows PowerShell是唯一涉及的应用程序。 没有Windows PowerShell ISE也不Command Prompt或任何其他工具或编辑器是相关的。 问题的原因已经确定(请参阅接受的答案)。经过将近8年的时间,我认为所有其他显而易见的解释(无论是否适用)也已发布。如果您有其他想法,请在添加问题之前先完整阅读问题和现有答案。 我在64位Windows 7 Professional上使用Windows PowerShell 2.0。我有一个脚本,Desktop尝试运行该脚本时会导致以下错误: File C:\Users\UserName\Desktop\Script.ps1 cannot be loaded. The file C:\Users\UserName\Desktop\Script.ps1 is not digitally signed. The script will not execute on the system. Please see …

6
术语“ Get-ADUser”未被识别为cmdlet的名称
我使用以下查询列出了Windows 2008服务器中的用户,但失败并出现以下错误。 $server='client-pc-1';$pwd= convertto-securestring 'password$' -asplaintext - force;$cred=new-object -typename System.Management.Automation.PSCredential -argumentlist 'Administrator',$pwd; invoke-command -computername $server -credential $cred -scriptblock {Get-ADUser -Filter (enabled -ne $true)} 例外情况如下...有人可以帮我解决这个问题吗? The term 'Get-ADUser' is not recognized as the name of a cmdlet, function, script file, or operable program. Check the spelling of the name, or if …
97 powershell 

6
在PowerShell中更改目录
我的PowerShell提示当前指向我的C驱动器(PS C:\>)。如何将目录更改为Q(PS Q:\>)驱动器上的文件夹? Q驱动器上的文件夹名称是“我的测试文件夹”。
97 powershell 

13
如何检查是否安装了PowerShell模块?
要检查模块是否存在,我尝试了以下方法: try { Import-Module SomeModule Write-Host "Module exists" } catch { Write-Host "Module does not exist" } 输出为: Import-Module : The specified module 'SomeModule' was not loaded because no valid module file was found in any module directory. At D:\keytalk\Software\Client\TestProjects\Export\test.ps1:2 char:5 + Import-Module SomeModule + ~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : ResourceUnavailable: …
97 powershell 

4
如何在双引号字符串中使用对象的属性?
我有以下代码: $DatabaseSettings = @(); $NewDatabaseSetting = "" | select DatabaseName, DataFile, LogFile, LiveBackupPath; $NewDatabaseSetting.DatabaseName = "LiveEmployees_PD"; $NewDatabaseSetting.DataFile = "LiveEmployees_PD_Data"; $NewDatabaseSetting.LogFile = "LiveEmployees_PD_Log"; $NewDatabaseSetting.LiveBackupPath = '\\LiveServer\LiveEmployeesBackups'; $DatabaseSettings += $NewDatabaseSetting; 当我尝试在字符串execute命令中使用属性之一时: & "$SQlBackupExePath\SQLBackupC.exe" -I $InstanceName -SQL ` "RESTORE DATABASE $DatabaseSettings[0].DatabaseName FROM DISK = '$tempPath\$LatestFullBackupFile' WITH NORECOVERY, REPLACE, MOVE '$DataFileName' TO '$DataFilegroupFolder\$DataFileName.mdf', MOVE …

7
遍历哈希或在PowerShell中使用数组
我正在使用此(简化的)代码块从带有BCP的 SQL Server中提取一组表。 $OutputDirectory = "c:\junk\" $ServerOption = "-SServerName" $TargetDatabase = "Content.dbo." $ExtractTables = @( "Page" , "ChecklistItemCategory" , "ChecklistItem" ) for ($i=0; $i -le $ExtractTables.Length – 1; $i++) { $InputFullTableName = "$TargetDatabase$($ExtractTables[$i])" $OutputFullFileName = "$OutputDirectory$($ExtractTables[$i])" bcp $InputFullTableName out $OutputFullFileName -T -c $ServerOption } 它的工作原理很好,但是现在有些表需要通过视图来提取,而有些则不需要。所以我需要一个像这样的数据结构: "Page" "vExtractPage" , "ChecklistItemCategory" "ChecklistItemCategory" …
96 powershell 

4
将多个值传递给单个PowerShell脚本参数
我有一个脚本,可以在$ args中传递服务器名称。 这样,我可以使用以下命令对此服务器进行处理foreach: .\script.ps1 host1 host2 host3 foreach ($i in $args) { Do-Stuff $i } 我想添加一个名为vlan的命名可选参数。我试过了: Param( [string]$vlan ) foreach ($i in $args) { Write-Host $i } Write-Host $vlan 如果您传递-vlan参数,它会起作用,但如果您不传递参数,脚本将自动将最后一个服务器名称分配给$vlan。 因此,如何将单个或多个参数以及可选的命名参数传递给PowerShell脚本? 理想情况下,以下是有效的示例: .\script.ps1 host1 .\script.ps1 host1 host2 host3 .\script.ps1 host1 host2 -vlan office

1
PowerShell脚本不接受$(美元)符号
我正在尝试使用PowerShell脚本打开SQL数据连接,并且我的密码包含一个$符号: $cn = new-object system.data.SqlClient.SqlConnection("Data Source=DBNAME;Initial Catalog=Catagory;User ID=User;Password=pass$word;") 当我尝试打开连接时,它说: 登录失败

12
如何在PowerShell中标准化路径?
我有两条路: fred\frog 和 ..\frag 我可以像这样在PowerShell中将它们加入在一起: join-path 'fred\frog' '..\frag' 这给了我这个: fred\frog\..\frag 但是我不想要那个。我想要一个没有双点的标准化路径,如下所示: fred\frag 我该怎么办?
94 powershell  path 


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.