タグ付けされた質問 「powershell」

PowerShellは、Microsoftが提供するクロスプラットフォームのコマンドラインおよびスクリプトユーティリティです。このタグは、PowerShellスクリプトの記述と実行に関する質問のみに使用してください。クロスプラットフォームバージョンのPowerShellコア(Windows、macOS、およびLinux)に固有のプログラミングの質問には、[powershell-core]のタグを付ける必要があります。システム管理に関する質問は、スーパーユーザーまたはサーバーの障害について尋ねる必要があります。


9
PowerShellでのC#の「using」キーワードに相当しますか?
C#の.net-Frameworkで別のオブジェクトを使用する場合、usingディレクティブを使用することで多くの入力を節約できます。 using FooCompany.Bar.Qux.Assembly.With.Ridiculous.Long.Namespace.I.Really.Mean.It; ... var blurb = new Thingamabob(); ... では、Powershellに同様のことを行う方法はありますか?たくさんの.netオブジェクトにアクセスしているので、入力する必要がありません。 $blurb = new-object FooCompany.Bar.Qux.Assembly.With.Ridiculous.Long.Namespace.I.Really.Mean.It.Thingamabob; いつも。

4
PowerShellコピースクリプトで複数の文字列を適切にフィルタリングする方法
この回答のPowerShellスクリプトを使用して、ファイルのコピーを実行しています。フィルタを使用して複数のファイルタイプを含めたい場合、問題が発生します。 Get-ChildItem $originalPath -filter "*.htm" | ` foreach{ $targetFile = $htmPath + $_.FullName.SubString($originalPath.Length); ` New-Item -ItemType File -Path $targetFile -Force; ` Copy-Item $_.FullName -destination $targetFile } 夢のように機能します。ただし、フィルターを使用して複数のファイルタイプを含めたい場合に問題が発生します。 Get-ChildItem $originalPath ` -filter "*.gif","*.jpg","*.xls*","*.doc*","*.pdf*","*.wav*",".ppt*") | ` foreach{ $targetFile = $htmPath + $_.FullName.SubString($originalPath.Length); ` New-Item -ItemType File -Path $targetFile -Force; ` Copy-Item $_.FullName …

4
パラメーターと資格情報を使用してPowerShellから.ps1スクリプトを開始し、変数を使用して出力を取得する
こんにちはスタックコミュニティ:) 単純な目標があります。別のPowershellスクリプトからPowerShellスクリプトを開始したいのですが、3つの条件があります。 資格情報を渡す必要があります(実行は特定のユーザーがいるデータベースに接続します) それはいくつかのパラメータを取る必要があります 出力を変数に渡したい 同様の質問リンクがあります。しかし、答えは、2つのPSスクリプト間で通信する方法としてファイルを使用することです。アクセスの競合を回避したいだけです。@更新:メインスクリプトは他のいくつかのスクリプトを開始します。そのため、複数のユーザーから同時に実行される場合、ファイルを使用したソリューションは扱いにくい場合があります。 Script1.ps1は、出力として文字列が必要なスクリプトです。(明確にするために、それは架空のスクリプトであり、実際のスクリプトには150行あるので、例を作成したかっただけです) param( [String]$DeviceName ) #Some code that needs special credentials $a = "Device is: " + $DeviceName $a ExecuteScripts.ps1は、上記の3つの条件で呼び出します。 複数の解決策を試しました。これの例: $arguments = "C:\..\script1.ps1" + " -ClientName" + $DeviceName $output = Start-Process powershell -ArgumentList $arguments -Credential $credentials $output 何も出力されず、スクリプトを次のように呼び出すこともできません。 &C:\..\script1.ps1 -ClientName PCPC -Credentialパラメータを渡すことができないからです。 前もって感謝します!

1
Powershellで実行しているときとVisual Studioで実行しているときのHttpClient同時動作が異なる
B2Cでユーザーを作成するためにMS Graph APIを使用して、数百万のユーザーをオンプレミスADからAzure AD B2Cに移行しています。この移行を実行するための.Net Core 3.1コンソールアプリケーションを作成しました。速度を上げるために、Graph APIを同時に呼び出しています。これはうまく機能しています。 開発中にVisual Studio 2019から実行しているときに許容できるパフォーマンスを体験しましたが、テストのためにPowershell 7のコマンドラインから実行しています。Powershellから、HttpClientへの同時呼び出しのパフォーマンスは非常に悪いです。Powershellからの実行時にHttpClientが許可する同時呼び出しの数には制限があるため、40から50を超える同時バッチでの要求がスタックし始めます。残りをブロックしている間、40から50の同時リクエストを実行しているようです。 私は非同期プログラミングの支援を探していません。Visual Studioの実行時の動作とPowershellコマンドラインの実行時の動作の違いをトラブルシューティングする方法を探しています。Visual Studioの緑の矢印ボタンからリリースモードで実行すると、期待どおりに動作します。コマンドラインからの実行ではできません。 タスクリストに非同期呼び出しを入力し、Task.WhenAll(tasks)を待ちます。各呼び出しには300〜400ミリ秒かかります。Visual Studioから実行すると、期待どおりに動作します。私は1000の呼び出しの同時バッチを作成し、それぞれが予想時間内に個別に完了します。タスクブロック全体は、最長の個々の呼び出しよりも数ミリ秒長くかかります。 Powershellコマンドラインから同じビルドを実行すると、動作が変わります。最初の40から50の呼び出しは、予想される300から400ミリ秒かかりますが、その後、個々の呼び出し時間はそれぞれ最大20秒になります。呼び出しはシリアル化されていると思うので、他の呼び出しが待機している間、一度に実行されるのは40〜50だけです。 何時間もの試行錯誤の末、HttpClientに絞り込むことができました。問題を特定するために、Task.Delay(300)を実行してモック結果を返すメソッドを使用して、HttpClient.SendAsyncの呼び出しをモック化しました。この場合、コンソールからの実行は、Visual Studioからの実行と同じように動作します。 私はIHttpClientFactoryを使用していますが、ServicePointManagerの接続制限を調整しようとしました。 これが私の登録コードです。 public static IServiceCollection RegisterHttpClient(this IServiceCollection services, int batchSize) { ServicePointManager.DefaultConnectionLimit = batchSize; ServicePointManager.MaxServicePoints = batchSize; ServicePointManager.SetTcpKeepAlive(true, 1000, 5000); services.AddHttpClient(MSGraphRequestManager.HttpClientName, c => { c.Timeout = TimeSpan.FromSeconds(360); c.DefaultRequestHeaders.Add("User-Agent", "xxxxxxxxxxxx"); }) …

1
このシステムではスクリプトの実行が無効になっているため、tsc.ps1をロードできません
PowerShellでは、を実行するとエラーメッセージが表示されましたtsc。これはかつてなかった。 これを修正するために、PowerShellのセキュリティ設定を調整する必要があるかどうかはわかりません。たとえば、PowerShellは「このシステムではスクリプトの実行が無効になっています」と言っています。 更新 これは、ps1スクリプトを使用するためにnpmが新しく意図した機能です。彼らのレポで質問が出されました:https://github.com/npm/cli/issues/470

1
失敗した.NET単体テストをPowerShellスクリプトまたは.NETから再実行する
Azure DevopsのVisual Studio Testタスクには、非常に優れた機能があり、失敗した単体テストを再試行できます。これは、テスト時間が長く、不安定なテストがいくつかある場合に優れた機能です。Azure Devopsのこのテストタスクは、xUnit、NUnit、MSTestなどのさまざまなテストプラットフォームで機能します。(したがって、.NET用に書かれたテスト) スクリプトから同じ動作を取得することは可能ですか?私はxUnitまたはNUnitを好み、PowerShellでスクリプトを実行します。 xUnitの場合-method "name": 指定されたテストメソッドを実行します(完全に指定することも、ワイルドカードを使用することもできます(例: 'MyNamespace.MyClass.MyTestMethod'または '* .MyTestMethod')。複数回指定した場合、OR操作として機能します。 NUnitには--where=EXPRESSION構文ソースがあります。 実行するテストを示す式。演算子==、!=、=〜および!〜を使用して実際の値と比較するテスト名、クラス、メソッド、カテゴリ、またはプロパティを指定できます。構文の詳細については、テスト選択言語を参照してください。 しかし、xUnitまたはNUnitの失敗したテストを収集してすべてを機能させる方法はわかりません。 もちろん、不安定なテストを修正する方が良いでしょうが、それは時々それほど簡単ではありません。 更新:から実行しています。NET / C#(PowerShellでトリガーされる可能性があります)も許容されます


3
Azure Pipelines PowerShellタスクでインラインマルチラインPowerShellスクリプトを作成するにはどうすればよいですか?
Powershell タスクのyamlスキーマを使用すると、targetType: 'inline'を選択し、script:inputでスクリプトを定義できます。 しかし、複数行のスクリプトを記述するための正しい形式は何ですか? ドキュメントは方法を指定していません。1行目(コマンドラインタスクで指定されているような)でパイプを使用しても機能しません。
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.